Service basique de calcul d'intersection entre segments et maillage. Plus de détails...
Fonctions membres publiques | |
BasicRayMeshIntersection (const ServiceBuildInfo &sbi) | |
virtual void | build () |
Construction de niveau build du service. | |
virtual void | compute (Real3ConstArrayView segments_position, Real3ConstArrayView segments_direction, Int32ConstArrayView segments_orig_face, Int32ArrayView user_values, Real3ArrayView intersections, RealArrayView distances, Int32ArrayView faces_local_id) |
Calcule l'intersection. | |
virtual void | compute (IItemFamily *ray_family, VariableParticleReal3 &rays_position, VariableParticleReal3 &rays_direction, VariableParticleInt32 &rays_orig_face, VariableParticleInt32 &user_values, VariableParticleReal3 &intersections, VariableParticleReal &distances, VariableParticleInt32 &rays_face) |
Calcule l'intersection de rayons. | |
virtual void | setFaceIntersector (IRayFaceIntersector *intersector) |
Positionne le callback d'intersection. | |
virtual IRayFaceIntersector * | faceIntersector () |
Intersecteur utilisé (0 si aucun spécifié) | |
void | _checkBoundingBox (Real3 p, Real3 *ARCANE_RESTRICT min_bounding_box, Real3 *ARCANE_RESTRICT max_bounding_box) |
void | _writeSegments (Int32 rank, Real3ConstArrayView positions, Real3ConstArrayView directions, RealConstArrayView distances) |
Fonctions membres publiques hérités de Arcane::BasicService | |
~BasicService () override | |
Libère les ressources. | |
virtual ISubDomain * | subDomain () |
Fonctions membres publiques hérités de Arcane::AbstractService | |
virtual | ~AbstractService () |
Destructeur. | |
virtual IServiceInfo * | serviceInfo () const |
Accès aux informations du service. | |
virtual IBase * | serviceParent () const |
Accès à l'interface de base des principaux objets Arcane. | |
virtual IService * | serviceInterface () |
Retourne l'interface bas niveau IService du service. | |
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 |
Fonctions membres publiques hérités de Arcane::IService | |
virtual | ~IService () |
Libère les ressources. | |
Fonctions membres publiques hérités de Arcane::MeshAccessor | |
MeshAccessor (ISubDomain *sd) | |
MeshAccessor (IMesh *mesh) | |
MeshAccessor (const MeshHandle &mesh_handle) | |
Integer | nbCell () const |
Retourne le nombre de mailles du maillage. | |
Integer | nbFace () const |
Retourne le nombre de faces du maillage. | |
Integer | nbEdge () const |
Retourne le nombre d'arêtes du maillage. | |
Integer | nbNode () const |
Retourne le nombre de noeuds du maillage. | |
VariableNodeReal3 & | nodesCoordinates () const |
Retourne les coordonnées des noeuds du maillage. | |
NodeGroup | allNodes () const |
Retourne le groupe contenant tous les noeuds. | |
EdgeGroup | allEdges () const |
Retourne le groupe contenant toutes les arêtes. | |
FaceGroup | allFaces () const |
Retourne le groupe contenant toutes les faces. | |
CellGroup | allCells () const |
Retourne le groupe contenant toutes les mailles. | |
FaceGroup | outerFaces () const |
Retourne le groupe contenant toutes les faces de le frontière. | |
NodeGroup | ownNodes () const |
Retourne le groupe contenant tous les noeuds propres à ce domaine. | |
CellGroup | ownCells () const |
Retourne le groupe contenant toutes les mailles propres à ce domaine. | |
FaceGroup | ownFaces () const |
Groupe contenant toutes les faces propres à ce domaine. | |
EdgeGroup | ownEdges () const |
Groupe contenant toutes les arêtes propres à ce domaine. | |
IMesh * | mesh () const |
const MeshHandle & | meshHandle () const |
Fonctions membres publiques hérités de Arcane::CommonVariables | |
CommonVariables (IModule *c) | |
Construit les références des variables communes pour le module c. | |
CommonVariables (IVariableMng *variable_mng) | |
Construit les références des variables communes pour le gestionnaire variable_mng. | |
CommonVariables (ISubDomain *sd) | |
Construit les références des variables communes pour le sous-domaine sd. | |
virtual | ~CommonVariables () |
Libère les ressources. | |
Int32 | globalIteration () const |
Numéro de l'itération courante. | |
Real | globalTime () const |
Temps courant. | |
Real | globalOldTime () const |
Temps courant précédent. | |
Real | globalFinalTime () const |
Temps final de la simulation. | |
Real | globalDeltaT () const |
Delta T courant. | |
Real | globalCPUTime () const |
Temps CPU utilisé (en seconde) | |
Real | globalOldCPUTime () const |
Temps CPU utilisé précédent (en seconde) | |
Real | globalElapsedTime () const |
Temps horloge (elapsed) utilisé (en seconde) | |
Real | globalOldElapsedTime () const |
Temps horloge (elapsed) utilisé précédent (en seconde) | |
Fonctions membres publiques hérités de Arcane::IRayMeshIntersection | |
virtual | ~IRayMeshIntersection () |
Libère les ressources. | |
Attributs privés | |
IRayFaceIntersector * | m_face_intersector |
Membres hérités additionnels | |
Attributs publics hérités de Arcane::CommonVariables | |
VariableScalarInt32 | m_global_iteration |
Itération courante. | |
VariableScalarReal | m_global_time |
Temps actuel. | |
VariableScalarReal | m_global_deltat |
Delta T global. | |
VariableScalarReal | m_global_old_time |
Temps précédent le temps actuel. | |
VariableScalarReal | m_global_old_deltat |
Delta T au temps précédent le temps global. | |
VariableScalarReal | m_global_final_time |
Temps final du cas. | |
VariableScalarReal | m_global_old_cpu_time |
Temps précédent CPU utilisé (en seconde) | |
VariableScalarReal | m_global_cpu_time |
Temps CPU utilisé (en seconde) | |
VariableScalarReal | m_global_old_elapsed_time |
Temps précédent horloge utilisé (en seconde) | |
VariableScalarReal | m_global_elapsed_time |
Temps horloge utilisé (en seconde) | |
Fonctions membres protégées hérités de Arcane::BasicService | |
BasicService (const ServiceBuildInfo &) | |
Fonctions membres protégées hérités de Arcane::AbstractService | |
AbstractService (const ServiceBuildInfo &) | |
Constructeur à partir d'un ServiceBuildInfo. | |
Fonctions membres protégées hérités de Arccore::TraceAccessor | |
void | _setLocalVerboseLevel (Int32 v) |
Int32 | _localVerboseLevel () const |
Fonctions membres protégées hérités de Arcane::IService | |
IService () | |
Constructeur. | |
Service basique de calcul d'intersection entre segments et maillage.
Définition à la ligne 452 du fichier BasicRayMeshIntersection.cc.
Arcane::BasicRayMeshIntersection::BasicRayMeshIntersection | ( | const ServiceBuildInfo & | sbi | ) |
Définition à la ligne 521 du fichier BasicRayMeshIntersection.cc.
|
inlinevirtual |
Définition à la ligne 459 du fichier BasicRayMeshIntersection.cc.
|
inline |
Définition à la ligne 492 du fichier BasicRayMeshIntersection.cc.
void Arcane::BasicRayMeshIntersection::_writeSegments | ( | Int32 | rank, |
Real3ConstArrayView | positions, | ||
Real3ConstArrayView | directions, | ||
RealConstArrayView | distances | ||
) |
Définition à la ligne 848 du fichier BasicRayMeshIntersection.cc.
Construction de niveau build du service.
L'appel à build est effectué au moment de sa construction, usuellement au niveau de sa lecture dans les options en phase1.
Réimplémentée à partir de Arcane::AbstractService.
Définition à la ligne 463 du fichier BasicRayMeshIntersection.cc.
|
virtual |
Calcule l'intersection de rayons.
Calcul l'intersection des rayons de la familly ray_family avec la surface du maillage. La position et la direction des rayons est donnée par les variables rays_position et rays_direction. Le tableau rays_orig_face contient le numéro local de la face dont le rayon est originaire. Ce tableau est utilisé dans le IRayFaceIntersector.
En retour rays_face contiendra pour chaque rayon le localId() de la face intersectée ou NULL_ITEM_LOCAL_ID si un rayon n'intersecte aucune face. Le tableau rays_intersection contient en retour la position du point d'intersection et rays_distance la distance du point d'intersection par rapport à l'origine du rayon. Le tableau user_values est remplit en retour par le IRayFaceIntersector
En parallèle, les rayons de la famille sont échangés entre sous-domaines pour qu'un rayon se trouve dans le même sous-domaine que celui propriétaire de la face intersectée. Si un rayon n'intersecte pas de face, il reste dans ce sous-domaine.
Implémente Arcane::IRayMeshIntersection.
Définition à la ligne 654 du fichier BasicRayMeshIntersection.cc.
Références Arccore::Array< T >::add(), Arcane::IParallelMng::allGatherVariable(), Arcane::IItemFamily::allItems(), Arcane::arcaneCheckArraySize(), Arcane::IParallelMng::commRank(), compute(), Arccore::Array< T >::data(), ENUMERATE_ITEM, ENUMERATE_PARTICLE, Arcane::IParticleFamily::exchangeParticles(), Arccore::Array< T >::fill(), Arccore::TraceAccessor::info(), Arcane::IParallelMng::isParallel(), Arcane::IItemFamily::itemsNewOwner(), Arcane::IItemFamily::mesh(), Arcane::IItemFamily::nbItem(), Arcane::IMesh::parallelMng(), Arcane::IParallelMng::reduce(), Arccore::Array< T >::resize(), Arcane::ItemGroup::size(), Arccore::AbstractArray< T >::size(), Arccore::ConstArrayView< T >::size(), Arcane::IItemFamily::toParticleFamily(), Arcane::Real3POD::x, Arcane::Real3POD::y, et Arcane::Real3POD::z.
|
virtual |
Calcule l'intersection.
En retour, le tableau faces_local_id contient le numéro local de la face coupée pour chaque segment. Si un segment ne coupe pas de face, le local_id correspondant est NULL_ITEM_LOCAL_ID.
Implémente Arcane::IRayMeshIntersection.
Définition à la ligne 531 du fichier BasicRayMeshIntersection.cc.
Références Arcane::IRayFaceIntersector::computeIntersection(), Arcane::IMeshBase::dimension(), ENUMERATE_FACE, Arcane::IMeshBase::faceFamily(), Arccore::TraceAccessor::fatal(), Arccore::ArrayView< T >::fill(), Arccore::TraceAccessor::info(), Arcane::Item::isOwn(), Arcane::Item::localId(), Arcane::IItemFamily::maxLocalId(), Arcane::ItemWithNodes::nbNode(), Arcane::ItemWithNodes::nodes(), Arcane::IMesh::nodesCoordinates(), Arcane::IMeshBase::outerFaces(), Arccore::Array< T >::resize(), Arcane::ItemGroup::size(), Arccore::ConstArrayView< T >::size(), et Arccore::TraceAccessor::traceMng().
Référencé par compute().
|
inlinevirtual |
Intersecteur utilisé (0 si aucun spécifié)
Implémente Arcane::IRayMeshIntersection.
Définition à la ligne 485 du fichier BasicRayMeshIntersection.cc.
|
inlinevirtual |
Positionne le callback d'intersection.
Cela permet à l'appelant de spécifier sa méthode de calcul d'intersection d'un rayon avec une face. Si cette méthode n'est pas appelée, un intersecteur par défaut est utilisé.
Implémente Arcane::IRayMeshIntersection.
Définition à la ligne 481 du fichier BasicRayMeshIntersection.cc.
|
private |
Définition à la ligne 515 du fichier BasicRayMeshIntersection.cc.