找回密码
 注册
Simdroid-非首页
查看: 125|回复: 11

[边界和载荷] 如何创建类似于编程语言中的if-elseif-else这种结构的field

[复制链接]
发表于 2011-9-10 11:06:47 | 显示全部楼层 |阅读模式 来自 浙江杭州
如题,请问如何创建类似于编程语言中的if-elseif-else这种结构的标量型空间场(比如压力),需要用到PCL吗?具体如何实现?
发表于 2011-9-10 14:06:24 | 显示全部楼层 来自 浙江舟山
Simdroid开发平台
你说的我也正在研究,需要用到PCL。如果你的单元和载荷都是自己文件中提取的,用PCL建立FEM场就比较方便。手动建场就比较麻烦。
回复 不支持

使用道具 举报

 楼主| 发表于 2011-9-10 17:05:09 | 显示全部楼层 来自 浙江杭州
本帖最后由 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函数的代码如下

  1. $用途:创建左舷浆引起的脉动压力场时需要的PCL函数
  2. $版本: V1.0
  3. $开发时间: 20110910
  4. function pressure_fluctuation_P(x,y,z)
  5.    real x,y,z,d
  6.    real k0,kc
  7.    real pressure
  8.    
  9.    d = mth_sqrt((x+300)**2 + (y-6300)**2 + (z-2590)**2)/1100 /*对应霍尔顿法中的d/R*/
  10.    
  11.    $计算系数k0
  12.    if(d <= 2)then
  13.       k0 = 1.8 + 0.4*d
  14.    else
  15.       k0 = 2.8
  16.    end if
  17.    
  18.    $计算系数kc
  19.    if(d < 1)then
  20.        kc = 1.7 - 0.7*d
  21.    else
  22.       kc = 1.0
  23.    end if
  24.    
  25.    $用简易型霍尔顿法计算脉动压力叶频分量单幅值
  26.    if(d >= 0.2)then
  27.       pressure = mth_sqrt((540.1786*(1/d)**k0)**2 + (72.8036*(1/d)**kc)**2)
  28.    else
  29.       pressure = mth_sqrt((540.1786*(1/d)**k0)**2 + 132509.1942)
  30.    end if
  31.    return pressure
  32. end function
复制代码
编译该函数,在Field面板的Scalar Function文本框中输入pressure_fluctuaction_P('x,'y,'z),这样一个标量型空间场就创建好了,如下图所示
这个例子复杂了一些,但仔细看一下不难理解,希望可以帮到有类似需要的朋友,呵呵!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2014-1-8 11:18:31 | 显示全部楼层 来自 陕西西安
hylovegj 发表于 2011-9-10 17:05
经过高人指点,终于解决了这个问题,下面以一个实例进行说明。
假设要施加如下压力
f(d)=( (540.1786*(1/d) ...

问下,你这个回复中一行一行的代码效果是怎么弄的?
回复 不支持

使用道具 举报

 楼主| 发表于 2014-1-8 18:23:54 | 显示全部楼层 来自 浙江宁波
lenovosk3 发表于 2014-1-8 11:18
问下,你这个回复中一行一行的代码效果是怎么弄的?

看到回复文本框上方的一对尖括号了没?单击后可以在弹出的文本框中粘贴代码。
回复 不支持

使用道具 举报

发表于 2014-1-8 19:37:23 | 显示全部楼层 来自 陕西西安
hylovegj 发表于 2014-1-8 18:23
看到回复文本框上方的一对尖括号了没?单击后可以在弹出的文本框中粘贴代码。 ...

OK, thanks!
回复 不支持

使用道具 举报

发表于 2014-1-9 22:42:30 来自手机 | 显示全部楼层 来自 江苏
楼主,*.pcl文件,建立一个文本文件,改后缀就可以了吗? 建好的*.pcl放在和db同一目录下就可以成功读进去? 本人pcl小白,望指点! 祝您一切顺利!
回复 不支持

使用道具 举报

 楼主| 发表于 2014-1-12 09:01:21 | 显示全部楼层 来自 湖北武汉
言西早幻城 发表于 2014-1-9 22:42
楼主,*.pcl文件,建立一个文本文件,改后缀就可以了吗? 建好的*.pcl放在和db同一目录下就可以成功读进去 ...

是的,扩展名改为.pcl,放在db文件所在目录即可。
回复 不支持

使用道具 举报

发表于 2014-1-13 08:34:45 | 显示全部楼层 来自 江苏南京
本帖最后由 言西早幻城 于 2014-1-13 09:00 编辑
hylovegj 发表于 2014-1-12 09:01
是的,扩展名改为.pcl,放在db文件所在目录即可。

谢谢lz。我严格按照您描述的尝试了一下,Field建立成功,不过给模型施加压力的时候报错了“$# (PCL) Missing right parenthesis”,因为没接触过pcl。lz可否把您的*.pcl文件发给我,我直接用,可能复制再粘贴出现了问题。
祝一切顺利!
回复 不支持

使用道具 举报

 楼主| 发表于 2014-1-13 18:30:12 | 显示全部楼层 来自 湖北武汉
言西早幻城 发表于 2014-1-13 08:34
谢谢lz。我严格按照您描述的尝试了一下,Field建立成功,不过给模型施加压力的时候报错了“$# (PCL) Missi ...

不好意思,代码文件一时半会找不到。
你先编译一下,看下是不是代码有问题。方法为:
在Patran命令行执行!!INPUT *.pcl命令,看下History Window里是否有错误提示。
如果有错误,它会告诉你错在哪里,你根据提示修改就可以了。
正确的代码文件成功编译后会显示...compiled这样的信息。
根据你贴上来的信息,出错原因是圆括号不匹配,右括号)丢失了,你仔细检查一下。
祝你好运!
回复 不支持

使用道具 举报

发表于 2014-1-14 09:10:45 | 显示全部楼层 来自 江苏南京
hylovegj 发表于 2014-1-13 18:30
不好意思,代码文件一时半会找不到。
你先编译一下,看下是不是代码有问题。方法为:
在Patran命令行执行 ...

谢谢lz的及时回复。
我又尝试了一下,而且根据您的代码简化了一个test.pcl进行测试,依然没成功。请您在方便的时候帮忙查看一下附件里的代码。祝您一切顺利!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2014-1-14 18:40:59 | 显示全部楼层 来自 湖北武汉
我用你上传的test.pcl试了一下,一切ok呀!脉动压力施加成功。
详细说下你的操作步骤,应该是你哪一步出问题了。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-26 09:31 , Processed in 0.038191 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表