abaqus子程序求特征向量
时间: 2023-09-04 17:06:54 浏览: 209
在Abaqus中,可以使用User Subroutine VUEL来求解特征向量。以下是一个示例子程序:
```
SUBROUTINE VUEL(DTIME,CMNAME,NNODE,NDOF,VCOORD,COORDS, \
1 NEN,NCP,NPROP,PROP,NLAYER,THICK,STATEV, \
2 NOEL,NPT,XI,CELENT,S,JLTYP,K,LAYER,KSPT,KSTEP,KINC, \
3 ECOORD,ERESID,EMATRX,TIME,DTIME,CMNAME_LEN)
DIMENSION VCOORD(NDOF,NNODE),COORDS(NDOF,NNODE),PROP(NPROP),THICK(NLAYER), \
1 STATEV(*),XI(*),CELENT(*),S(*),JLTYP(*),K(*),LAYER(*),KSPT(*), \
2 ECOORD(*),ERESID(*),EMATRX(*)
C Define variables for eigenvalue analysis
PARAMETER (MAXEIGEN=10)
PARAMETER (MAXITER=100)
DIMENSION EVALUE(MAXEIGEN),EVECTOR(NDOF*NNODE,MAXEIGEN), \
1 WORK((2*NDOF*NNODE+MAXEIGEN)*(MAXEIGEN+8))
C Set up eigenvalue analysis parameters
NMODES = MAXEIGEN
TOL = 1.0E-8
MAXIT = MAXITER
C Call Abaqus eigenvalue solver
CALL VUEL_SOLVER(NNODE,NDOF,VCOORD,NEN,NCP,NPROP,PROP,NLAYER,THICK,STATEV, \
1 NOEL,NPT,XI,CELENT,S,JLTYP,K,LAYER,KSPT,KSTEP,KINC, \
2 EVALUE,EVECTOR,NMODES,TOL,MAXIT,WORK)
C Process eigenvalue results
DO I = 1, NMODES
WRITE(*,*) 'Mode ',I,' Eigenvalue = ',EVALUE(I)
WRITE(*,*) 'Mode ',I,' Eigenvector = '
DO J = 1, NDOF*NNODE
WRITE(*,*) EVECTOR(J,I)
END DO
END DO
RETURN
END
```
在这个示例程序中,我们定义了一个名为VUEL的子程序。该子程序调用了一个名为VUEL_SOLVER的Abqaqus内置函数,用于求解特征值和特征向量。VUEL_SOLVER函数需要传递一些输入参数,如节点数、自由度数、坐标等,以及一些输出参数,如特征值和特征向量。在VUEL子程序中,我们将输出结果进行处理,并将其写入输出文件中。
需要注意的是,VUEL子程序需要进行编译,并在Abaqus中进行调用。在Abaqus中,可以通过定义一个用户材料来调用VUEL子程序。在这个用户材料中,可以定义材料性质、状态变量等,并将VUEL子程序与该用户材料进行关联。在进行分析时,Abaqus会调用用户材料,并在其中调用VUEL子程序进行特征值分析。
阅读全文