UEL subroutine for a Heat Transfer Element
UEL subroutine for a Heat Transfer Element
(OP)
Hi,
I am writing a UEL subroutine in which I try to reproduce the Standard element for a heat transfer problem. The element that I am trying to implement is a four nodes tetrahedron, which would be the DC3D4 element in element library of Abaqus.
The UEL subroutine works, but when I compare the results with the same problem but using the DC3D4 element, it is not the same. I have checked the UEL subroutine a hundreds of times (formulation, shape functions, etc.) but I do not find the problem.
Could anyone suggest what I could do? How can I detect the error?
If you want, I can give you the scripts I am using, in case you also want to try.
I am writing a UEL subroutine in which I try to reproduce the Standard element for a heat transfer problem. The element that I am trying to implement is a four nodes tetrahedron, which would be the DC3D4 element in element library of Abaqus.
The UEL subroutine works, but when I compare the results with the same problem but using the DC3D4 element, it is not the same. I have checked the UEL subroutine a hundreds of times (formulation, shape functions, etc.) but I do not find the problem.
Could anyone suggest what I could do? How can I detect the error?
If you want, I can give you the scripts I am using, in case you also want to try.





RE: UEL subroutine for a Heat Transfer Element
Are you new to this forum? If so, please read these FAQ:
http://www.eng-tips.com/faqs.cfm?fid=376
http://www.eng-tips.com/faqs.cfm?fid=1083
RE: UEL subroutine for a Heat Transfer Element
I suggest you that you take a simple example, for instance a cube to check that everything is ok. It will probably help to identify the problem. By the way, where is the problem? The nodal temperatures are not correct, the fluxes...?
As IceBreakerSours indicates, if you upload your code we might be more helpful.
RE: UEL subroutine for a Heat Transfer Element
thanks for your comments.
eng23bio: as you said, I tried only with one element, with is just a tetrahedron. Please, find attached the files for both problem: the file called 'tetra_ht.inp' is the problem WITHOUT subroutine, using the DC3D4 element of Abaqus. The other two files, 'tetra_UEL.inp' and 'UEL_calor.for' are the INP file and subroutine for the same problem but defining the element through an UEL subroutine.
The problem that I found is that when I compare both problems (using CD3D4 element vs. UEL element) the nodal temperatures are differents.
I would really appretiate if anyone of you have a look to these files and see what is wrong. Thank you very much in advance!
RE: UEL subroutine for a Heat Transfer Element
Bottomline:
a) You need to use write command as often as you can to test parts of your code sequentially.
b) You may write a separate small piece of Fortran code which calls a given routine by providing the information it needs and writing output from within that routine. This technique will let you test each individual piece with known/provided input.
c) Finally, at least in Visual Studio, if it is set up correctly, you may use the VS debugging tools - while the solver is running.
Are you new to this forum? If so, please read these FAQ:
http://www.eng-tips.com/faqs.cfm?fid=376
http://www.eng-tips.com/faqs.cfm?fid=1083
RE: UEL subroutine for a Heat Transfer Element
About you comments:
a) about the write command - I don't know what you mean when you say "use write command". What I do, is to user the coman PRINT*,'', to check something I am interested in. Maybe your suggestion is easier, but please, could you give me an example of the use of write command?
b) I think that the subroutine is already organized in the way you said. There is a main subroutine that call other small pieces of code. Did you mean this?
c) I don't know how to use the VS debugging tool.
RE: UEL subroutine for a Heat Transfer Element
a) There is plenty of information available online.
b) No; what you have now is *not* what I meant. However, the idea is, in principle, the same. See this:
CODE --> FORTRAN
PROGRAM TEST INTEGER :: x,t,y,z INTEGER :: tmin, tmax, tinc INTEGER :: xmin, xmax, xinc INTEGER :: ymin, ymax, yinc INTEGER :: zmin, zmax, zinc DIMENSION COORDS(3), TIME(2) CHARACTER(LEN=80):: SNAME ! tmin = 0 tmax = 10 tinc = 1 xmin = 0 xmax = 10 xinc = 2 ymin = 0 ymax = 10 yinc = 5 zmin = 0 zmax = 10 zinc = 2 ! KSTEP=1 KINC=1 NOEL=1 NPT=1 LAYER=1 KSPT=1 JLTYP=1 SNAME='test' ! OPEN(UNIT=10,FILE='test.out') ! DO t = tmin,tmax,tinc TIME(1) = t DO x = xmin,xmax,xinc COORDS(1) = x DO y = ymin,ymax,yinc COORDS(2) = y DO z = zmin,zmax,zinc COORDS(3) = z CALL DLOAD (F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS, & JLTYP, SNAME) WRITE (10,*) t,x,y,z,F 20 FORMAT(5(2X,E16.9)) END DO END DO END DO END DO END PROGRAM TESTThis piece of code was suggested to test the DLOAD subroutine. You could use a similar trick.
c) Again, do some online search.
Are you new to this forum? If so, please read these FAQ:
http://www.eng-tips.com/faqs.cfm?fid=376
http://www.eng-tips.com/faqs.cfm?fid=1083