Prof. Govindjee, thanks for your suggestions. I set up a one-element testing model, and used it to fix a few bugs in my code. Now I can get the results matching those from FEAP except for this case. The input file is attached to this message. The left surface can shrink, and all degrees of freedoms on the right surface are constrained. The displacement control is applied on the right surface nodes in x direction up to 0.002 via 10 loading steps. The first 8 steps are in elastic stage, and the plasticity is activated in the last two steps. I setup this case in Abaqus too, but got different results from FEAP.
The batch block is shown below. For the first gaussian point, after applying "tang,,1", the strain vector is (0,0,0,0,0,0); after another applying "tang,,1", the strain vector is (2.0000000000000004E-004 -1.5849364905389041E-005 -1.5849364905389034E-005 1.5849364905389041E-005 9.7408788934244539E-021 5.9150635094611017E-005).
I am confused about the strain vector after applying "tang,,1" in the first time. Should it be (0.0002,0,0,0,0,0) because of the displacement loading in x direction?
batch
opti
dt,,1
LOOP,,10
TIME
LOOP,,30
TANG,,1
plot,mesh
NEXT
plot,pers
plot,hide
disp,node,1,1,1
reac,coor,1,1.0
PLOT,PSTRe,6,,1
NEXT
end