Arcane  v3.16.0.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;
class SampleMeshReader
: public BasicService
, public IMeshReader
{
public:
SampleMeshReader(const ServiceBuildInfo& sbi);
public:
virtual bool allowExtension(const String& str);
virtual eReturnType readMeshFromFile(IMesh* mesh,
const XmlNode& mesh_element,
const String& file_name,
const String& dir_name,
bool use_internal_partition);
};
ARCANE_REGISTER_SUB_DOMAIN_FACTORY(SampleMeshReader,IMeshReader,SampleMeshReaderService);
#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
Structure contenant les informations pour créer un service.
Chaîne de caractères unicode.
Noeud d'un arbre DOM.
Definition XmlNode.h:51
-*- 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