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"
{
public:
public:
virtual bool allowExtension(
const String& str);
virtual eReturnType readMeshFromFile(
IMesh* mesh,
};
#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.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Structure contenant les informations pour créer un service.
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