
[Sponsors] 
Steadystate thermal stress analysis by using solidDisplacementFoam 

LinkBack  Thread Tools  Display Modes 
August 30, 2012, 12:29 
Steadystate thermal stress analysis by using solidDisplacementFoam

#1 
Member
Sangeeta
Join Date: Jul 2012
Location: Kingston, Canada
Posts: 70
Rep Power: 4 
Hello everybody,
I am using OpenFoam 1.7 for solving thermal stress problem. Now I am solving some simple 2D cases and comparing with analytical solution. In this case there is a beam of length l and a rectangular cross section whose both ends are clamped as shown as below: fixedEnd1 II finxedEnd2 In this problem, initial temperature of beam is constant. Temperatures T and –T is rising and decreasing in the lower and upper surfaces respectively. I am using solidDisplacmentFoam for solving this case. I have following concerns: 1. I am doing this problem for steadystate therefore I have changed ddt schemes as steady state in system/fvScheme. Do I need to make more changed for getting steady state solution in solidDisplacementFoam? 2. Analytical solution for this case is 2.52e+08 at upper surface and 2.52e+08 at lower surface. My simulation results are around 2.25e+08 at upper surface and 2.25e+08 at lower surface. I am not getting accurate simulation results as compared to the analytical values. What do I need to do for getting good simulation results? I appreciate if someone could help me to solve this problem. Below is my test case, so that someone more experienced than me with OpenFoam con give a hint. Best regards and thanks in advance for any reply sar_gam05 0/D dimensions [0 1 0 0 0 0 0]; internalField uniform (0 0 0); boundaryField { topSurface { type tractionDisplacement; traction uniform (0 0 0); pressure uniform 0; value uniform (0 0 0); } bottomSurface { type tractionDisplacement; traction uniform (0 0 0); pressure uniform 0; value uniform (0 0 0); } fixedEnd1 { type fixedValue; value uniform (0 0 0); } fixedEnd2 { type fixedValue; value uniform (0 0 0); } defaultFaces { type empty; } } 0/T dimensions [0 0 0 1 0 0 0]; internalField uniform 0; boundaryField { topSurface { type fixedValue; value uniform 100; } bottomSurface { type fixedValue; value uniform 100; } fixedEnd1 { type zeroGradient; } fixedEnd2 { type zeroGradient; } frontAndBack { type empty; } } blockMesh convertToMeters 1; vertices ( (0 0 0) (30 0 0) (30 10 0) (0 10 0) (0 0 0.1) (30 0 0.1) (30 10 0.1) (0 10 0.1) ); blocks ( hex (0 1 2 3 4 5 6 7) (150 100 1) simpleGrading (1.0 1.0 1.0) ); edges ( ); patches ( patch topSurface ( (3 7 6 2) ) patch bottomSurface ( (4 0 1 5) ) patch fixedEnd1 ( (0 4 7 3) ) patch fixedEnd2 ( (1 2 6 5) ) ); mergePatchPairs ( ); 

August 31, 2012, 19:47 

#2  
Senior Member
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 565
Rep Power: 19 
Hi Sargam,
Quote:
Quote:
Philip 

September 4, 2012, 12:16 

#3  
Member
Sangeeta
Join Date: Jul 2012
Location: Kingston, Canada
Posts: 70
Rep Power: 4 
Quote:
Hi Philip, Thanks for the reply. Yes, I have used multiple time steps to get converged solution. I have gotten converged solution for this problem. Please find my test case, and system files as an attachment. I can not able to attach full log file because it is large in size therefore I am sending you some last iterations in log file that will help to show converged solution. Please feel free to give suggestions. Thanks, Sargam 

September 4, 2012, 15:56 

#4 
Senior Member
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 565
Rep Power: 19 
Hi Sargam,
I notice that your model is only converged to a residual of 1.5e5. Normally I would converge my solid models to at least 1e6. I recommend that you converge the model the a tighter tolerance (1e6, 1e7 or maybe even tighter and see if there is an effect). You could solve the model in one timestep if you change the number of outer correctors in your fvSolution: stressAnalysis { compactNormalStress no; thermalStress yes; nCorrectors 100000; D 1e06; T 1e06; } Also changing the linear solver relative tolerance to about 0.1 is normally optimum for solid models, and change the tolerance tighter than your solution tolerance: D { solver GAMG; tolerance 1e08; relTol 0.1; smoother GaussSeidel; cacheAgglomeration true; nCellsInCoarsestLevel 20; agglomerator faceAreaPair; mergeLevels 1; } Are you using the exact same boundary conditions as the analytical solution? i.e. are top and bottom tractionfree and are the left and right fixed in every direction or fixed only in their normal direction with zeroshear. Philip 

September 4, 2012, 22:25 

#5  
Member
Sangeeta
Join Date: Jul 2012
Location: Kingston, Canada
Posts: 70
Rep Power: 4 
Quote:
Hi Philip, Thanks for the quick reply. I have incorporated changes in fvSolution as you suggested but still my solution is different from analytical solution. Yes I am using similar boundary conditions as given in the problem. Following are my boundary conditions: 0/D dimensions [0 1 0 0 0 0 0]; internalField uniform (0 0 0); boundaryField { topSurface { type tractionDisplacement; traction uniform (0 0 0); pressure uniform 0; value uniform (0 0 0); } bottomSurface { type tractionDisplacement; traction uniform (0 0 0); pressure uniform 0; value uniform (0 0 0); } fixedEnd1 { type fixedValue; value uniform (0 0 0); } fixedEnd2 { type fixedValue; value uniform (0 0 0); } defaultFaces { type empty; } } 0/T dimensions [0 0 0 1 0 0 0]; internalField uniform 0; boundaryField { topSurface { type fixedValue; value uniform 100; } bottomSurface { type fixedValue; value uniform 100; } fixedEnd1 { type zeroGradient; } fixedEnd2 { type zeroGradient; } frontAndBack { type empty; } } I am also attaching system and log files of my solution. Do you think that something is wrong in boundary conditions and/or system files. Is this okay to use solidDisplacementFoam solver for steady state because I have not changed equations in solidDisplacementFoam.C file (only changed steady state ddt schemes) ? Thanks, Sargam 

September 4, 2012, 22:57 

#6  
Member
Sangeeta
Join Date: Jul 2012
Location: Kingston, Canada
Posts: 70
Rep Power: 4 
Quote:
Hi Philip, Sorry I am not able to attach log file, it is larger in size therefore I am sending you some last initial iterations from log file. Iteration: 49997 GAMG: Solving for T, Initial residual = 7.9969e09, Final residual = 7.9969e09, No Iterations 0 GAMG: Solving for Dx, Initial residual = 9.99821e09, Final residual = 9.99821e09, No Iterations 0 GAMG: Solving for Dy, Initial residual = 9.99863e09, Final residual = 9.99863e09, No Iterations 0 ExecutionTime = 517.38 s ClockTime = 522 s Iteration: 49998 GAMG: Solving for T, Initial residual = 7.9969e09, Final residual = 7.9969e09, No Iterations 0 GAMG: Solving for Dx, Initial residual = 9.99821e09, Final residual = 9.99821e09, No Iterations 0 GAMG: Solving for Dy, Initial residual = 9.99863e09, Final residual = 9.99863e09, No Iterations 0 ExecutionTime = 517.38 s ClockTime = 522 s Iteration: 49999 GAMG: Solving for T, Initial residual = 7.9969e09, Final residual = 7.9969e09, No Iterations 0 GAMG: Solving for Dx, Initial residual = 9.99821e09, Final residual = 9.99821e09, No Iterations 0 GAMG: Solving for Dy, Initial residual = 9.99863e09, Final residual = 9.99863e09, No Iterations 0 ExecutionTime = 517.39 s ClockTime = 522 s Iteration: 50000 GAMG: Solving for T, Initial residual = 7.9969e09, Final residual = 7.9969e09, No Iterations 0 GAMG: Solving for Dx, Initial residual = 9.99821e09, Final residual = 9.99821e09, No Iterations 0 GAMG: Solving for Dy, Initial residual = 9.99863e09, Final residual = 9.99863e09, No Iterations 0 Max sigmaEq = 4.4936e+08 ExecutionTime = 517.46 s ClockTime = 522 s End 

September 5, 2012, 03:35 

#7 
Senior Member
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 565
Rep Power: 19 
Hi Sargam,
OK from your log, your model is converged. By the way, you can see that the solver is doing zero inner iterations, this is because your linear solver tolerance needs to be tighter than your solution tolerance i.e.: Code:
D { tolerance 1e10; // this is the linear solver tolerance and it should be tighter than solution tolerance … } stressAnalysis { D 1e09; // solution tolerance to which model is converged … } Yes, it is fine to use solidDisplacementFoam for steadystate, as setting d2dt2 scheme to steady state sets the inertia term to zero so the linear momentum equation becomes steady state. Also, your fvSchemes look fine. I have successfully used this solver to model a pipe with internal pressure and temperature and the results were in very close agreement with analytical predictions. Is your analytical solution for a 3D bar or 2D bar? You model is 2D with front and back being the empty directions. Is it possible to post the analytical solution here or give a link to it? Often I have found that when something doesn't agree with the analytical solution, it may be due to boundary conditions being not exactly the same. Philip 

September 5, 2012, 12:48 

#8  
Member
Sangeeta
Join Date: Jul 2012
Location: Kingston, Canada
Posts: 70
Rep Power: 4 
Quote:
Hi Philip, Thanks for the reply. I appreciate your valuable inputs. I have taken this problem from a book "Thermal Stresses" by Naotake et al. Please open following link and find this problem in capter2, Thermal Stresses in Beams, page number 31, heading number 2.1.2. In this problem I have not considered curvature. http://books.google.ca/books?id=u3XG...stress&f=false I am using right boundary conditions or I need to change boundary conditions? Thanks, Sargam 

September 6, 2012, 04:16 

#9 
Senior Member
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 565
Rep Power: 19 
Sargam,
Hmmnn I am not sure what boundary conditions are assumed in the analytical solution, it is not clear. The solution says the beam is clamped at the left and right and then says that the beam will remain perfectly straight when the temperatures are applied, but when you apply a temperature to the top and bottom the beam will warp even if the left and right are clamped. Is there a reason why you are using this particular case? There are many analytical solutions for coupled thermalstress problems, if you are just interested in verifying the solver. Best regards, Philip 

September 6, 2012, 12:33 

#10  
Member
Sangeeta
Join Date: Jul 2012
Location: Kingston, Canada
Posts: 70
Rep Power: 4 
Quote:
Hi Philip, Thank you for the reply. Actually I am solving this problem just to verify the solver. Could you please suggest me some simple example problems/book/journal so that I can validate analytical results with simulation results? Thanks in advance. Sargam 

September 6, 2012, 14:22 

#11 
Senior Member
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 565
Rep Power: 19 
Sargam,
OK, I would recommend a thick walled cylinder with temperature T_i at the inner surface and T_o at the outer surface  described here in the Ansys benchmarks. The analytical solution can be found in Timoshenko. I can email you the relevant equations if you pm me your email address. Best regards, Philip 

September 12, 2012, 10:41 

#12 
Senior Member
Markus Rehm
Join Date: Mar 2009
Location: Erlangen (Germany)
Posts: 176
Rep Power: 8 
Hi Philip, hi Sargam,
could one of you provide the Timoshenkocase? Thanks, Markus. 

September 12, 2012, 10:51 

#13 
Senior Member
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 565
Rep Power: 19 
Hi Markus,
Actually the hotCylinder test case is in the recently released solidMechanics solvers for OpenFOAM1.6ext (see here). There is also a utility which outputs the analytical solution. Best regards, Philip 

September 12, 2012, 12:37 
About zero flux boundary condition...

#14 
Member
M Mallikarjuna Reddy
Join Date: Jul 2012
Posts: 91
Rep Power: 4 
Hi everyone,
I am fresher for openFoam. I have written my own application. I am doing my project on suspension (solid particles in fluid) flow through straight channels. I prepared my solver for the coupling of continuity, momentum and particle conservation equation. Now i am facing problem with boundary condition for the particle volume fraction at the upper and lower walls. When applied this condition in particle conservation equation i got an expression for the gradient of particle volume fraction. my governing equation for the particle volume fraction is: solve ( fvm::div(phi, T) + fvm::laplacian(0.62*1.82*pow(a,2)*g*pow(T,2)*pow(0 .68T,1), T) + fvm::laplacian(0.41*pow(a,2)*g*T, T) ==  fvc::laplacian(0.41*pow(a,2)*T*T, g) ); where T=particle volume fraction (no units) where g=local strain rate scalar=1.41421*sqrt(magSqr(symm(fvc::grad(U)))) After applying zero boundary condition i got an expression for gradient as: grad(T)=  0.41*pow(T, 2)*(fvc::grad(g))/(T*g*(0.41+T*1.1284*pow(0.68T, 1))) For this purpose i need to develop derived boundary condition. I checked the boundary conditions and found that solidDisplacementFoam/tractionDisplacement matches for my needs. I developed code based upon that solver but i am getting some error message. That's why i reproduced the same tractionDisplacement changing name to mytractionDisplacement. when i compiled with wmake the following error is coming (which is same as those i obtained for the above gradient expression) Error message: malli_reddy@ubuntu:~/Desktop/mysolidDisplacementFoam/mytractionDisplacement$ wmake Making dependency list for source file mytractionDisplacementFvPatchVectorField.C SOURCE=mytractionDisplacementFvPatchVectorField.C ; g++ m32 Dlinux DWM_DP Wall Wextra Wnounusedparameter Woldstylecast O3 DNoRepository ftemplatedepth100 I/opt/openfoam211/src/finiteVolume/lnInclude IlnInclude I. I/opt/openfoam211/src/OpenFOAM/lnInclude I/opt/openfoam211/src/OSspecific/POSIX/lnInclude fPIC c $SOURCE o Make/linuxGccDPOpt/mytractionDisplacementFvPatchVectorField.o g++ m32 Dlinux DWM_DP Wall Wextra Wnounusedparameter Woldstylecast O3 DNoRepository ftemplatedepth100 I/opt/openfoam211/src/finiteVolume/lnInclude IlnInclude I. I/opt/openfoam211/src/OpenFOAM/lnInclude I/opt/openfoam211/src/OSspecific/POSIX/lnInclude fPIC Xlinker addneeded Xlinker noasneeded Make/linuxGccDPOpt/mytractionDisplacementFvPatchVectorField.o L/opt/openfoam211/platforms/linuxGccDPOpt/lib \ lfiniteVolume lOpenFOAM ldl lm o /home/malli_reddy/OpenFOAM/malli_reddy2.1.1/platforms/linuxGccDPOpt /bin/mytractionDisplacementFvPatchVectorField /usr/lib/i386linuxgnu/gcc/i686linuxgnu/4.5.2/../../../crt1.o: In function `_start': (.text+0x18): undefined reference to `main' collect2: ld returned 1 exit status make: *** [/home/malli_reddy/OpenFOAM/malli_reddy2.1.1/platforms/linuxGccDPOpt/bin/mytractionDisplacementFvPatchVectorField] Error 1 Please guide me to rectify this error. Now i am using OF 2.1.1 version. And give any valuable information about swak4Foam utility. Thanks Regards Mallikarjuna 

September 12, 2012, 13:01 

#15  
Senior Member
Philip Cardiff
Join Date: Mar 2009
Location: Dublin,Ireland
Posts: 565
Rep Power: 19 
Quote:
Best regards, Philip 

September 12, 2012, 13:17 

#16 
Member
M Mallikarjuna Reddy
Join Date: Jul 2012
Posts: 91
Rep Power: 4 
Hi Philip,
very much thanks for quick reply. I have one problem related this posts. When i run my case by using my solver the following error message is coming. I am not getting what it is trying to say, Error message: malli_reddy@ubuntu:~/OpenFOAM/malli_reddy2.1.1/PROJECT/validation$ myDiffusivecFoam /**\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 2.1.1   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ Build : 2.1.1221db2718bbb Exec : myDiffusivecFoam Date : Sep 12 2012 Time : 22:39:06 Host : "ubuntu" PID : 2089 Case : /home/malli_reddy/OpenFOAM/malli_reddy2.1.1/PROJECT/validation nProcs : 1 sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). fileModificationChecking : Monitoring runtime modified files using timeStampMaster allowSystemOperations : Disallowing usersupplied system call operations // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Create mesh for time = 0 Reading transportProperties Reading field p Reading field U Reading field T Reading/calculating face flux field phi No field sources present SIMPLE: convergence criteria field p tolerance 1e05 field U tolerance 1e05 field T tolerance 1e05 Starting time loop Time = 1nl [0 0 1 0 0 0 0] 0.005626 DILUPBiCG: Solving for Ux, Initial residual = 1, Final residual = 4.7087e06, No Iterations 5 DILUPBiCG: Solving for Uy, Initial residual = 0, Final residual = 0, No Iterations 0 #0 Foam::error:rintStack(Foam::Ostream&) in "/opt/openfoam211/platforms/linuxGccDPOpt/lib/libOpenFOAM.so" #1 Foam::sigFpe::sigHandler(int) in "/opt/openfoam211/platforms/linuxGccDPOpt/lib/libOpenFOAM.so" #2 Uninterpreted: #3 Foam:ILUPreconditioner::calcReciprocalD(Foam::Fi eld<double>&, Foam::lduMatrix const&) in "/opt/openfoam211/platforms/linuxGccDPOpt/lib/libOpenFOAM.so" #4 Foam:ILUPreconditioner:ILUPreconditioner(Foam: :lduMatrix::solver const&, Foam::dictionary const&) in "/opt/openfoam211/platforms/linuxGccDPOpt/lib/libOpenFOAM.so" #5 Foam::lduMatrix:reconditioner::addasymMatrixCons tructorToTable<Foam:ILUPreconditioner>::New(Foam ::lduMatrix::solver const&, Foam::dictionary const&) in "/opt/openfoam211/platforms/linuxGccDPOpt/lib/libOpenFOAM.so" #6 Foam::lduMatrix:reconditioner::New(Foam::lduMatr ix::solver const&, Foam::dictionary const&) in "/opt/openfoam211/platforms/linuxGccDPOpt/lib/libOpenFOAM.so" #7 Foam::PBiCG::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/opt/openfoam211/platforms/linuxGccDPOpt/lib/libOpenFOAM.so" #8 Foam::fvMatrix<double>::solve(Foam::dictionary const&) in "/opt/openfoam211/platforms/linuxGccDPOpt/lib/libfiniteVolume.so" #9 Foam::fvMatrix<double>::solve() in "/home/malli_reddy/OpenFOAM/malli_reddy2.1.1/platforms/linuxGccDPOpt/bin/myDiffusivecFoam" #10 in "/home/malli_reddy/OpenFOAM/malli_reddy2.1.1/platforms/linuxGccDPOpt/bin/myDiffusivecFoam" #11 __libc_start_main in "/lib/i386linuxgnu/libc.so.6" #12 in "/home/malli_reddy/OpenFOAM/malli_reddy2.1.1/platforms/linuxGccDPOpt/bin/myDiffusivecFoam" Floating point exception please let me know what is the error. Thanks Regards Mallikarjuna 

September 13, 2012, 08:04 

#17  
Senior Member
Markus Rehm
Join Date: Mar 2009
Location: Erlangen (Germany)
Posts: 176
Rep Power: 8 
Quote:
Thanks a lot. I will check it. Markus 

Thread Tools  
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
[Other] Creep Analysis for Stress cell usning ANSYSWORKBANCH..  sidspark12  ANSYS Meshing & Geometry  1  December 26, 2012 05:29 
initial temperature in steady state thermal for ansys workbench  syafiq  CFX  1  May 7, 2012 17:06 
Steady State 2 phase problem  fivos  FLUENT  0  April 27, 2009 16:34 
About the difference between steady and unsteady problems  Lisa  Main CFD Forum  11  July 5, 2000 14:37 
Info: Short Course On Thermal Design of Electronic Equipment  Arnold Free  Main CFD Forum  0  August 10, 1999 10:18 