Tecplot中如何用公式修改数据(2009-05-22 21:41:12)
标签:tecplot公式 修改数据 杂谈 
分类:软件应用

前几天因为使用遇到问题,看了一下Tecplot中如何用公式修改数据,把相关帮助随便翻译了一下,希望对大家有帮助。
Data->Alter->Specify Equations 可以使用公式
Tecplot 公式形式如下:
Lvalue = f(Rvalue1, Rvalue2, Rvalue3, ...)
f() 类似 FORTRAN 表达式,参考下面的内容。Lvalue 是对一个存在或不存在的变量的引用
RvalueN 是对值的引用(如常数、变量值或序号)。
公式中可以有空格,但是在内部函数名称和变量名称中不能有空格。
如果 Lvalue 指定的变量在当前 Frame 的数据集中存在,公式将修改变量的值;如果不存在就建立一个新变量。
如果公式包含语法错误,在一个错误对话框中显示公式,告知错误的大概位置。
每个公式占一行,可以使用多个公式,单击 Compute 生效,每个公式按顺序用于所有指定的 ZONE 和数据。
 
公式变量和值
变量可以用3种方法指定:根据数据文件中的顺序,名称或字母代码。
可以用数据文件中变量的顺序引用变量,V1 是数据文件中的第一个变量,V2 是第二个,依此类推。
如,要设置数据文件中第一个变量等于第二个变量和第三个变量的和,用
V1 = V2 + V3
用这个方法创建新变量必须指定下一个变量的序号,假设数据文件中有5个变量,可以创建一个新变量等于第四个变量的一半:
V6 = V4 / 2
不能跳过中间的数字指定变量,否则 Tecplot 弹出错误信息对话框指出变量名无效。
变量也可以用名称指定,方法为用大括号("{"和"}")包含变量名,如要设置 V3 等于变量 R/RF
R 的值用
变量名大小写不敏感,前后的空格也忽略,因此下面的公式是相同的:
v3 = {R/rfr}        V3 = { r/rfr }
变量名中的空格有意义,因此下面的公式和上面的公式不同:
V3 = {R / rfr},
如果有两个或多个变量名字相同,Tecplot 使用第一个变量,即如果 V5 和 V9 都叫 R/rfr,用变量名时使用的是 V5。
大括号也可以用于公式左侧,此时如果该变量不存在就创建一个新变量,这在公式文件中很重要,
如,下面的公式设置变量 T/R 等于变量 T 除以变量 R,如果不存在变量 T/R,将创建一个新变量。
{T/R} = {T} / {R}
变量也可以用字母代码表示,有效的字母代码为:
I: 数据的 I 序号
J: 数据的 J 序号 (有限元 ZONE 为 1)
K: 数据的 K 序号 (有限元 ZONE 为 1)
X: X轴变量(在 XY Line 图形中,所有图形必须有相同的 X 变量名称)
Y: Y轴变量(在 XY Line 图形中,所有图形必须有相同的 Y 变量名称)
Z: Z轴变量(如果存在)
A: Polar 图的 Theta 轴,如果这个变量有效,图形必须是 Polar Line,且所有图形必须有相同的 Theta 变量名称
R: Polar 图的 R 轴,图形必须是 Polar Line,且所有图形必须有相同的 Theta 变量名称
U: 向量的 X 分量(如果存在)
V: 向量的 Y 分量(如果存在)
W: 向量的 Z 分量(如果存在)
B: value-blanking variable (if set).Plot->Blanking->value-Blanking里设置
C: 等值线变量(如果存在)
S: 散点大小变量(如果存在)
字母代码可以用于公式右侧任意位置,不要加大括号,例如:
V3 = I + J
V4 = cos(X) * cos(Y) * cos(Z)
{Dist} = sqrt(U*U + V*V + W*W)
{temp} = min(B,1)
代表变量的字母代码,除I, J, K外,都可以用在公式左侧,如:h{}q<
Z = X*X/(1+Y*Y)
W = 0 
S = 1+ABS(S)
如果 Tecplot 图不存在使用的字母代码会有出错信息,如在非 3D 图形中使用 Z,字母代码引用的变量只对当前 Frame 有效。
公式中还可以使用辅助数据,如引用数据文件中的辅助数据从无量纲变量计算有量纲变量,公式中使用辅助
数据语法如下:
AUXZONE[nnn]:Name
AUXDATASET:Name"
AUXFRAME:Name0
例如辅助数据集中的常数 Pref 可以用 AUXDataSet:Pref 引用,使用这个变量的公式如:
{P} = {P_NonDim} * AUXDataSet:Pref
Frame 辅助数据常数 Mach 可以用 AUXFrame:Mach 引用。
ZONE 辅助数据常数有2种方法引用:AUXZone:Name 对当前 ZONE 使用 Name,AUXZone[nnn]:Name 对 ZONE 号为 nnn
的 ZONE 使用 Name。如果正在对 ZONE  1-3 操作,对 ZONE 1 操作时,AUXZone:Reynolds 引用 ZONE  1 中的辅助数据 Reynolds,
对 ZONE  2 操作时,AUXZone:Reynolds 引用 ZONE  2 中的辅助数据 Reynolds,依此类推。而 AUXZone[2]:Reynolds 对
所有操作 ZONE 引用 ZONE  2 中的辅助数据常数 Reynolds。
公式操作符和函数Vsw*v.>7
 
操作符:
+ 加 
- 减 
* 乘 
/ 除 
** 指数
优先级为:
** 高 
*,/   
+,- 低
 
可用函数(除非注明,所有函数使用一个参数):
SIN: Sine (用弧度)
COS: Cosine (用弧度)
TAN: Tangent (用弧度)
ABS: 绝对值
ASIN: Arcsine (结果是弧度)
ACOS: Arccosine (结果是弧度)
ATAN: Arctangent (结果是弧度)
ATAN2(A,B): Arctangent of A/B (结果是弧度)
SQRT: 开平方
LOG: 自然对数(底是e)
ALOG: 自然对数(底是e)
LOG10: 以10为底的对数
ALOG10: 以10为底的对数
EXP: 指数(底是e); EXP(V1)=e**(V1)
MIN(A,B): A 和 B 的最小值
MAX(A,B): A 和 B 的最大值
SIGN: 参数为负时返回 -1,否则返回 +1
ROUND: 舍入到最近整数
TRUNC: 去掉小数部分
LOG 和 ALOG 等价,LOG10 和 ALOG10 等价。
c++trunc函数
要调用内部函数,把它的参数放在小括号("(" 和 ")")里,如:
V4 = ATAN(V1)
Tecplot 有一组完全的一、二阶导数和微分函数:
ddx ddy ddz dda ddr d2dx2 d2dy2 d2dz2 d2da2 d2dr2 d2dxy d2dyz d2dxz d2dar
ddi ddj ddk d2di2 d2dj2 d2dk2 d2dij d2djk d2dik
 
导数和微分函数可以象内部函数一样使用,如:
V4 = ddx(V3)
V6 = d2dx2(v5)
{dC/dx} = ddx(C)
V8 = ddj(X)
{Vt12} = ddy({Vt11}(i+1)) + ddy({Vt11}(i-1))
Z = d2dj2(sin(v5*v6))
V9 = ddj(ddx({R/T}))
C = d2dij(C[1]-C)
{NEWVAR} = ddi(X)+ddj(Y)+ddk(Z)
 
导数和微分函数限制如下:
IJK-ordered  ZONE 的导数和微分用全 3D 体积计算。
如果在选定 ZONE 的所有数据点上存在导数没有定义的点,那么在所有点都不进行计算。
导数计算使用当前 Frame 的坐标轴定义,如果有多个 Frame 且对相同的数据集有不同的变量指定时需要注意。
所有导数和微分都在数据点中心或网格中心(如果导数变量是网格中心变量)。
2个 ZONE 边界上的导数可能不同,因为 Tecplot 每次只计算一个 ZONE 。
导数和微分函的边界条件
对于 ordered  ZONE ,一阶导数和微分的边界值(ddx, ddy, ddz, ddi, ddj, and ddk)用
simple 或 complex 方法计算,缺省是 simple。
 
配置文件中的下面参数控制使用的方法:
$!INTERFACE DATA {DERIVATIVEBOUNDARY=SIMPLE}
把 SIMPLE 改为 COMPLEX 使用 complex 边界条件。
 
对于 simple 边界条件,边界导数用边界的一阶导数计算,等价于一阶导数在边界上是常数(二阶导数等于0)。
complex 边界条件时,边界导数从相邻内点导数线性外插,等价于二阶导数在边界上时常数(一阶导数线性变化)。
 
二阶导数和微分(d2dx2, d2dy2, d2dz2, d2dxy, d2dyz, d2dxz, d2di2, d2dj2, d2dij, d2dk2, d2djk, and d2dik)
忽略这些边界条件,边界导数被设置成等于内部相邻的导数,等价于二阶导数在边界上是常数。
 
可以用序号范围和序号选项建立自己的导数边界条件。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。