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) |
![]() | |
~BasicService () override | |
Libère les ressources. | |
virtual ISubDomain * | subDomain () |
![]() | |
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. | |
![]() | |
virtual | ~IService () |
Libère les ressources. | |
![]() | |
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 |
![]() | |
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) | |
![]() | |
virtual | ~IRayMeshIntersection () |
Libère les ressources. | |
Membres hérités additionnels | |
![]() | |
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) | |
![]() | |
BasicService (const ServiceBuildInfo &) | |
![]() | |
AbstractService (const ServiceBuildInfo &) | |
Constructeur à partir d'un ServiceBuildInfo. | |
![]() | |
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 Arcane::arcaneCheckArraySize(), compute(), ENUMERATE_ITEM, ENUMERATE_PARTICLE, et Arcane::IMesh::parallelMng().
|
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(), Arcane::Item::isOwn(), Arcane::Item::localId(), Arcane::ItemWithNodes::nbNode(), Arcane::ItemWithNodes::nodes(), Arcane::IMesh::nodesCoordinates(), et Arcane::IMeshBase::outerFaces().
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.