Bash Shell 中的向量分析

在进行 CFD 或 FEM 分析等准备工作时,通常需要指定矢量参数。矢量常数易于处理:

DIR="1 0 0"

myMesh --direction "$DIR""

然而,如果必须对向量进行运算,例如进行标量乘法或旋转,情况会迅速变得复杂。.

一个强大的解决方案是使用 Matlab 的 Octave 克隆来进行操作。Octave 的两个特性在这种情况下很有用:

  • 命令行选项“–eval”用于指定要处理的表达式
  • 函数`disp`以单行纯文本格式输出结果

一个例子:

DIR="1 0 0"
VELOCITY=$(octave --eval "disp( 11.*[$DIR] )")

myMesh --direction "$DIR"
mySolver --velocity "$VELOCITY""

更复杂的操作也是可能的。虽然需要注意产生线矢量作为结果。例如旋转:

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""