This subroutine using VUSDFLD is to
determine position of damage and provide evolution of damage surface, when some
elements failed. The “outer” damage status will transfer to “inner” damage
status.
Now the problem is that when I read the
coordinates of material points, using coordMp(k,1),coordMp(k,1),coordMp(k,1), it returns wrong locations. Then I
tried a very simple loop:
Do
k=1,nblock
stateNew(k,7)=nblock
end Do
I found the number of material points
(namely, nblock) varied! First time
I ran this loop, I got the contour of state variable 7 (SDV7) shown below. The
SDV7 were various. But from the subroutine they were supposed to be same.
Then I coarsen the mesh, and get a
different result, SDV7 of every element were same (equal to the material point
number=125)! Shown below:
Then I substituted coordMp(1,1) for nblock
in the above-mentioned loop, and found similar phenomenon.
I wonder if the number of material points
and their coordinates will vary in a loop? Those results are beyond my expectation.
Is that Fortran grammar problem or misunderstanding on subroutine in Abaqus?
I attached the subroutine "position.for" and its "Job-1.inp" below. But I switch their extensions into .txt for uploading.
Thank you all.