I’m trying to create a thermal simulation model using CalculiX in which the material properties change depending on the temperature history of the respective nodes / elements. After exceeding a certain temperature, the material properties should change from one pre-defined table to another for the respective element.
Imagine a metal powder that has certain material properties which differ significantly from those of a bulk material. After exceeding the melting point temperature, the material properties of the powder and solid (bulk) material should be the same (equal to those of the liquid material). When the (previous) powder material falls below the melting point again, however, the material properties of the bulk material should be applied (as no powder is “recreated” after solidification).
I was thinking of realizing this by a state variable which indicates the current material state and applies the correct material properties to that state. I had read something about UMAT subroutines which might work for this, but due to lack of experience I am unsure how to best implement something like this.
I can imagine, it is not a big deal for human being to do that. The question is, how to convey the imagination to CalculiX.
There is *USER MATERIAL card so. It is from ccx manual:
"This option is used to define the properties of a user-defined material. For
a user-defined material a material subroutine has to be provided, see Sections
9.5 and 9.6. ". If you can figure out how to define metal powder, let us know.
For clarification: I know how I can set temperature-dependent material properties. The challenge is to change those material properties depending on the temperature history of the element.
The following figure illustrates the problem. I am able to implement the bulk (red) and simple powder (blue) material properties. However, what I would like to have is the green curve. After exceeding the melting temperature, the element should change its material properties from the blue curve to the red curve. I do not know before the simulation when the element reaches this temperature, so a hard-coded MATERIAL CHANGE does not work.
Then a subroutine will be necessary. You probably won’t find any examples of such codes for CalculiX but there are some for Abaqus in various research papers and other sources. Search for phase transformations in additive manufacturing process simulations. In fact, this functionality is built into Abaqus for a few releases.
So the material law depends on the load history per element. You need to implement your own local history variables for that. Chapter 6.8.13 of the manual (v 2.20) could perhaps serve as a template/inspiration for what’s necessary.