ANSYS中实现高斯积分

ANSYS中实现高斯积分
一般数值模拟软件的求解过程均需要用到高斯积分公式,学过有限元的都知道将荷载转换为单元节点力的过程中需要用到高斯数值积分。ANSYS是一款优秀的数值软件,其丰富的二次开发系统有利于工程具体问题的解决。
如何利用ANSYS中的APDL语言开发出数值积分的公式?针对一般的四边形四节点单元,如何将体力转换成单元节点力。以下是一个小程序段,利用该程序段,可以将一般的体力(比如渗透力等非惯性力)转换为单元节点力,然后逐个对单元节点施加体荷载。
*DIM,X,ARRAY,4 !定义数组X用于存放单元整体坐标ξi
X(1)=-1 $X(2)=1 $X(3)=1 $X(4)=-1
*DIM,Y,ARRAY,4 !定义数组Y用于存放单元整体坐标ηi
Y(1)=-1 $Y(2)=-1 $Y(3)=1 $Y(4)=1

*DIM,XC,ARRAY,4 !定义数组XC用于存放单元整体坐标Xi
XC(1)=4.3$XC(2)=5.3$XC(3)=5.7$XC(4)=4.7
*DIM,YC,ARRAY,4 !定义数组YC用于存放单元整体坐标Yi
YC(1)=4.6$YC(2)=4.6$YC(3)=5.6$YC(4)=5.6
*DIM,F_N,ARRAY,4,2,2 !定义数组FN用于存放形函数Ni在单元节点或者Gauss点处值
*DIM,F_X,ARRAY,4,2,2 !定义数组FX用于存放形函数Ni对ξ求导后在单元节点或者Gauss点处值
*DIM,F_Y,ARRAY,4,2,2 !定义数组FY用于存放形函数Ni对η求导后在单元节点或者Gauss点处值
*DIM,D_X,ARRAY,4,2,2 !定义数组DX用于存放形函数Ni对x求导后在单元节点或者Gauss点处值
*DIM,D_Y,ARRAY,4,2,2 !定义数组DY用于存放形函数Ni对y求导后在单元节点或者Gauss点处值
*DIM,CC,ARRAY,4,2,2 !定义数组C用于存放Jacobi矩阵[J]中各元素在节点或者Gauss点处值

*DIM,Kxi,ARRAY,2
Kxi(1)=0.57735 $Kxi(2)=-Kxi(1)
*DIM,Eta,ARRAY,2
Eta(1)=0.57735 $Eta(2)=-Eta(1)

*DO,I,1,4
*DO,K,1,2
*DO,E,1,2
F_X(I,K,E)=X(I)*(1.0+Y(I)*Eta(E))/4.0
F_Y(I,K,E)=Y(I)*(1.0+X(I)*Kxi(K))/4.0
F_N(I,K,E)=(1.0+X(I)*Kxi(K))*(1.0+Y(I)*Eta(E))/4.0
*ENDDO
*ENDDO
*ENDDO

*DO,I,1,4
*DO,K,1,2
*DO,E,1,2
CC(I,K,E)=0.0
*ENDDO
*ENDDO
*ENDDO
*DO,I,1,4
*DO,K,1,2
*DO,E,1,2
CC(1,K,E)=CC(1,K,E)+F_X(I,K,E)*XC(I)
CC(2,K,E)=CC(2,K,E)+F_Y(I,K,E)*XC(I)
CC(3,K,E)=CC(3,K,E)+F_X(I,K,E)*YC(I)
CC(4,K,E)=CC(4,K,E)+F_Y(I,K,E)*YC(I)
*ENDDO
*ENDDO
*ENDDO
*DIM,DET,ARRAY,2,2
*DO,K,1,2
*DO,E,1,2
DET(K,E)=CC(1,K,E)*CC(4,K,E)-CC(2,K,E)*CC(3,K,E) !用于存储对应不同Gauss点的Jacobi矩阵的行列式
*ENDDO
*ENDDO

*DIM,J_TIDU,ARRAY,2 !单元的体力密度
J_TIDU(1)=-0.77$J_TIDU(2)=-1.102
!获得某个单元4个节点的等效渗透体积力
*DIM,TILI,ARRAY,4,2
*DO,I,1,4
*DO,J,1,2
TILI(I,J)=0.0
*ENDDO
*ENDDO
*DO,I,1,4
*DO,J,1,2
*DO,K,1,2
*DO,E,1,2
TILI(I,J)=TILI(I,J)+(1.0+X(I)*Kxi(K))*(1.0+Y(I)*Eta(E))/

4*J_TIDU(J)*DET(K,E) !计算单元四个节点X、Y方向的等效渗透渗透体积力
*ENDDO
*ENDDO
*ENDDO
*ENDDO


相关文档
最新文档