|
[Sponsors] |
Understanding Log Output / InitialResidual / Adjust timestep |
![]() |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
![]() |
![]() |
#1 |
New Member
Tobias Hofbaur
Join Date: Oct 2020
Posts: 4
Rep Power: 5 ![]() |
Hello,
first of all a big thank you to the community, the answers in this forum helped me a lot to get my case started. Some remain however ![]() Background: I am solving a transient heat transfer problem in an axissymmetric, solid body with internal heat source. For now the boundary conditions are isolated, but I want to include radiative and convective cooling on one face later on. I setup and run my problem using laplacianFoam. The internal source works fine and the results look sensible. However, I want justification for my result, i.e. I try to get the initial residuals smaller. To get an acceptable initial residual (< 1e-4) I have to choose a very small time in the beginning (~1e-10). Of course then the calculations take forever, so I would like to change to a coarser timestep later on when the initial residuals are much smaller. (1e-8). I have adapted the laplacianSolver to increase the timestep, however the solver seems to run multiple times for every timestep (as far as I can tell from the output) and the latest initialResidual is small. Output of my modified laplacianFoam Code:
Time = 1e-10 Selecting finite volume options model type sourceTime Source: sourceTime - selecting all cells - selected 400000 cell(s) with volume 3.83855999999996e-09 1e-10 DICPBiCGStab: Solving for T, Initial residual = 0.999993153908313, Final residual = 2.15109639295838e-11, No Iterations 1 DICPBiCGStab: Solving for T, Initial residual = 1.45887329425369e-07, Final residual = 1.45887329425369e-07, No Iterations 0 1e-10 DICPBiCGStab: Solving for T, Initial residual = 1.45887329425369e-07, Final residual = 1.45887329425369e-07, No Iterations 0 DICPBiCGStab: Solving for T, Initial residual = 1.45887329425369e-07, Final residual = 1.45887329425369e-07, No Iterations 0 1e-10 DICPBiCGStab: Solving for T, Initial residual = 1.45887329425369e-07, Final residual = 1.45887329425369e-07, No Iterations 0 DICPBiCGStab: Solving for T, Initial residual = 1.45887329425369e-07, Final residual = 1.45887329425369e-07, No Iterations 0 ExecutionTime = 10.28 s ClockTime = 10 s 1. Why does the solver run 6 times for each timestep? According to docu each field solved produces an output, but I have only one. The normal laplacianFoam runs only three times per timestep. 2. Is the way I adjust my timestep correct? In my laplacianFoam I added Code:
fvOptions.correct(T); initResidual = TEqn.solve().initialResidual(); if (initResidual <1e-5) { //runTime.setDeltaT(2*runTime.deltaT()); } Tobias Last edited by betelgeuze; October 29, 2020 at 06:17. |
|
![]() |
![]() |
![]() |
![]() |
#2 |
New Member
Tobias Hofbaur
Join Date: Oct 2020
Posts: 4
Rep Power: 5 ![]() |
I did some more research and found the answer to 1).
My equation is solved three times per timestep as I had nNonOrthogonalCorrectors set to 2. As my mesh is perfectly orthogonal I can set it to zero. In my modification the solution was doubled again, as I called the solver again, instead of taking the result of the first call. I now changed it to Code:
... solverPerf = TEqn.solve(); fvOptions.correct(T); if (solverPerf.initialResidual() <1e-5) { runTime.setDeltaT(2*runTime.deltaT()); } If the result are good - I will see in the morning. |
|
![]() |
![]() |
![]() |
![]() |
#3 |
New Member
Kevin
Join Date: Nov 2019
Location: Bremen, Germany
Posts: 10
Rep Power: 6 ![]() |
Hi Tobias,
just as a quick thought: Since you simulate a transient case, I won't expect the initial residual to be too low. The solution changes in time, which is why the initial residual will be lower for low deltaT and larger for large deltaT. If you would have a fluid simultaion, I would suggest to perform the simulation based on Courant number (maxCo in controlDict). I guess the solid equivalent is maxDi, right? Best Kevin |
|
![]() |
![]() |
![]() |
![]() |
#4 |
New Member
Tobias Hofbaur
Join Date: Oct 2020
Posts: 4
Rep Power: 5 ![]() |
Hi Kevin,
thanks for the idea. Currently I am using laplacianFoam whic is sufficient in my case and there is no maxCo or maxDi. If I change to chtMult.. I will look into the maxDi idea. Best Tobias |
|
![]() |
![]() |
![]() |
![]() |
#5 |
New Member
Tobias Hofbaur
Join Date: Oct 2020
Posts: 4
Rep Power: 5 ![]() |
So I changed to chtMultiRegion Foam.
The simulations runs, and the results are sensible. Due to the physical background (Lasers shooting on tissue in ms durations) I need a rather fine mesh to get physical results ~ 1e-7. However if I choose maxDi as given in the tutorials maxDi~10, my simulation runs for ages to reach my target time 5ms (DeltaT ~ 1e-9) For the Courant number the derivation and the physical interpretation for maxCo < 1 is clear. However I cannot find a similar detailed explanation for the Diffusion number, neither here nor in the web. The closest I can find is https://www.google.com/url?sa=t&rct=...kUBxOIAIj9K5IH This would would indicate maxDi <1 as well, I am not sure this discretization scheme is used in OpenFoam though Do you have a good source for choosing the diffusion number? |
|
![]() |
![]() |
![]() |
Tags |
heattransfer, laplacianfoam, residuals |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Adjust write interval for function output | waynezw0618 | OpenFOAM | 1 | September 27, 2018 01:54 |
[Gmsh] Understanding output file of Gmsh | ihu | OpenFOAM Meshing & Mesh Conversion | 1 | October 24, 2016 05:08 |
[snappyHexMesh] Calculating Y+ & understanding the Snappyhexmesh log file | Doug68 | OpenFOAM Meshing & Mesh Conversion | 3 | April 27, 2016 04:41 |
how to export every data w.r.t time to txt file | jaho | CFX | 94 | August 25, 2015 09:45 |
[ICEM] Understanding check mesh output | kotimari | ANSYS Meshing & Geometry | 0 | July 15, 2012 08:33 |