[原创] 如何对计算结果进行插值得到特定(x,y,z)点上的值
这里简单介绍一下如何用*MOPER来对计算结果进行插值,来得到用户自定义网格节点上的值。例如,用free mesh计算已经得到所有节点的温度值,如何得到中心点和其他任意点的温度值:
! following code define the Node coordinates in NODLOCS array
*GET,MAXNN,NODE,0,NUM,MAXD
*GET,MINNN,NODE,0,NUM,MIND
*GET,NOD_CNT,NODE,0,COUNT
*DIM,NODLOCS,ARRAY,NOD_CNT,3
! FILL NODLOCS WITH THE X,Y,Z COORDS
NCS2=1
*DO,NCS,MINNN,MAXNN,1
*IF,NSEL(NCS),EQ,1,THEN
NODLOCS(NCS2,1)=NX(NCS)
NODLOCS(NCS2,2)=NY(NCS)
NODLOCS(NCS2,3)=NZ(NCS)
NCS2=NCS2+1
*ENDIF
*ENDDO
!Get simulated temperature value at each node and save them into TDIST array
*DIM,TDIST,ARRAY,NOD_CNT,1
NCS2=1
*DO,NCS,MINNN,MAXNN,1
*IF,NSEL(NCS),EQ,1,THEN
TDIST(NCS2)=TEMP(NCS)
NCS2=NCS2+1
*ENDIF
*ENDDO
! Create TC array to save your model center position, assuming it's 3D model
*DIM,TC,ARRAY,2,3
TC(1,1)=center_x
TC(1,2)=center_y
TC(1,3)=center_z
TC(2,1)=arbitrary_x
TC(2,2)=arbitrary_y
TC(2,3)=arbitrary_z
*DIM,TINTRPC,ARRAY,2,1
! The linear interpolated temperature will be saved in TINTRPC array
*MOPER,TINTRPC,TC,MAP,TDIST,NODLOCS,3,,1
用户可自定义TC的length来输入所求坐标点集合的x,y,z值。TINTRPC就是所对应坐标点集合上的温度值。 感谢分享,支持原创 版主:你好,因为遇到了同样的插值问题,多谢看了版主的好资料,在此表示感谢。我试过你的这个命令流,最后一行*MOPER,TINTRPC,TC,MAP,TDIST,NODLOCS,3,,1中的3,,1在help中的解释如下:
kOut
Outside region results; used for Oper = MAP
If kOut = 0, use the value(s) of the nearest region point for points outside of the region.
If kOut = 1, set results extrapolated outside of the region to zero
那么怎么插值出来的值为0。
我的例子如下:
dat.txt
-0.227109 -0.209046 0.467072 200.0
-0.413893 -0.168195 0.261523 400.0
-0.574753 -0.157890 0.809014 800.0
-0.731227 -0.152996 0.119975 1100.0
-0.876865 -0.138102 0.130902 1350.0
-0.101067 -0.131582 0.143611 1000.0
例子流:
nn=6
*dim,AXYZ,ARRAY,nn,4
*vread,AXYZ(1,1),dat,txt,,JIK,4,nn
(4e12.6)
*DIM,NODLOCS,ARRAY,nn,3
*DO,j,1,3,1
*DO,i,1,nn,1
NODLOCS(i,j)=AXYZ(i,j)
*ENDDO
*ENDDO
*DIM,TDIST,ARRAY,nn,1
*DO,NCS,1,nn,1
TDIST(NCS)=AXYZ(NCS,4)
*ENDDO
nxyz=2
*DIM,TC,ARRAY,nxyz,3
TC(1,1)=-0.3
TC(1,2)=-0.18
TC(1,3)=0.35
TC(2,1)=-0.8
TC(2,2)=-0.145
TC(2,3)=0.125
*DIM,TINTRPC,ARRAY,nxyz,1
*MOPER,TINTRPC,TC,MAP,TDIST,NODLOCS,3,,0
*CFOPEN,temp,txt
*VWRITE,TINTRPC(1,1)
(f12.5)
*CFCLOS 谢谢楼主的分享。我一直以为用sucr命令可以实现该功能呢(我的后处理一直没用过类似的功能)。如果还需要差值才能获取,那看来sucr命令的能力很弱了? 版主真是高手!收藏 好东西,收藏了 厉害!!!!!!!!! 正需要,但是没看懂 ,有高手能把那个观察任意点应力的mac改成求温度的吗? 这种插值方法如何用于后处理或者用于计算热应力?
谢谢 厉害!!!!!!!!! 感谢分享,支持原创
页:
[1]