5. Exemple : Utiliser des modules Python dans un fichier export#
Supposons que l’arborescence de notre projet soit :
project
├── mesh_file.mmed
├── command_file.comm
├── export_file.export
├── src
│ ├── __init__.py
│ └── python_file.py
Le fichier export, qui contient les informations pour l’exécution de l’étude, est de la forme :
P actions make_etude
P time_limit 60
P memory_limit 512
P ncpus 1
P mpi_nbcpu 1
P mpi_nbnoeud 1
P version stable
F comm command_file.comm D 1
F mmed mesh_file.mmed D 20
À ce fichier export, il faudrait rajouter une ligne pour indiquer le chemin du dossier à considérer lors du calcul. En fonction du cas, cette ligne peut être :
Quand on utilise run_aster :
R nom chemin_du_src D 0
Quand on utilise astk:
R repe chemin_du_src D 0
La différence entre ces deux cas est due au fait qu’astk, jusqu’à la version 17.2 de code_aster, restreint le type nom pour des fichiers. Le type à utiliser est alors repe. De ce fait, il faut aussi adapter la façon d’appeler les fonctions dans les fichiers du dossier src de notre exemple.
5.1. Appel de fonctions avec run_aster#
La façon d’importer dans le fichier command_file.comm les fonctions contenues dans python_file.py est la suivante :
from src.python_file import my_function
En supposant que le fichier python_file.py contient :
def my_function():
pass
5.2. Appel de fonctions avec astk#
Il faut noter que quand on importe un dossier avec repe, astk va copier les fichiers du dossier dans un dossier de nom REPE_IN dans le répertoire temporaire. Cette manipulation signifie que les modules Python doivent non plus être importés depuis src, mais depuis REPE_IN.
Dans le fichier de commande, la façon d’importer les fonctions devient :
from REPE_IN.python_file import my_function
- Remarque :
astk ne permet pas d’avoir plus d’un dossier repe. Alors qu’avec run_aster, qui est la solution recommandée, il est possible d’en avoir plusieurs.