Lors de la réalisation d'opérations préparatoires pour des analyses par exemple CFD ou FEM, il est souvent nécessaire de spécifier des paramètres vectoriels. Les constantes vectorielles sont faciles à manipuler :
myMesh --direction "$DIR"
Cependant, cela devient rapidement compliqué si les vecteurs doivent être manipulés, par exemple multipliés par des scalaires ou tournés.
Une solution puissante consiste à utiliser le clone Matlab Octave pour effectuer les opérations. Deux fonctionnalités d'Octave sont utiles dans ce contexte :
- l'option de ligne de commande “ –eval ” pour spécifier l'expression à traiter
- la fonction “ disp ” pour afficher les résultats en format brut sur une seule ligne
Un exemple :
DIR="1 0 0" VELOCITY=$(octave --eval "disp( 11.*[$DIR] )") myMesh --direction "$DIR" mySolver --velocity "$VELOCITY"
Des opérations plus complexes sont possibles. Bien qu'il faille veiller à produire des vecteurs de ligne comme résultats. La rotation en est un exemple :
DIR="1 0 0" ANG=45 DIR_ROT=$(octave --eval "pkg load linear-algebra; disp( (rotv([0 0 1],$ANG*pi/180)*[$DIR]')' )") myMesh --direction " $DIR_ROT"

