各位达人,小弟我第一次发求助帖,还请高手多多指教。
对与子程序UTRACLOAD,有个一个参数是T_USER,帮助文件里是这么说的:
T_USER Loading direction of the distributed traction load. T_USER is passed into the routine as the load direction specified as part of the element-based or surface-based distributed load definition. The vector T_USER passed out of the subroutine is used as the initial loading direction discussed in “Distributed loads,” Section 30.4.3 of the Abaqus Analysis User's Manual. The direction of T_USER as defined by the subroutine should not change during a step. If it does, convergence difficulties might arise. Load directions are needed only for a nonuniform general surface traction, shear surface traction, and general edge traction. If a direction is defined for the nonuniform normal edge traction, shear edge traction, transverse edge traction, or edge moment, it will be ignored. See “Distributed loads,” Section 30.4.3 of the Abaqus Analysis User's Manual, for details。
现在我在研究别人的模型的时候,里面的子程序是这么施加的:
SUBROUTINE UTRACLOAD(ALPHA,T_USER,KSTEP,KINC,TIME,NOEL,NPT, COORDS,DIRCOS,JLTYP,SNAME) C INCLUDE 'ABA_PARAM.INC' C DIMENSION T_USER(3), TIME(2), COORDS (3), DIRCOS(3,3) CHARACTER*80 SNAME Real PLOAD C IF (T_USER(3) .EQ. 1.0) THEN PLOAD=330.3 ALPHA=[function] ******** C T_USER(1)=0.0 T_USER(2)=0.0 T_USER(3)=1.0 C ELSE PLOAD=220.2 ALPHA=[function] ******** T_USER(1)=1.0 T_USER(2)=0.0 T_USER(3)=0.0 C END IF RETURN END 现在我不明白的是程序里的红色的地方,既然T_USER(3)的方向是由模型里传入,那么,既然在IF模块里已经定义了T_USER(3) .EQ. 1.0,那么为什么要在if模块结束的时候,还要再次定义一下:
T_USER(1)=0.0 T_USER(2)=0.0 T_USER(3)=1.0 这个呢??
麻烦高手给解释一下,谢谢……
|