流体中文网论坛--流体力学及相关领域学术问题交流论坛前几天因为使用遇到问题,看了一下Tecplot中如何用公式修改数据,把相关帮助随便翻译了一下,希望对大家有帮助。Data--Alter--SpecifyEquations中可以使用公式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/RFR的值,用:V3={R/RFR}变量名大小写不敏感,前后的空格也忽略,因此下面的公式是相同的: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轴变量(在XYLine图形中,所有图形必须有相同的X变量名称)Y:Y轴变量(在XYLine图形中,所有图形必须有相同的Y变量名称)Z:Z轴变量(如果存在)A:Polar图的Theta轴,如果这个变量有效,图形必须是PolarLine,且所有图形必须有相同的Theta变量名称R:Polar图的R轴,图形必须是PolarLine,且所有图形必须有相同的Theta变量名称U:向量的X分量(如果存在)V:向量的Y分量(如果存在)W:向量的Z分量(如果存在)B:value-blankingvariable(ifset).Plot->Blanking->value-Blanking里设置.C:等值线变量(如果存在)S:散点大小变量(如果存在)字母代码可以用于公式右侧任意位置,不要加大括号,例如:V3=I+JV4=cos(X)*cos(Y)*cos(Z){Dist}=sqrt(U*U+V*V+W*W){temp}=min(B,1)代表变量的字母代码,除I,J,K外,都可以用在公式左侧,如:Z=X*X/(1+Y*Y)W=0S=1+ABS(S)如果Tecplot图不存在使用的字母代码会有出错信息,如在非3D图形中使用Z,字母代码引用的变量只对当前Frame有效。公式中还可以使用辅助数据,如引用数据文件中的辅助数据从无量纲变量计算有量纲变量,公式中使用辅助数据语法如下:AUXZONE[nnn]:NameAUXDATASET:NameAUXFRAME:Namel例如辅助数据集中的常数Pref可以用AUXDataSetref引用,使用这个变量的公式如:zYyO=M{P}={P_NonDim}*AUXDataSetref0zhSFrame辅助数据常数Mach可以用AUXFrame:Mach引用。ZONE辅助数据常数有2种方法引用:AUXZone:Name对当前ZONE使用Name,AUXZone[nnn]:Name对ZONE号为nnn的ZONE使用Name。如果正在对ZONE1-3操作,对ZONE1操作时,AUXZone:Reynolds引用ZONE1中的辅助数据Reynolds,对ZONE2操作时,AUXZone:Reynolds引用ZONE2中的辅助数据Reynolds,依此类推。而AUXZone[2]:Reynolds对所有操作ZONE引用ZONE2中的辅助数据常数Reynolds。公式操作符和函数操作符:+加-减*乘/除**指数优先级为:**高*,/+,-低可用函数(除非注明,所有函数使用一个参数):SIN:Sine(用弧度)COS:Cosine(用弧度)TAN:Tangent(用弧度)ABS:绝对值ASIN:Arcsine(结果是弧度ACOS:Arccosine(结果是弧度)ATAN:Arctangent(结果是弧度)ATAN2(A,B):ArctangentofA/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,否则返回ROUND:舍入到最近整数TRUNC:去掉小数部分LOG和ALOG等价,LOG10和ALOG10等价。要调用内部函数,把它的参数放在小括号((和))里,如V4=ATAN(V1)Tecplot有一组完全的一、二阶导数和微分函数:ddxddyddzddaddrd2dx2d2dy2d2dz2d2da2d2dr2d2dxyd2dyzd2dxzd2daRddiddjddkd2di2d2dj2d2dk2d2dijd2djkd2dik导数和微分函数可以象内部函数一样使用,如: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-orderedZONE的导数和微分用全3D体积计算。如果在选定ZONE的所有数据点上存在导数没有定义的点,那么在所有点都不进行计算。导数计算使用当前Frame的坐标轴定义,如果有多个Frame且对相同的数据集有不同的变量指定时需要注意。所有导数和微分都在数据点中心或网格中心(如果导数变量是网格中心变量)。2个ZONE边界上的导数可能不同,因为Tecplot每次只计算一个ZONE导数和微分函的边界条件&对于orderedZONE,一阶导数和微分的边界值(ddx,ddy,ddz,ddi,ddj,andddk)用simple或complex方法计算,缺省是simple。如需修改为complex方法,可调整配置文件配置文件中的下面参数控制使用的方法:$!INTERFACEDATA{DERIVATIVEBOUNDARY=SIMPLE}把SIMPLE改为COMPLEX使用complex边界条件。对于simple边界条件,边界导数用边界的一阶导数计算,等价于一阶导数在边界上是常数(二阶导数等于0)。complex边界条件时,边界导数从相邻内点导数线性外插,等价于二阶导数在边界上时常数(一阶导数线性变化)。二阶导数和微分(d2dx2,d2dy2,d2dz2,d2dxy,d2dyz,d2dxz,d2di2,d2dj2,d2dij,d2dk2,d2djk,andd2dik)忽略这些边界条件,边界导数被设置成等于内部相邻的导数,等价于二阶导数在边界上是常数。可以用序号范围和序号选项建立自己的导数边界条件。指定ZONE号:变量后跟中括号可以指定变量值的ZONEiV3=V3-V3[1]X=(X[1]+X[2]+X[3])/3{TempAdj}={Temp}[7]-{Adj}V8=V1[19]-2*C[21]+{R/T}[18]ZONE号必须是小于等于ZONE数的正整常数。指定的ZONE必须和当前区域有相同的结构(I-,IJ-,或IJK-ordered或有限元)和维数(即IMax,节点数等),=}不指定时使用当前ZONE。ZONE指定只在公式右侧起作用,所有公式右侧的值在修改前都不变。要在公式左侧指定ZONE,在指定公式对话框中ZONE内指定。指定数据序号用小括号((和可以指定序号,可以是绝对位置或相对当前的位置,如:V2=(V2(i+1)+V2(i-1))/2U=U(i+1,j)-U(i-1,j)+V(i+2,1)+3*W(i-1);{NTQ}={TQ}+{TQ}(i-3,j+7,k-1)-{TQ}(3,j+1,k+8}S=S(i+1,j)-V3(2)+{RFR/T}(J+2)用I,J,K可以指定序号相对当前位置的偏移,必须使用整数偏移量,如果超过ZONE末尾,使用边界值,如当I=IMax-1和I=IMax时,V3(i+2)使用V3(imax);I=1或2时,V3(i-2)使用V3(1)。用一个正整数指定绝对位置,如V3(2)引用V3的第二个值。序号顺序必须是I,J,K顺序的,如果数据是I-ordered忽略J,如果数据不是IJK-ordered忽略K,在有限元数据中不可以使用序号。序号指定只在公式右侧起作用,如果不指定则使用当前序号,要在公式左侧使用序号,在指定公式对话框中IndexRanges内指定。序号可以和ZONE共同使用,先用ZONE,如:V3=V3-V3[1](i+1)Y=Y[1]-Y[2](1)+Y(1,j+3)+Y新变量的数据类型可以在NewVarDataType下拉列表中指定,缺省是Auto,Tecplot自动指定合适的类型。也可以手动指定。可用数据类型为:Single:4byte浮点数Double:8byte浮点数LongInt:4byte整数ShortInt:2byte整数Byte:1byte整数Bit:0或1新变量的位置可以在NewVarLocation下拉列表中指定,缺省是Auto,Tecplot假设变量在节点上,即使公式中所有变量都是cell-centered的也一样。修改公式使用范围ZONE和序号范围是可以修改的,要对单独的公式指定范围,可在公式末尾加冒号,再加下面的语句:公式范围=CommentZ=set=限制zoneI=start[,end[,skip]]=限制I的范围J=start[,end[,skip]]=限制J的范围K=start[,end[,skip]]=限制K的范围D=datatype=创建新变量时,设置左侧变量数据类型例如,要把ZONE1,3,4,5的X加1X=X+1:Z=[1,3-5]下面的例子每隔一个序号I就对X加1,注意,0表示序号最大值。X=X+1:I=1,0,2下面的例子创建一个新变量,同时赋予变量类型:{NewV}=X-Y:D=Byte对话框中的Remove按钮可以删除这些限制。公式例子下面的公式中V1(数据文件中的第一个变量)变成自己的2.5倍:V1=2.5*V1置变量Density等于205,如果不存在这个变量就创建了一个新变量{Density}=205变量Y(Y轴变量)用X(X轴变量)平方的相反数代替:Y=-X**2V3用V2四舍五入的结果代替,如果数据集中只有2个变量,就会创建新的变量。V3=round(V2)数据集中的第四个变量用第三个变量的对数代替V4=ALOG10(V3