|
[Sponsors] |
Thermal stress prediction with elasticThermalSolidFoam - No contribution to UEqn? |
![]() |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
![]() |
![]() |
#1 |
Member
A. Bernath
Join Date: Jun 2011
Location: Karlsruhe, Germany
Posts: 39
Rep Power: 15 ![]() |
Hello all,
I'm trying to predict thermal stresses in a polymer that cures in a mold. At the same time I model the same problem with FEM (Abaqus) in order to compare the results. In order to simplify my problem, I started with a cube with 20x20x20 elements and 0.1m edge length. Only thermal expansion is taken into account at the moment. In the source code of the solver one can find the following lines: Code:
divSigmaExp = fvc::div ( mu*gradU.T() + lambda*(I*tr(gradU)) - (mu + lambda)*gradU, "div(sigma)" ) - gradThreeKalphaDeltaT; Does anyone have an idea what is wrong here? I've attached the case to this post. Thanks in advance for any help! Alex |
|
![]() |
![]() |
![]() |
![]() |
#2 | |||
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,091
Rep Power: 34 ![]() ![]() |
Hi,
I found a bug that was introduced in $FOAM_SRC/solidModels/constitutiveModel/tractionBoundaryGradient/tractionBoundaryGradient.C in foam-extend-3.1: Change this line: Quote:
Quote:
I tried your case and it seems to work now. One comment on your case: in general I have found that the solution tolerance for U should typically be at least 1e-6, in the solidMechanics dict in system/fvSolution: Quote:
Philip EDIT: Ah I see you already found this problem and reported it: http://sourceforge.net/p/openfoam-ex...ndrelease/258/ Last edited by bigphil; November 15, 2014 at 06:48. Reason: Just found bug report |
||||
![]() |
![]() |
![]() |
![]() |
#3 | |
Member
A. Bernath
Join Date: Jun 2011
Location: Karlsruhe, Germany
Posts: 39
Rep Power: 15 ![]() |
Hi Philip,
thanks for your answer. Your right, it works now, at least for the isotropic case =) I also added TEqn to your orthotropic solver (elasticOrthoSolidFoam) and modified divSigmaExp like this: Code:
if(divSigmaExpMethod == "standard") { //- calculating the full gradient has good convergence and no high freq oscillations divSigmaExp = fvc::div( (C && (symm(gradU) - alphaOrtho*(T-T0))) - (K & gradU), "div(sigma)" ); } However, the solver doesn't converge. I attached the case to this post. Do you have an idea what could be the problem here? Quote:
Have a nice weekend! Alex |
||
![]() |
![]() |
![]() |
![]() |
#4 | |
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,091
Rep Power: 34 ![]() ![]() |
I will have a look at the addition of an orthotropic thermal term.
Quote:
Philip |
||
![]() |
![]() |
![]() |
![]() |
#5 |
Member
A. Bernath
Join Date: Jun 2011
Location: Karlsruhe, Germany
Posts: 39
Rep Power: 15 ![]() |
Hi Philip,
I'm facing another problem with the thermal part of the solver. If there is only very small change in temperature within the domain, the TEqn doesn't converge even after 10000 iterations. However, if temperature changes occur, it converges really fast. Did you also observe this behavior? Is there a reason why TEqn is first solved and then T (not TEqn) is relaxed? I looked into the fluid solver codes and they always relax TEqn first and then solve it. However, modifying the solver that way doesn't help so it has to be something else. Thanks, Alex |
|
![]() |
![]() |
![]() |
![]() |
#6 |
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,091
Rep Power: 34 ![]() ![]() |
Yes I've noticed this too.
A very small amount of equation under-relaxation will fix this. Put this line after the TEqn is created (and before it is solved): Code:
TEqn.relax(TEqnRelaxFac); Code:
scalar TEqnRelaxFac = -1; if (mesh.solutionDict().relax("TEqn")) { TEqnRelaxFac = mesh.solutionDict().relaxationFactor("TEqn"); } Code:
relaxationFactors { TEqn 0.999; } Philip |
|
![]() |
![]() |
![]() |
![]() |
#7 |
Member
A. Bernath
Join Date: Jun 2011
Location: Karlsruhe, Germany
Posts: 39
Rep Power: 15 ![]() |
Hi Philip,
thanks, will give it a try ![]() Is it possible to under-relaxate UEqn/DUEqn too or would that introduce some error? In CFD it's applied to both p and U so maybe this could be of advantage here too. Regards, Alex |
|
![]() |
![]() |
![]() |
![]() |
#8 | |
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,091
Rep Power: 34 ![]() ![]() |
Quote:
Typically only a very small amount is needed, between 0.99 and 0.999 often works well. Philip |
||
![]() |
![]() |
![]() |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Thermal and stress modelling of a dam | quimperval | OpenFOAM Running, Solving & CFD | 0 | August 22, 2014 11:08 |
CFX-Structural thermal stress analysis | Ravikiran | CFX | 1 | February 22, 2010 08:57 |
Transient Thermal Stress Distribution | Ijaz | CFX | 0 | February 19, 2009 16:27 |
thermal stress analysis? | Jinfeng | Main CFD Forum | 1 | January 21, 2009 08:26 |
Info: Short Course On Thermal Design of Electronic Equipment | Arnold Free | Main CFD Forum | 0 | August 10, 1999 10:18 |