2017-07-11 16 views
1

Je travaille sur le plugin Abaqus 6.14 qui m'aiderait dans ma thèse d'ingénieur, que j'écris en Python. Selon Abaqus scripting reference guide il est possible d'importer des matières de bases de données de sortie (fichiers * .odb) en appelant:Est-il possible d'importer du matériel de la bibliothèque de matériaux dans Abaqus CAE en utilisant des scripts?

from abaqus import mdb 
mdb.models[name].materialsFromOdb(filename) 

Cependant, comme Abaqus permet à l'utilisateur d'exporter/matériaux d'importation/de bibliothèques de matériaux relativement légers (* .lib fichiers) et les partager entre les modèles Je voudrais importer les matériaux de ces fichiers plutôt que de, * souvent volumineux, *. Bien sûr, cela peut être fait manuellement avec facilité, bien que je veux réduire le nombre de tâches répétitives avec mon plugin, car j'ai besoin de faire des dizaines de simulations sur des modèles assez similaires, mais avec des matériaux différents et d'autres paramètres. Je suis conscient que je pourrais également fournir les matériaux nécessaires dans le fichier modèle * .cae, bien que cela puisse être très gênant si je devais importer manuellement de nouveaux matériaux à des dizaines de modèles ou que je devais mettre à jour les propriétés du matériau existant. Qu'est-ce que je cherche est une solution de contournement permettant d'importer des matériaux de bibliothèques de matériaux vers des modèles mdb Abaqus avec des scripts Python, mais en évitant d'implémenter l'analyseur de fichiers * .lib personnalisé, si une telle solution existe.

Répondre

3

La première chose que vous devez savoir est que la bibliothèque de matériaux Abaqus est juste un fichier décapé. Aucun analyseur spécial n'est nécessaire pour travailler avec. Vous pouvez simplement utiliser les bibliothèques standard Python pickle ou cPickle. Bien sûr, vous devez déterminer la structure exacte des objets à l'intérieur. Ce n'est pas difficile car vous verrez que c'est une liste de tuples simples. Cependant, si vous avez une bibliothèque de matériaux existante et que vous souhaitez importer un matériau dans votre base de données Abaqus CAE, il existe une méthode existante pour le faire.

Il existe une méthode dans Abaqus qui utilise une chaîne de matériaux provenant d'une base de données de matériaux et crée un objet matériel à partir de celle-ci. Je ne me souviens pas du nom exact, mais si vous importez manuellement un document et que vous regardez dans le fichier abaqus.rpy, vous le verrez à l'intérieur. Une chose délicate ici est que pour utiliser cette méthode, vous devez avoir une chaîne de matériaux de la bibliothèque de matériaux. Cela peut être fait en lisant le fichier de base de données matériel. Comme déjà mentionné, c'est au format pickle. Comme vous le savez, Abaqus dispose déjà d'un moyen de lire les données de la bibliothèque de matériaux et de les importer dans un modèle CAE. Ils ont un module Python que vous pouvez utiliser, mais il ne peut être utilisé que dans un processus graphique, pas celui du noyau. Si vous voulez passer du temps, vous pouvez déterminer quel module le fait. Dans le dossier d'installation de Abaqus, vous trouverez des fichiers .pyc. Si vous utilisez un décompileur Python, vous pouvez obtenir le code source pour ces modules. Recherchez ceux commençant par mat.

+0

Merci, fonctionne exactement comme prévu. Pour être précis, la méthode que vous avez mentionnée est materials.createMaterialFromDataString (modelname, materialname, version, data). Après le dépilage du fichier de bibliothèque, vous aurez une liste de 5-tuples: le dernier élément de tuple est un dictionnaire et sa propriété 'data' devrait être passée comme argument de données à la fonction. –