Quando si eseguono operazioni preparatorie per ad esempio analisi CFD o FEM, è spesso necessario specificare parametri vettoriali. Le costanti vettoriali sono facili da gestire:
DIR="1 0 0" myMesh --direction "$DIR""
Tuttavia, diventa rapidamente complicato se i vettori devono essere manipolati, ad esempio moltiplicati per scalari o ruotati.
Una soluzione potente è usare il clone di Matlab Octave per eseguire le operazioni. Due funzionalità di Octave sono utili in questo contesto:
- l'opzione da riga di comando “-eval” per specificare l'espressione da elaborare
- la funzione “disp” per visualizzare i risultati in formato semplice su una singola riga
Un esempio:
DIR="1 0 0" VELOCITY=$(octave --eval "disp( 11.*[$DIR] )") myMesh --direction "$DIR" mySolver --velocity "$VELOCITY""
Operazioni più complicate sono possibili. Anche se bisogna fare attenzione a produrre vettori di linea come risultati. La rotazione, ad esempio:
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""

