Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations IDS on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Required Counter for each Element 1

Status
Not open for further replies.

Sandness

Materials
Aug 8, 2006
4
I'm modeling the curing of a composite rod with exothermic epoxy. For this application, I've been working with the HETVAL user subroutine. For the heat generation, I'd like to have a counter imbedded into each element to record how heat is released; once this counter reaches a specific value (i.e. 1.00), the heat generation value is bypassed for that element. Since this epoxy only starts reacting above 80 degrees Celsius and different elements will activate at different times, I cannot use time or temperature to control the heat generation.

From reading the documentation, I'm given the impression that the STATEV array might be useful for this application. However, I am uncertain how to work with it and designate the element number for this array when it is called. It does seem that the UMATH routine allows the use of NOEL (element number) value, yet the STATEV for that routine appears to be used for something else. Any advice I can receive would be greatly appreciated.
 
Replies continue below

Recommended for you

You can use STATEV variables, but unfortunately HETVAL is not provided with element number and integration point. Thus you have no spatial information regarding to the integration point HETVAL is called for.


If you need to identify the integration points in HETVAL the following approach might work:
-the SDVINI subroutine is used to initiate the STATEV variable at each integration point and is called only once at the beginning of the analysis.
-the SDVINI is provided with the element number (NOEL), the integration point number (NPT) and also the coordinates of the integration point (COORDS).
-you can initiate some STATEV variables with this information, for example in SDVINI

STATEV(1)=NOEL
STATEV(2)=NPT
STATEV(3)=COORDS(1)
STATEV(4)=COORDS(2)
(and STATEV(5)=COORDS(3) for the 3D problems)
you can add an extra STATEV var for your counter which you are going to update in HETVAL

The STATEV variables can be plotted in CAE as any other scalar quantity.

 
Thanks for your reply, the SDVINI subroutine was definitely what I was looking for. As far as I can tell, the only part of the subroutine I require is the noel portion. However, there must be still something that I am doing wrong since, after running a test, all the SDV values remained zero throughout the entire duration. If possible, perhaps you (or another generous engineer) could review my code and point me in the right direction. My knowledge of how ABAQUS transfers data is quite limited and I haven’t had much luck with the documentation.

For this simple test, I’ve made a cylinder that is divided into 96 elements; since I have 96 elements and I need a counter for each element, I need STATEV with a dimension of 97. Heat is applied to one side with the desire to heat it to above 80 degrees, at which time the heat generation will overwhelm the external heat transfer and the temperature will be raised rapidly. After releasing heat for one second (10 steps), the counter will have reached 1.00 signifying that the curing process is completed, causing no more internal heat is released.

subroutine sdvini(statev,coords,nstatv,ncrds,noel,npt,layer,kspt)
C
include 'aba_param.inc'
C
dimension statev(nstatv),coords(ncrds)
C
statev(1)=noel
C
return
end
C
subroutine hetval(cmname,temp,time,dtime,svar,flux,predef,dpred)
C
include 'aba_param.inc'
C
character*80 cmname
C
dimension temp(2),statev(97),predef(1),time(2),flux(2),dpred(1)
C
noel = statev(1)
cure = statev(noel+1)
tempatT = temp(1)
ts = 80
C
if (cure >= 1.0) then
flux(1) = 0
else if (tempatT > ts) then
flux(1) = 500.00
cure = cure + 0.1
else
flux(1) = 0
end if
C
statev(noel+1) = cure
C
return
end
 
Hi,
1. What ABAQUS version do you use ? I am (still) using v6.5
and the HETVAL interface looks different:

SUBROUTINE HETVAL(CMNAME,TEMP,TIME,DTIME,STATEV,FLUX, PREDEF,DPRED)

You should use (rather must use) the subroutine templates provided in the documentation, (i.e. ABAQUS (Analysis) User's Manual- > User subroutines). I strongly recommend you to read the documentation part on user subroutines!!!.

Your HETVAL interface is
subroutine hetval(cmname,temp,time,dtime,svar,flux,predef,dpred)

There is no STATEV. Thus, the STATEV in the
dimension temp(2),statev(97),predef(1),time(2),flux(2),dpred(1)
is different from the one in SDVINI.

If the interface is correct, then I suspect that SVAR plays the role of STATEV. You have to check if they refer to the same data. If they refer to the same data, then SVAR should be have the same size as STATEV.

2. I was not clear when I explained the usage of SDVINI.

The SDVINI and HETVAL are called for each material (integration point), and you should dimension the array size for only 1 integration point, not for the entire model.

At each integration point you can use 'nstatv' state variables, which are stored in the STATEV vector. To put it this way, each integration point has its own STATEV vector.

The number of state variable (=size of the STATEV vector)

For example if you need 2 state variables then nstatv will be passed to SDVINI as having the value 2. Thus, in SDVINI you will only have to deal with:
STATEV(1) and STATEV(2)

Very important: You need to define the number of state variables per integration point when you define the material properties by setting the DEPVAR property.
(nstatv - i.e. the size of STATEV vector- will be equal to the number of state variables you set with the DEPVAR property)

Also, in order to have the user subroutin SDVINI called you have to add
*INITIAL CONDITIONS, TYPE=SOLUTION, USER

If you are not sure what values a certain variable takes or if a subroutine is called and when is called, you can use:
write(6,*),"STATEVs values: ",STATEV(1),STATEV(2), "etc."
->to write in the job_name.dat file
write(7,*),"bla bla"
->to write in the job_name.msg file

 
That reply cleared up a lot of confusion about STATEV, thanks again for your help. I tried everything and it worked wonderfully. As for using svar in HETVAL, it was indeed a typo, one that I believe I gained from looking at another person’s old subroutine. I had it there for so long that I wouldn’t have noticed the obvious mistake. Catching that is greatly appreciated.
 
Hi sandness!

It is interesting to know about use of HETVAL in ABAQUS simulation work. I agree with you that use of counter is very good idea.

Let me say first that I myself quite new to this field. And I am also trying to do the same simulation - curing of composite with exothermic heat. I am wondering about a thing. Can you (anyone else) tell me what might be the value of the exothermic heat per unit mass (volume)? I think it evolves as a function of time and temperatuere?

Your kind answers will be highly appreciated.
 
The amount of heat generated during curing depends on the type of polymer you’ll be modeling. Ideally, this data can be obtained from the manufacturer or another reliable source. However, this is not always the case and there are several methods that can be used to determine this quantity, depending on how much accuracy is required. Having an exotherm generated from a DSC (Differential Scanning Calorimeter) will generate excellent data but can be quite expensive; an alternative method can be found in the ASTM standard D 2471, which may yield suitable values. Once this data is obtained, it can then be fitted into a polymerization model, where you can obtain the curing rate and total amount of heat released.

For my curing model, I used the equations developed by Loos and Springer. Their work dealt with the curing of prepreg and can be found in the Journal of Composite Materials during the 1980s. I’m not sure whether these equations are suitable for your model, but it does give you a place to start. If I misinterpreted your original question or you have further question, please let me know.
 
Hei, Thank you for the info about Journal of Composite Materials. I have found very useful information from the journal.

I would like to see the complete subroutine structure (SDVINI+HETVAL) thats used in curing simulations. I would very much appreciate your effort in posting it on this site.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor