Construction des informations d'une interface semi-conforme. Plus de détails...
Fonctions membres publiques | |
TiedInterfaceBuilder (IMesh *mesh, const FaceGroup &slave_interface, bool use_own, bool is_debug) | |
void | setPlanarTolerance (Real tolerance) |
void | computeInterfaceConnections (bool allow_communication) |
Construit les infos sur une interface liée. | |
void | computeInterfaceInfos (TiedInterfaceBuilderInfos &infos, bool is_structured) |
void | changeOwners (Int64Array &linked_cells, Int32Array &linked_owers) |
Positionne les liaisons entre mailles. | |
void | changeOwnersOld () |
Migre les mailles sur les liaisons. | |
const FaceGroup & | masterInterface () const |
Fonctions membres publiques hérités de Arccore::TraceAccessor | |
TraceAccessor (ITraceMng *m) | |
Construit un accesseur via le gestionnaire de trace m. | |
TraceAccessor (const TraceAccessor &rhs) | |
Constructeur par recopie. | |
TraceAccessor & | operator= (const TraceAccessor &rhs) |
Opérateur de recopie. | |
virtual | ~TraceAccessor () |
Libère les ressources. | |
ITraceMng * | traceMng () const |
Gestionnaire de trace. | |
TraceMessage | info () const |
Flot pour un message d'information. | |
TraceMessage | pinfo () const |
Flot pour un message d'information en parallèle. | |
TraceMessage | info (char category) const |
Flot pour un message d'information d'une catégorie donnée. | |
TraceMessage | pinfo (char category) const |
Flot pour un message d'information parallèle d'une catégorie donnée. | |
TraceMessage | info (bool v) const |
Flot pour un message d'information. | |
TraceMessage | warning () const |
Flot pour un message d'avertissement. | |
TraceMessage | pwarning () const |
TraceMessage | error () const |
Flot pour un message d'erreur. | |
TraceMessage | perror () const |
TraceMessage | log () const |
Flot pour un message de log. | |
TraceMessage | plog () const |
Flot pour un message de log. | |
TraceMessage | logdate () const |
Flot pour un message de log précédé de la date. | |
TraceMessage | fatal () const |
Flot pour un message d'erreur fatale. | |
TraceMessage | pfatal () const |
Flot pour un message d'erreur fatale en parallèle. | |
TraceMessageDbg | debug (Trace::eDebugLevel=Trace::Medium) const |
Flot pour un message de debug. | |
Trace::eDebugLevel | configDbgLevel () const |
Niveau debug du fichier de configuration. | |
TraceMessage | info (Int32 verbose_level) const |
Flot pour un message d'information d'un niveau donné | |
TraceMessage | linfo () const |
Flot pour un message d'information avec le niveau d'information local à cette instance. | |
TraceMessage | linfo (Int32 relative_level) const |
Flot pour un message d'information avec le niveau d'information local à cette instance. | |
void | fatalMessage (const StandaloneTraceMessage &o) const |
Attributs privés | |
bool | m_is_debug |
IMesh * | m_mesh |
VariableNodeReal3 | m_nodes_coord |
TiedInterfaceFaceInfoMng | m_face_info_mng |
NodeInfoList | m_nodes_info |
TiedInterfaceFaceMap | m_slave_faces |
TiedInterfaceFaceMap | m_master_faces |
String | m_slave_interface_name |
FaceGroup | m_slave_interface |
FaceGroup | m_master_interface |
HashTableMapT< ItemUniqueId, ItemUniqueId > | m_slave_faces_master_face_uid |
Table indiquant pour chaque face esclave, le uid de la face maitre correspondante. | |
Real | m_planar_tolerance |
Membres hérités additionnels | |
Fonctions membres protégées hérités de Arccore::TraceAccessor | |
void | _setLocalVerboseLevel (Int32 v) |
Int32 | _localVerboseLevel () const |
Construction des informations d'une interface semi-conforme.
L'algorithme actuel présente les limitations suivantes:
Le but est de calculer l'ensemble des faces maitres et esclaves, pour chaque face maitre la liste de ses faces esclaves et pour chaque noeud de face esclave ses coordonnées iso-barycentrique dans la face maitre correspondante.
Le fonctionnement de l'algorithme est le suivant:
Définition à la ligne 326 du fichier TiedInterface.cc.
typedef HashTableMapT<ItemUniqueId,TiedInterfaceNodeInfo> Arcane::mesh::TiedInterfaceBuilder::NodeInfoList |
Définition à la ligne 330 du fichier TiedInterface.cc.
typedef HashTableMapEnumeratorT<ItemUniqueId,TiedInterfaceNodeInfo> Arcane::mesh::TiedInterfaceBuilder::NodeInfoListEnumerator |
Définition à la ligne 332 du fichier TiedInterface.cc.
typedef std::set<TiedInterfaceSortedNodeInfo> Arcane::mesh::TiedInterfaceBuilder::SortedNodeInfoSet |
Définition à la ligne 334 du fichier TiedInterface.cc.
typedef HashTableMapT<ItemUniqueId,TiedInterfaceStructurationInfo> Arcane::mesh::TiedInterfaceBuilder::StructurationMap |
Définition à la ligne 335 du fichier TiedInterface.cc.
typedef HashTableMapEnumeratorT<ItemUniqueId,TiedInterfaceStructurationInfo> Arcane::mesh::TiedInterfaceBuilder::StructurationMapEnumerator |
Définition à la ligne 336 du fichier TiedInterface.cc.
typedef HashTableMapT<ItemUniqueId,TiedInterfaceFace> Arcane::mesh::TiedInterfaceBuilder::TiedInterfaceFaceMap |
Définition à la ligne 331 du fichier TiedInterface.cc.
typedef HashTableMapEnumeratorT<ItemUniqueId,TiedInterfaceFace> Arcane::mesh::TiedInterfaceBuilder::TiedInterfaceFaceMapEnumerator |
Définition à la ligne 333 du fichier TiedInterface.cc.
Arcane::mesh::TiedInterfaceBuilder::TiedInterfaceBuilder | ( | IMesh * | mesh, |
const FaceGroup & | slave_interface, | ||
bool | use_own, | ||
bool | is_debug | ||
) |
Définition à la ligne 386 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 774 du fichier TiedInterface.cc.
|
private |
Détermine la surface maitre de l'interface.
En considérant que le maillage est semi-conforme, cela signifie que tous les noeuds des faces maîtres de l'interface appartiennent à une face esclave. Il suffit donc pour déterminer ces faces maîtres de parcourir la liste des faces esclaves, de marquer les noeuds les noeuds de ces faces. Une face est alors considérée comme maître si l'ensemble de ses noeuds est marqué.
Définition à la ligne 712 du fichier TiedInterface.cc.
Références ARCANE_FATAL, ENUMERATE_FACE, Arcane::IMeshBase::faceFamily(), Arccore::TraceAccessor::info(), Arcane::Item::localId(), Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::lookup(), Arcane::ItemGroup::name(), Arcane::ItemWithNodes::nbNode(), Arcane::ItemWithNodes::nodes(), Arcane::IMeshBase::outerFaces(), Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::resize(), Arcane::ItemGroup::size(), et Arcane::Item::uniqueId().
Référencé par computeInterfaceConnections().
|
private |
Définition à la ligne 632 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 836 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 1089 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 1125 du fichier TiedInterface.cc.
|
private |
Calcule la projection d'un point sur une face.
En 2D, la face est une arête et la projection est simple.
En 3D, si la face est un triangle, la projection est aussi simple puisqu'il s'agit de la projection sur un plan. Pour une face comportant plus de 3 noeuds, ses noeuds ne sont pas nécessairement coplanaires. On décompose alors la face en triangles dont un des sommets est le barycentre de la face et on calcule la projection du point point sur chacun de ces triangles. On a donc autant de projetés que de triangles. On conserve celui qui est à l'intérieur d'un de ces triangles. Il peut arriver pour des raisons liées au calcul numérique que le point soit bien à l'intérieur de la face mais dans aucun de ses triangles (par exemple s'il est sur une diagonale). Dans ce cas, on prend comme projeté celui qui est le plus proche du point point.
Définition à la ligne 583 du fichier TiedInterface.cc.
Références Arcane::GeometricUtilities::ProjectionInfo::m_distance, et Arcane::GeometricUtilities::ProjectionInfo::m_region.
|
private |
envoie et récupère les informations sur les noeuds de l'interface.
Rassemble en parallèle les noeuds et la liste des faces maitres avec lesquelles ils peuvent être connectectés.
Définition à la ligne 1247 du fichier TiedInterface.cc.
Références Arccore::Array< T >::add(), Arcane::IParallelMng::allGather(), Arcane::IParallelMng::barrier(), Arcane::IParallelMng::commSize(), Arcane::DT_Int64, Arcane::DT_Real, Arccore::BasicSerializer::get(), Arccore::BasicSerializer::getInteger(), Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::lookup(), Arccore::ISerializer::ModeGet, Arccore::ISerializer::ModePut, Arcane::IMesh::parallelMng(), Arccore::Array< T >::resize(), Arccore::BasicSerializer::setMode(), et Arccore::AbstractArray< T >::size().
Référencé par computeInterfaceConnections().
|
private |
Envoie à tous les sous-domaine les faces de numéros uniques faces_to_send de la liste face_map et réceptionne celles de tous les autres sous-domaines.
Définition à la ligne 1340 du fichier TiedInterface.cc.
Références Arccore::Array< T >::add(), Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::add(), Arcane::IParallelMng::allGather(), Arcane::IParallelMng::barrier(), Arcane::IParallelMng::commRank(), Arcane::IParallelMng::commSize(), Arcane::DT_Int64, Arcane::DT_Real, Arccore::BasicSerializer::get(), Arccore::BasicSerializer::getInteger(), Arccore::ISerializer::ModeGet, Arccore::ISerializer::ModePut, Arcane::IMesh::parallelMng(), Arccore::Array< T >::reserve(), Arccore::Array< T >::resize(), Arccore::BasicSerializer::setMode(), Arccore::AbstractArray< T >::size(), Arcane::Real3POD::x, Arcane::Real3POD::y, et Arcane::Real3POD::z.
Référencé par computeInterfaceConnections().
|
private |
Définition à la ligne 665 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 1211 du fichier TiedInterface.cc.
|
private |
Supprime du groupe des faces maîtres les faces qui ne sont connectées à aucune face esclave.
Définition à la ligne 806 du fichier TiedInterface.cc.
Références ENUMERATE_FACE, Arccore::TraceAccessor::info(), m_slave_faces_master_face_uid, Arcane::ItemGroup::name(), Arcane::ItemGroup::removeItems(), et Arcane::Item::uniqueId().
|
private |
Définition à la ligne 417 du fichier TiedInterface.cc.
void Arcane::mesh::TiedInterfaceBuilder::changeOwners | ( | Int64Array & | linked_cells, |
Int32Array & | linked_owners | ||
) |
Positionne les liaisons entre mailles.
Change le propriétaire de chaque maille liée à une face esclave pour qu'il soit le même que celui de la maille maître associée.
Si une maille a plusieurs faces esclaves connectées à des maîtres, s'assure que toutes ces maitres sont dans le meme sous-domaine. Ajoute à linked_cells la liste des mailles liées et à linked_owners le propriétaire associé.
Définition à la ligne 1511 du fichier TiedInterface.cc.
Références ARCANE_FATAL, Arcane::Face::cell(), Arcane::IMeshBase::cellFamily(), ENUMERATE_FACE, m_slave_faces_master_face_uid, Arcane::Item::owner(), et Arcane::Item::uniqueId().
Référencé par Arcane::mesh::TiedInterfacePartitionConstraint::addLinkedCells().
void Arcane::mesh::TiedInterfaceBuilder::changeOwnersOld | ( | ) |
Migre les mailles sur les liaisons.
Change le propriétaire de chaque maille liée à une face esclave pour qu'il soit le même que celui de la maille maître associée.
NOTE: que faire si une maille a plusieurs faces esclaves connectées à des maîtres qui ne sont pas dans le même sous-domaine ?
NOTE: version obsolete, car ne fonctionnant pas si une maillage a plusieurs soudures
Définition à la ligne 1473 du fichier TiedInterface.cc.
Références ARCANE_FATAL, Arcane::Face::cell(), Arcane::IMeshBase::cellFamily(), ENUMERATE_FACE, m_slave_faces_master_face_uid, et Arcane::Item::uniqueId().
Construit les infos sur une interface liée.
Cette opération est collective si allow_communication est vrai. Si allow_communication est faux, cela signifie que toutes les faces esclaves d'une face maitre sont dans ce sous-domaine.
Définition à la ligne 1563 du fichier TiedInterface.cc.
Références _computeMasterInterface(), _gatherAllNodesInfo(), _gatherFaces(), ARCANE_FATAL, Arcane::arcaneIsCheck(), Arcane::IParallelMng::commRank(), Arccore::TraceAccessor::info(), Arcane::ItemGroup::name(), Arcane::IMesh::parallelMng(), et Arcane::IParallelMng::reduce().
Référencé par Arcane::mesh::TiedInterfacePartitionConstraint::addLinkedCells().
void Arcane::mesh::TiedInterfaceBuilder::computeInterfaceInfos | ( | TiedInterfaceBuilderInfos & | infos, |
bool | is_structured | ||
) |
Définition à la ligne 1635 du fichier TiedInterface.cc.
|
inline |
Définition à la ligne 345 du fichier TiedInterface.cc.
void Arcane::mesh::TiedInterfaceBuilder::setPlanarTolerance | ( | Real | tolerance | ) |
Définition à la ligne 408 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 350 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 347 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 354 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 357 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 348 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 349 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 352 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 360 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 353 du fichier TiedInterface.cc.
|
private |
Table indiquant pour chaque face esclave, le uid de la face maitre correspondante.
Définition à la ligne 359 du fichier TiedInterface.cc.
Référencé par _removeMasterFacesWithNoSlave(), changeOwners(), et changeOwnersOld().
|
private |
Définition à la ligne 356 du fichier TiedInterface.cc.
|
private |
Définition à la ligne 355 du fichier TiedInterface.cc.