Modification incrémentale des matériaux. Plus de détails...
#include <arcane/materials/internal/IncrementalComponentModifier.h>
Fonctions membres publiques | |
IncrementalComponentModifier (AllEnvData *all_env_data, const RunQueue &queue) | |
void | initialize (bool is_debug) |
void | apply (MaterialModifierOperation *operation) |
void | finalize () |
void | setDoCopyBetweenPartialAndPure (bool v) |
void | setDoInitNewItems (bool v) |
void | flagRemovedCells (SmallSpan< const Int32 > local_ids, bool value_to_set) |
Int32 | _computeCellsToTransformForEnvironments (SmallSpan< const Int32 > ids) |
Calcule les mailles à transformer lorsqu'on modifie les mailles d'un milieu. | |
void | _resetTransformedCells (SmallSpan< const Int32 > ids) |
void | _addItemsToIndexer (MeshMaterialVariableIndexer *var_indexer, SmallSpan< const Int32 > local_ids) |
void | _removeItemsInGroup (ItemGroup cells, SmallSpan< const Int32 > removed_ids) |
void | _applyCopyBetweenPartialsAndGlobals (const CopyBetweenPartialAndGlobalArgs &args, RunQueue &queue) |
Effectue la copie entre les valeurs partielles et globales. | |
void | _applyCopyVariableViews (RunQueue &queue) |
Effectue la copie des vues pour les variables. | |
void | _applyInitializeWithZero (const InitializeWithZeroArgs &args) |
void | _computeItemsToAdd (ComponentItemListBuilder &list_builder, SmallSpan< const Int32 > local_ids) |
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 privées | |
void | _switchCellsForEnvironments (const IMeshEnvironment *modified_env, SmallSpan< const Int32 > ids) |
Transforme les entités pour les milieux. | |
void | _switchCellsForMaterials (const MeshMaterial *modified_mat, SmallSpan< const Int32 > ids) |
Transforme les entités pour un milieu. | |
Int32 | _computeCellsToTransformForMaterial (const MeshMaterial *mat, SmallSpan< const Int32 > ids) |
Calcule les mailles à transformer pour le matériau \at mat. | |
void | _removeItemsFromEnvironment (MeshEnvironment *env, MeshMaterial *mat, SmallSpan< const Int32 > local_ids, bool update_env_indexer) |
Supprime les mailles d'un matériau du milieu. | |
void | _addItemsToEnvironment (MeshEnvironment *env, MeshMaterial *mat, SmallSpan< const Int32 > local_ids, bool update_env_indexer) |
Ajoute les mailles d'un matériau du milieu. | |
void | _copyBetweenPartialsAndGlobals (const CopyBetweenPartialAndGlobalArgs &args) |
Copie entre les valeurs partielles et les valeurs globales. | |
void | _resizeVariablesIndexer (Int32 var_index) |
Redimensionne l'index var_index des variables. | |
Attributs privés | |
AllEnvData * | m_all_env_data = nullptr |
MeshMaterialMng * | m_material_mng = nullptr |
ConstituentModifierWorkInfo | m_work_info |
RunQueue | m_queue |
bool | m_do_copy_between_partial_and_pure = true |
bool | m_do_init_new_items = true |
bool | m_is_debug = false |
Int32 | m_use_generic_copy_between_pure_and_partial = 0 |
1 ou 2 si on utilise une version générique pour les copies entre pure et partiel | |
Amis | |
class | MeshMaterialModifierImpl |
Membres hérités additionnels | |
Fonctions membres protégées hérités de Arccore::TraceAccessor | |
void | _setLocalVerboseLevel (Int32 v) |
Int32 | _localVerboseLevel () const |
Modification incrémentale des matériaux.
Il faut appeler initialize() pour initialiser l'instance puis appeler apply() pour chaque opération.
Définition à la ligne 40 du fichier IncrementalComponentModifier.h.
Arcane::Materials::IncrementalComponentModifier::IncrementalComponentModifier | ( | AllEnvData * | all_env_data, |
const RunQueue & | queue | ||
) |
Définition à la ligne 38 du fichier IncrementalComponentModifier.cc.
|
private |
Ajoute les mailles d'un matériau du milieu.
Ajoute les mailles données par local_ids au matériau mat du milieu. L'indexeur du matériau est mis à jour et si update_env_indexer est vrai, celui du milieu aussi (ce qui signifie que le milieu apparait dans les mailles local_ids).
Définition à la ligne 292 du fichier IncrementalComponentModifier.cc.
Références Arcane::Materials::ConstituentConnectivityList::fillCellsIsPartial().
void Arcane::Materials::IncrementalComponentModifier::_addItemsToIndexer | ( | MeshMaterialVariableIndexer * | var_indexer, |
SmallSpan< const Int32 > | local_ids | ||
) |
Définition à la ligne 324 du fichier IncrementalComponentModifier.cc.
void Arcane::Materials::IncrementalComponentModifier::_applyCopyBetweenPartialsAndGlobals | ( | const CopyBetweenPartialAndGlobalArgs & | args, |
RunQueue & | queue | ||
) |
Effectue la copie entre les valeurs partielles et globales.
Cette méthode permet de faire la copie en utilisant une seule RunCommand.
Définition à la ligne 390 du fichier IncrementalComponentModifier_Accelerator.cc.
Références ARCANE_CHECK_ACCESSIBLE_POINTER, ARCANE_CHECK_POINTER, ARCANE_FATAL, Arcane::Materials::VariableIndexerCommonArgs::m_copy_data, Arcane::Materials::ConstituentModifierWorkInfo::m_host_variables_copy_data, Arcane::Materials::ConstituentModifierWorkInfo::m_variables_copy_data, Arcane::Accelerator::makeCommand(), et RUNCOMMAND_LOOP2.
Effectue la copie des vues pour les variables.
Cette méthode permet de faire en une seule RunCommand les copies entre les vues CPU et accélérateurs des variables
Définition à la ligne 477 du fichier IncrementalComponentModifier_Accelerator.cc.
Références ARCANE_CHECK_ACCESSIBLE_POINTER, ARCANE_FATAL, Arcane::Materials::ConstituentModifierWorkInfo::m_host_variables_copy_data, Arcane::Materials::ConstituentModifierWorkInfo::m_variables_copy_data, Arcane::Accelerator::makeCommand(), et RUNCOMMAND_LOOP2.
void Arcane::Materials::IncrementalComponentModifier::_applyInitializeWithZero | ( | const InitializeWithZeroArgs & | args | ) |
Définition à la ligne 436 du fichier IncrementalComponentModifier_Accelerator.cc.
Int32 Arcane::Materials::IncrementalComponentModifier::_computeCellsToTransformForEnvironments | ( | SmallSpan< const Int32 > | ids | ) |
Calcule les mailles à transformer lorsqu'on modifie les mailles d'un milieu.
Définition à la ligne 219 du fichier IncrementalComponentModifier_Accelerator.cc.
Références Arcane::Materials::ConstituentModifierWorkInfo::isAdd(), Arcane::Accelerator::makeCommand(), et RUNCOMMAND_LOOP1.
|
private |
Calcule les mailles à transformer pour le matériau \at mat.
Définition à la ligne 233 du fichier IncrementalComponentModifier.cc.
Références Arcane::Materials::ConstituentConnectivityList::fillCellsToTransform().
void Arcane::Materials::IncrementalComponentModifier::_computeItemsToAdd | ( | ComponentItemListBuilder & | list_builder, |
SmallSpan< const Int32 > | local_ids | ||
) |
Définition à la ligne 253 du fichier IncrementalComponentModifier_Accelerator.cc.
|
private |
Copie entre les valeurs partielles et les valeurs globales.
Si pure_to_partial est vrai, alors on copie les valeurs globales vers les valeurs partielles, sinon on fait l'inverse. de suppression d'un matériau)
Définition à la ligne 443 du fichier IncrementalComponentModifier.cc.
Références Arccore::SpanImpl< T, SizeType, Extent, MinValue >::empty().
|
private |
Supprime les mailles d'un matériau du milieu.
Supprime les mailles données par local_ids du matériau mat du milieu. L'indexeur du matériau est mis à jour et si update_env_indexer est vrai, celui du milieu aussi (ce qui signifie que le milieu disparait des mailles local_ids).
TODO: optimiser cela en ne parcourant pas toutes les mailles matériaux du milieu (il faut supprimer removed_local_ids_filter). Si on connait l'indice de chaque maille dans la liste des MatVarIndex de l'indexeur, on peut directement taper dedans.
Définition à la ligne 260 du fichier IncrementalComponentModifier.cc.
void Arcane::Materials::IncrementalComponentModifier::_removeItemsInGroup | ( | ItemGroup | cells, |
SmallSpan< const Int32 > | removed_ids | ||
) |
Définition à la ligne 345 du fichier IncrementalComponentModifier_Accelerator.cc.
void Arcane::Materials::IncrementalComponentModifier::_resetTransformedCells | ( | SmallSpan< const Int32 > | ids | ) |
Définition à la ligne 328 du fichier IncrementalComponentModifier_Accelerator.cc.
|
private |
Redimensionne l'index var_index des variables.
Définition à la ligne 400 du fichier IncrementalComponentModifier.cc.
Références Arcane::Accelerator::RunQueue::barrier().
|
private |
Transforme les entités pour les milieux.
Parcours les milieux, sauf le milieu modifié modified_env et pour chacun convertie les mailles pures en mailles partielles ou inversement. Après conversion, les valeurs correspondantes aux mailles modifiées sont mises à jour pour chaque variable.
Si is_add est vrai, alors on transforme de pure en partiel (dans le cas d'ajout de matériau) sinon on transforme de partiel en pure (dans le cas de suppression d'un matériau)
Définition à la ligne 164 du fichier IncrementalComponentModifier.cc.
Références Arcane::Materials::MeshMaterialVariableIndexer::name(), et Arcane::Materials::MeshMaterialVariableIndexer::transformCells().
|
private |
Transforme les entités pour un milieu.
Parcours le milieux env et convertie les mailles pures en mailles partielles ou inversement. Après conversion, les valeurs correspondantes aux mailles modifiées sont mises à jour pour chaque variable.
Si is_add est vrai, alors on transforme de pure en partiel (ajout de matériau) sinon on transforme de partiel en pure (suppression d'un matériau)
Définition à la ligne 96 du fichier IncrementalComponentModifier.cc.
Références Arcane::Materials::MeshMaterialVariableIndexer::name(), et Arcane::Materials::MeshMaterialVariableIndexer::transformCells().
void Arcane::Materials::IncrementalComponentModifier::apply | ( | MaterialModifierOperation * | operation | ) |
Définition à la ligne 41 du fichier IncrementalComponentModifier_Accelerator.cc.
void Arcane::Materials::IncrementalComponentModifier::finalize | ( | ) |
Définition à la ligne 77 du fichier IncrementalComponentModifier.cc.
void Arcane::Materials::IncrementalComponentModifier::flagRemovedCells | ( | SmallSpan< const Int32 > | local_ids, |
bool | value_to_set | ||
) |
Définition à la ligne 308 du fichier IncrementalComponentModifier_Accelerator.cc.
Définition à la ligne 63 du fichier IncrementalComponentModifier.cc.
|
inline |
Définition à la ligne 54 du fichier IncrementalComponentModifier.h.
Définition à la ligne 55 du fichier IncrementalComponentModifier.h.
|
friend |
Définition à la ligne 43 du fichier IncrementalComponentModifier.h.
|
private |
Définition à la ligne 59 du fichier IncrementalComponentModifier.h.
|
private |
Définition à la ligne 63 du fichier IncrementalComponentModifier.h.
Définition à la ligne 64 du fichier IncrementalComponentModifier.h.
Définition à la ligne 65 du fichier IncrementalComponentModifier.h.
|
private |
Définition à la ligne 60 du fichier IncrementalComponentModifier.h.
|
private |
Définition à la ligne 62 du fichier IncrementalComponentModifier.h.
|
private |
1 ou 2 si on utilise une version générique pour les copies entre pure et partiel
Définition à la ligne 67 du fichier IncrementalComponentModifier.h.
|
private |
Définition à la ligne 61 du fichier IncrementalComponentModifier.h.