right, good memory. Didn’t we discuss something similar related to a large deformation with linear elastic model in the past which we concluded was inconsistent? I can’t find the post.
I have edited the code a little and made some progress in finding a solution with help of this paper:
https://www.researchgate.net/publication/47749416_Finite-strain_thermoelasticity_based_on_multiplicative_decomposition_of_deformation_gradient
In calcmechstrain.f I replaced the additive decomposition of the mechanical and thermal part by a multiplicative decomposition and then used the mechanical part of the deformation gradient to compute the strain.
Fme = Ftot Fth-1 [see eq. (37)]
Eme = 0.5*(FmeT*Fme- I)
In resultsmech.f I transformed the 2. PK stress Sme (computed for Eme) by
S = det(Fth)*Fth-1SmeFth-T [see eq. (59)]
Now the results are what I expect based on analytical solutions.
The maximum deflection looks good with wmax = 0.274m (analytical: 0.2744m)
The maximum stress at the fixed end is σxx = 2.24e9 N/m²(analytical: 2.21e9 N/m²)
The maximum mechanical strain at the fixed end is Exx = 1.06e-2 [-] (analytical: 1.05e-2 [-])
Thermal expansion and cload are applied in the same step.
I will try out a bit more to see if the implementation in other models is correct.
Please let me know what else I can check or whether I should keep you up to date.
-Felix
Wow. That’s amazing. Please submit the bug and your fix to Github! Issues · Dhondtguido/CalculiX · GitHub
For such an apparently important technique, that paper looks strangely recent (2002) but from its references, the multiplicative decomposition dates back to 1964-1970 so I guess it’s really that older one you used?
The concept is older than the linked paper with reference to Stojanovic’s publications from the 1960s.
I decided to link this newer one because it is freely available and I currently only have this one.
Currently, some simulations do not converge. Perhaps because I have not yet transformed the tangent modulus. As soon as I have that I will put a request on github with my code.
Hi Felix,
very interesting thread. I am looking at the paper you mentioned, but for the time being I had the following remarks:
- the implementation in CalculiX with NLGEOM is a linearization of the multiplicative decomposition, i.e. alphaDelta(T) is subtracted from F before building E and it is not subtracted from E. Thus, the approximation is rather F/(1+alpha Delta(T)) approx F(1-alpha Delta(T)) approx F-alpha Delta (T) I, which of course is only valid for alpha Delta (T) small
- for usual applications (e.g. steel with Delta (T) = 1000) alpha Delta(T) is 1.2e-2, which is small. The application here is an exception.
- I was not aware that also S had to be modified, this may have been the essential point.
- also the tangent has to be modified, however, this should only influence the convergence rate (or, in the worst case, lead to divergence).
- If I am not wrong, not doing the linearization of the multiplicative decomposition leads to an expansion coefficient which is logarithmic, i.e. it is based on the actual length and not the initial length while measuring the expansion coefficient. The usual way to measure alpha, though, is linear, i.e. based on the original length. This problem actually occurs in Abaqus: if NLGEOM is off alpha has to be entered as linear, if it is on, as logarithmic. There is a formula to switch, however, if e.g. the user switches on NLGEOM in some step, this causes problems.
- I will look into that in the next days/weeks can get back. Thanks for digging into that!
Guido