Arcane  v3.12.18.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Réalisation d'un lecteur de maillage

Cette page décrit la manière de réaliser un lecteur de maillage pour Arcane.

Un lecteur de maillage est un service qui implémente l'interface IMeshReader, décrite ci-dessous:

class IMeshReader
{
public:
virtual bool allowExtension(const String& str) =0;
virtual eReturnType readMeshFromFile(IMesh* mesh,
const XmlNode& mesh_element,
const String& file_name,
const String& dir_name,
bool use_internal_partition) =0;
};

La première chose à faire est donc de définir une classe service qui implémente cette interface. Notre classe s'appellera 'SampleMeshReader' et héritera de BasicService. Ce service aura pour nom 'SampleMeshReaderService'

#include "arcane/BasicService.h"
#include "arcane/IMeshReader.h"
#include "arcane/FactoryService.h"
using namespace Arcane;
: public BasicService
, public IMeshReader
{
public:
public:
virtual bool allowExtension(const String& str);
virtual eReturnType readMeshFromFile(IMesh* mesh,
const String& file_name,
const String& dir_name,
};
#define ARCANE_REGISTER_SUB_DOMAIN_FACTORY(aclass, ainterface, aname)
Enregistre un service de fabrique pour la classe aclass.
Classe de base de service lié à un sous-domaine.
Interface du service gérant la lecture d'un maillage.
Definition IMeshReader.h:37
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Structure contenant les informations pour créer un service.
Noeud d'un arbre DOM.
Definition XmlNode.h:51
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-

La méthode IMeshReader::allowExtension() permet de spécifier l'extension de fichier que notre lecteur supportera. Par exemple, cette extension est 'vtu' pour les fichiers VTK contenant des maillages non structurés. Dans notre exemple, nous prendrons l'extension 'msh'. Nous implémenterons donc la méthode allowExtension() comme suit:

bool SampleMeshReader::allowExtension(const String& str)
{
return str=='msh';
}

TODO: a continuer