编辑: 阿拉蕾 2017-09-16

390 end do GDisp=A(1:N,N+1) end subroutine Gauss end module Lxz_Tools module TypDef use Lxz_Tools implicit none integer(ikind) :: NNode, NSolid, NShell !节点数量,实体单元数量,壳单元数量 integer(ikind) :: NMaterial, NRealConstant !材料数量, 实参数数量 integer(ikind) :: NGlbDOF !整体自由度总数 type Typ_Node !定义节点类型 real(rkind) :: coord(3) !节点坐标 integer(ikind) :: EleTyp !从属单元类型 1-soild 单元,2-shell 单元 integer(ikind) :: GDOF(6) !整体自由度编码 如果不从属与 shell,则GDOF(4:6)=0 real(rkind) :: disp(6) !节点位移 end type typ_Node type Typ_Material !定义材料 real(rkind) :: E !弹性模量 real(rkind) :: mu !泊松比 end type Typ_Material type Typ_RealConstant !定义实参数 real(rkind) :: Thickness !板单元厚度 end type Typ_RealConstant type Typ_Plate !定义板单元 ! real(rkind) :: NCoord(2,4) !节点的局部坐标 ! integer(ikind) :: NodeNo(4) !节点编号 real(rkind) :: t !板厚度 ! real(rkind) :: E,MU !弹性模量 ! real(rkind) :: D(5,5) ![D]矩阵 ! real(rkind) :: B(5,12) ![B]矩阵 ! real(rkind) :: EK(12,12) ![EK]单元刚度矩阵 ! real(rkind) :: S(5,12) ![S]单元应力矩阵 ! real(rkind) :: GaussPoint(2,4) !高斯积分点坐标 ! real(rkind) :: N(4,4) !形函数矩阵, 四个高斯积分点 ! real(rkind) :: dN(4,2,4) !形函数矩阵局部坐标系下求导, 四个高斯积分点 ! real(rkind) :: d0(4,2,4) !形函数矩阵整体坐标系下求导, 四个高斯积分点 ! real(rkind) :: Jacobi(2,2,4) !Jacobi 矩阵, 四个高斯积分点 ! real(rkind) :: InvJ(2,2,4) !Jacobi 矩阵的逆矩阵 ! real(rkind) :: SJ(4) !|J|,Jacobi 矩阵行列式的值, 四个高斯积分点 ! ! end type Typ_Plate ! type Typ_Membrance !定义膜单元 real(rkind) :: NCoord(2,4) !节点的局部坐标 ! integer(ikind) :: NodeNo(4) !节点编号 real(rkind)::EK(8,8),B(3,8),D(3,3),J(2,2) real(rkind)::E,MU,t end type Typ_Membrance type Typ_Solid !定义实体单元 integer(ikind) :: NodeNo(8) !节点编号 integer(ikind) :: MatNo !材料号 real(rkind) :: E,MU real(rkind) :: EK(24,24) end type Typ_Solid type Typ_Shell !定义壳单元 integer(ikind) :: NodeNo(4) !节点坐标 integer(ikind) :: MatNo !材料号 integer(ikind) :: RealNo !实参数号 real(rkind) :: E,MU,t type(typ_Plate) :: S_Plate(1) !Shell 里面的板部分 type(typ_Membrance) :: S_Membrance(1) !shell 里面膜部分 real(rkind) :: TransMatrix(24,24) !坐标转换矩阵 real(rkind) :: EK(24,24) !刚度矩阵 real(rkind) :: NCoord(2,4) !节点的局部坐标 end type Typ_Shell type Typ_Load integer(ikind) :: NodeNo integer(ikind) :: DOF real(rkind) :: Value end type Typ_Load type Typ_Support integer(ikind) :: NodeNo integer(ikind) :: DOF end type Typ_Support contains subroutine TypDef_DOFCount(Node, Solid, Shell) !单元自由度编码子程序 type(Typ_Node) :: Node(:) type(Typ_Solid) :: Solid(:) type(Typ_Shell) :: Shell(:) integer(ikind) :: i,j,k !循环变量 integer(ikind) :: TempDOF !总体自由度的工作变量 Node(:)%EleTyp=1 !假设所有节点都是只从属于实体单元 do i=1, NNode do j=1, NShell do k=1,4 if(Shell(j)%NodeNo(k)==i) then !如果壳单元 j 的第 k 个节点和 i 节点相同 Node(i)%EleTyp=2;

! 那么节点 i 从属于壳单元 end if end do ! for k end do !for j end do ! for i !以下开始计算各个单元的自由度数量和总体自由度数量 TempDOF=0 !清空变量 do i=1, NNode if(Node(i)%EleTyp==1) then !如果节点只从属与实体单元 Node(i)%GDOF(1)=TempDOF+1;

Node(i)%GDOF(2)=TempDOF+2;

Node(i)%GDOF(3)=TempDOF+3;

Node(i)%GDOF(4:6)=0;

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题