Required Counter for each Element
Required Counter for each Element
(OP)
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.
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.





RE: Required Counter for each Element
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.
RE: Required Counter for each Element
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
RE: Required Counter for each Element
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
There is no STATEV. Thus, the STATEV in the
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
RE: Required Counter for each Element
RE: Required Counter for each Element
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.
RE: Required Counter for each Element
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.
RE: Required Counter for each Element
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.