开源fem程序calculix中的线单元积分点讲解
概述 开源程序calculix采用fortran语言编写,该程序自带前处理界面,从abaqus导出的inp文件可以直接被calculix读取计算,我在之前的帖子中讲过如何用calculix导入喷气发动机模型,下面是一个图片,有兴趣可以点击链接看看。 本次帖子学习开源fem程序calculix中的积分点子程序,子程序的名字为gauss.f,里面包含calculix所有单元的积分点数据,包括gauss积分和hammer积分,详细给出了低阶和高阶积分的积分点坐标和权重数据,下面详细讲解这个子程序。子程序概况 这个子程序在开始给出了一系列的注释,主要是说明这个子程序包含了所有单元的gauss和hammer数值积分点坐标以及对应的积分权重。如下所示!!containsGausspointinformation!!gauss1d1:lin,1-pointintegration(1integrationpoint)!gauss1d2:lin,2-pointintegration(2integrationpoints)!gauss1d3:lin,3-pointintegration(3integrationpoints)!gauss2d1:quad,1-pointintegration(1integrationpoint)!gauss2d2:quad,2-pointintegration(4integrationpoints)!gauss2d3:quad,3-pointintegration(9integrationpoints)!gauss2d4:tri,1integrationpoint!gauss2d5:tri,3integrationpoints!gauss2d6:tri,7integrationpoints!gauss3d1:hex,1-pointintegration(1integrationpoint)!gauss3d2:hex,2-pointintegration(8integrationpoints)!gauss3d3:hex,3-pointintegration(27integrationpoints)!gauss3d4:tet,1integrationpoint!gauss3d5:tet,4integrationpoints!gauss3d6:tet,15integrationpoints!gauss3d7:wedge,2integrationpoints!gauss3d8:wedge,9integrationpoints!gauss3d9:wedge,18integrationpoints!gauss3d10:wedge,6integrationpoints!gauss3d11:wedge,1integrationpoints!gauss3d12:hex,14integrationpoints(forc3d27)!gauss3d13:hex,2x5x5=50integrationpoints(forbeams)!gauss3d14:wedge,1integrationpoint!!weight2d1,...containstheweights!! 可见calculix中的单元大致可分为三类:线单元(line)、二维单元(2d)和三维单元(3d)。积分点的数据表示为:gaussxdy,其中,表达式里面的x代表单元的维度,当x=1时,单元是一维的,即线单元,以此类推;y代表积分点的个数;当y=1时,只采用一个积分点,以此类推,假如y=14,则说明单元采用了14个积分点。 下面我会在每一类单元中给出若干个单元的图示,包括单元的形状和积分点位置图示。线单元积分公式 根据等参元理论,在一维线单元中,刚度矩阵或者质量矩阵,总可以写成如下形式 上述公式是连续的积分,如果无法导出解析解,那就无法直接用计算机求解,虽然一些简单的单元,如线单元和三角形单元可以将刚度矩阵解析求解,但为了通用性,我们还是经常采用数值求解,常常采用的数值积分有gauss积分和hammer积分,对于线单元的gauss积分有如下表达式 其中为积分点个数,为积分点坐标对应的权重。下面就依次讲解calculix线单元的三种gauss积分方式。 线单元(line)1点积分 线单元的1个积分点坐标对应的代码为gauss1d1=reshape((/0.d0/),(/1,1/)) 对应的权重代码为weight1d1=(/2.d0/) 采用1个积分点计算线单元,则图示为 上面1个标有颜色的点,就是积分点的位置,根据等参元及数值积分的理论,当时,有线单元(line)2点积分 线单元的2个积分点坐标对应的代码为gauss1d2=reshape((/&-0.577350269189626d0,0.577350269189626d0/),(/1,2/)) 对应的权重代码为weight1d2=(/1.d0,1.d0/) 采用2个积分点计算线单元,则图示为 上面两个标有颜色的点,就是积分点的位置,根据等参元及数值积分的理论,当时,有 对于质量矩阵的求解,有类似的表达式,在此不过多赘述。线单元(line)3点积分 线单元的2个积分点坐标对应的代码为gauss1d3=reshape((/&-0.774596669241483d0,0.d0,0.774596669241483d0/),(/1,3/)) 对应的权重代码为weight1d3=(/0.555555555555555d0,0.888888888888888d0,&0.555555555555555d0/) 采用3个积分点计算线单元,则图示为 上面3个标有颜色的点,就是积分点的位置,根据等参元及数值积分的理论,当时,有 对于质量矩阵的求解,有类似的表达式,在此不过多赘述。来源:有限元先生