本帖最后由 hylovegj 于 2011-9-10 17:21 编辑
经过高人指点,终于解决了这个问题,下面以一个实例进行说明。
假设要施加如下压力
f(d)=( (540.1786*(1/d)**k0)**2 + (72.8036*(1/d)**kc)**2 )**0.5/1100
其中,k0和kc的取值为
当k0<=2时,k0=1.8+0.4*d;当k0>时,k0=2.8
当kc<1时,kc=1.7-0.7*d,但是当kc<0.2时,*(1/d)**kc=5;当kc>=1时,kc=1
方法为先创建一个pcl文件,例如pressure_fluctuaction_P.pcl,里面的pressure_fluctuaction_P函数的代码如下
- $用途:创建左舷浆引起的脉动压力场时需要的PCL函数
- $版本: V1.0
- $开发时间: 20110910
- function pressure_fluctuation_P(x,y,z)
- real x,y,z,d
- real k0,kc
- real pressure
-
- d = mth_sqrt((x+300)**2 + (y-6300)**2 + (z-2590)**2)/1100 /*对应霍尔顿法中的d/R*/
-
- $计算系数k0
- if(d <= 2)then
- k0 = 1.8 + 0.4*d
- else
- k0 = 2.8
- end if
-
- $计算系数kc
- if(d < 1)then
- kc = 1.7 - 0.7*d
- else
- kc = 1.0
- end if
-
- $用简易型霍尔顿法计算脉动压力叶频分量单幅值
- if(d >= 0.2)then
- pressure = mth_sqrt((540.1786*(1/d)**k0)**2 + (72.8036*(1/d)**kc)**2)
- else
- pressure = mth_sqrt((540.1786*(1/d)**k0)**2 + 132509.1942)
- end if
- return pressure
- end function
复制代码编译该函数,在Field面板的Scalar Function文本框中输入pressure_fluctuaction_P('x,'y,'z),这样一个标量型空间场就创建好了,如下图所示 这个例子复杂了一些,但仔细看一下不难理解,希望可以帮到有类似需要的朋友,呵呵! |