ABAQUS子程序提取出来的数据滞后一个单元
标题可能不太好理解,请看下图:我期望提取出来的数据结果(图1):
我实际提取出来的数据结果(图2):
就是会往x轴方向滞后一个单元,请问这是为什么呀?
我采用了两种方法提取数据,结果都如图2所示(唉)
方法一:
我使用的子程序:USDFLD,DISP(DISP用于定义边界孔隙压力)
我提取数据的思路:在USDFLD中调取数据写入txt文件中(同时存入STATEV(2)中),并在DISP中读取该文件的数据,写入U(1)中,按道理讲,最后ABAQUS计算出来的结果应该是SDV2和POR完全一致才对,可是结果却滞后一个单元
方法二:
我使用的子程序:USDFLD,UVARM,URDFIL,DISP(DISP用于定义边界孔隙压力)
我提取数据的思路:在URDFIL中使用common语句创建公共块,与其他子程序共享数据,把同一个数据分别存在U(1)和STATEV(2)里面,想看看提取出的数据是什么样子,结果又如图2所示(唉)
为方便各位大佬帮我找出错误(求求了),现把inp文件和方法二中的子程序的主要语句粘贴如下:
inp文件(只粘贴了与文件输出有关的语句):
......
** OUTPUT REQUESTS
**
*Restart, write, frequency=0
**
** FIELD OUTPUT: F-Output-1
**
*Output, field
*Node Output
CF, COORD, NT, POR, RF, U
*Element Output, directions=YES
FV, LE, S, SAT, SDV, TEMP, UVARM, VOIDR
*Contact Output
CDISP, CSTRESS
**
** HISTORY OUTPUT: H-Output-1
**
*Output, history, variable=PRESELECT
*EL print,FREQ=0
UVARM1, UVARM2, UVARM3
*EL FILE, FREQ=1
VOIDR, POR, UVARM, TEMP
*End Step
子程序(方法二)(为方便查看,尽量简短,只粘贴主要语句,其余语句与帮助手册中各个子程序的使用界面相同):
USDFLD:
real,dimension(100000):: Etest
real,dimension(100000):: TEMP1
real,dimension(100000):: DTIME1
common/EandTEMP/Etest,TEMP1,DTIME1
DTIME1(1)=DTIME
statev(1)=TEMP1(1)
statev(2)=Etest(1)
STATEV(3)=DTIME1(1)UVARM:
real,dimension(100000):: Etest
real,dimension(100000):: TEMP1
real,dimension(100000):: DTIME1
common/EandTEMP/Etest,TEMP1,DTIME1
CALL GETVRM('TEMP',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,
&MATLAYO,LACCFLA)
TEMP1(1)=ARRAY(1)
UVAR(1)=ARRAY(1)
UVAR(2)=Etest(1)
UVAR(3)=DTIME1(1)URDFIL:
real,dimension(100000):: Etest
real,dimension(100000):: TEMP1
real,dimension(100000):: DTIME1
common/EandTEMP/Etest,TEMP1,DTIME1
n=0
C
C FIND CURRENT INCREMENT.
C CALL DBFILE(0,ARRAY,JRCD)里的0是指LOP=0
CALL POSFIL(KSTEP,KINC,ARRAY,JRCD)
DO K1=1,999999
CALL DBFILE(0,ARRAY,JRCD)
IF (JRCD .NE. 0) GO TO 110
KEY=JRRAY(1,2)
IF (KEY.EQ.87) THEN
n=n+1
TEMP1(n)=ARRAY(3)
Etest(n)=ARRAY(4)
DTIME1(n)=ARRAY(5)
END IF
END DO
110CONTINUE
C
LOVRWRT=1DISP:
real:: Es(1000000)
real,dimension(100000):: Etest
real,dimension(100000):: TEMP1
real,dimension(100000):: DTIME1
common/EandTEMP/Etest,TEMP1,DTIME1
U(1)=10*COORDS(1)
Es(NODE)=10*COORDS(1)
Etest(1)=Es(NODE)
页:
[1]