I find most talks about CFD very hard to follow, but most of your video's I can actually understand and come out with a deeper understanding. Great job and thank you!
i didn't take any notes while watching but at the end of the video I'm still able to memorize and write down everything I've learnt and I think that shows how good and comprehensible your explanations are. Very well done sir!
I´ve been following for over a year now. I can´t believe material of this quality (top of the shelf) is public. You´re something else. Thank you Aidan.
Thanks a lot for your videos! I am an engineer working for Russian space agency doing CFD, mostly compressible, and I find your tutorials very helpful for the various of things. I have been trying to find an explanation about lowRe functions and you gave this in one of your previous tuts, but I am left with the question like what are all-Re and high-Re functions and what is the difference between them.
I am still trying to work this out myself, but I think the confusion comes from the description of 'Re'. I think they are referring to the wall Reynolds number, which is a Reynolds number based on the shear velocity and the distance from the wall. You can use this 'wall Reynolds number' to define where you are in the boundary layer profile. If the function is 'lowRe' then it only works if you are in the viscous sub layer. If it is 'highRe' then it only works if the first cell centroid is in log law region. 'allRe' has some capability to blend the buffer region (but this will always be questionable). That is my current understanding, I hope it helps ☺️
Sounds quite logical, that’s why I always try not to use allRe functions cause this term is blurry enough for me:) so the term “lowRe” is a unique attribute of k-epsilon model and has nothing to do with k-omega model, as far as I understand. I am using different from ANSYS software, and when I choose model SST it allows me this 3 wall treatment models to choose- low-, all- and highRe, I don’t quite understand why I have to choose it since k-epsilon is not supposed to be used near wall so these wall functions are not applicable…
Hi, First, thanks a lot for your fruitful video. Both parts 1 and 2 are amazing, and you delivered the material in a very easy-to-understand manner. From your explanations, I could understand that the CFD codes calculate a vector of residuals for each transport equation when solving a CFD problem. So, assuming that our problem deals with N different transport equations and the domain is divided into M grids, we get N*M residual values in each iteration. From your first video, we learned how to use a representative residual for the domain in each iteration to work with N values instead of N*M values in each iteration. Also, in this video, you explained how the CFD codes scale the representative residuals to make our judgments (about the convergence) more accurate. However, some CFD codes (like Comsol) provide a single convergence plot (or, as they call it, error plot) for each iteration, no matter how many transport equations are included in the multiphysics problem. I understand that one can get the residual values for each equation from these codes; however, I was wondering how the residual plots (for each transport equation) differ from the single error plot. I would appreciate it if I could have your comment on this. Thanks
Hi Mehrzad, your summary is perfect. However, I am not too sure how COMSOL works with its error plot. Probably worth having a look at the manual too see what it is doing and what it means by an 'error plot'
@@fluidmechanics101 Thanks a lot for your response. Let me first correct my mistake. The name of the plot is 'Convergence Plot' (nor error plot). I took a look at the manual before, and I double-checked it just now. There is a short explanation, and most of it is related to the plot settings. The only relevant part (in my understanding) is as follows (I am quoting it from Comsol online documentation). 'For the nonlinear solver, the convergence plots show an error estimate for each nonlinear iteration number. These numbers also appear in The Log Window. The segregated solver shows one plot with one graph for each segregated step. For the iterative linear system solvers, the error estimate for each linear iteration is a factor times the relative (preconditioned) residual. This number also appears in the Log window as LinErr. When these solvers are used together with the nonlinear solver, the graphs for the different linear-system solution steps are merged, and the plots use the accumulated number of iterations. Each linear solver used has a separate plot window. When using the parametric solver, the graphs for the different parameter steps are merged, and the convergence plots use the accumulated number of iterations. The graphs for the different nonlinear and linear solve steps are concatenated. The plot uses the accumulated number of iterations. When using a Time-Dependent Solver, the graph in the Convergence Plot window shows the reciprocal of the time step size versus the time step. That is, a convergence plot with decreasing values shows that the time-dependent solver takes longer time steps, and vice versa.'
Let's say a temperature of T^(1) = 10 K is obtained after your first iteration (in a given cell). That temperature then changes to, say, T^(2) = 20 K after the second iteration. Now if you use an under-relaxation factor of 0.5, for example, that second computed temperature will be relaxed to T^(2) = T^(1) + {under-relaxation * [T^(2) - T^(1)]} = 10 + [0.5 * (20 - 10)] = 15 K. Or something to that effect. The point is that the under-relaxation reduces the change in cell values from iteration to iteration to facilitate stability. Else, changes might be too large and go out of control, especially early on in simulations when you are far from your solution. Therefore, it is not a bad idea to start with small under-relaxation factors (values closer to 0), and as you approach your solution, to increase the under-relaxation factors (to values closer to 1).
I'm absolutely astonished by your lectures! Thank you so much for making them public! I just got a quick question if anyone could help. In part 1, the penultimate slide entitled "Representative residual", states that "We also need to scale the representative residual", while in this lecture, between 29:00 and 29:15, Aidan says "...what we're doing by scaling the residuals is giving us a percentage energy imbalance in every cell in the mesh and then we can use the techniques that we used in the previous talks to get a representative residual for all of the cells in the mesh...". What I couldn't grasp is which step comes first and which one follows? The identification of the representative residual (which is then followed by scaling) or the scaling of all residuals (and then the identification of the representative one)? Thank you very much in advance!
you have goooood accent ; knowledge and presentation pleassse make a session for system coupling and the iteration we define in fluent and system coupling and the differences; concepts and so on Im onfused each time
Thanks for video. As I remeber Ansys Fluent do scaling in some different way. IIf we make matrix A_abs from matrix A in the following way aabs_ij = abs(a_ij), then we can obtain vector of reference resiudal by multipling A_abs on vector T . The method that you describe is default in OpenFOAM?
Yes, I described the OpenFOAM version, as we can see it in the source code and user manual. Fluent seems to be hidden and it is not clear exactly how they do it, so I left this out 🙂
@@fluidmechanics101 Yea, I got it. Essentially you take a representative heat flux for a cell that needs a representative temperature difference. In the same sense, for momentum equation, a representative momentum flux has to be chosen.
hi, great video Could you do a video on how cfd solves transient flow problems. For my thesis i have to optimise the front wing of a formula student racecar and we are kinda stuck on modelling the rotating wheel because of the transient nature of the flow around it. Thx, keep up the good work
Thanks for the great insides. What I missed is why do we need scaling in the first place if it is only about the reduction of orders of magnitude. Can't this evaluation be achieved with the norm of the original energy imbalances as well? Secondly, I understood that the scaling factor is adapted every iteration. Is this true and why don't we keep it at one value?
should i learn openfoam or ansys fluent??i am mech undergrad and i want to pursue further study in fluid dynamics,which software you think will be worthy. but openfoam resources are limited compared to fluent.
Both are great CFD software. OpenFOAM is harder to learn but will give you greater understanding of CFD (because you have to learn more to use it). Maybe try out the tutorials for both and see which you prefer
If the residuals are representative and we cannot say whether it converged at an exact value, why do we look at residuals, how do they contribute to the evaluation of convergence?
What code are you using? It should be pretty straightforward in fluent, star and CFX. OpenFOAM is a bit more tricky, you will need to make the plots yourself 🙂
Your videos are awesome! Please keep them coming I loved your video about discretisation very much and it helped me a lot with my modeling so far. I was wondering now that you mentioned CFD coding do you got any source of information for OpenFOAM programming which are understandable by a beginner :-D ?
OpenFOAM is a difficult one. It takes a long time to learn as it is basically written in its own language. There are a few tutorials scattered around the internet for things like 'how to code your own solver by modifying icoFOAM'. This is probably a good place to start if you want to learn the syntax
I find most talks about CFD very hard to follow, but most of your video's I can actually understand and come out with a deeper understanding. Great job and thank you!
Great work providing deep physical understanding
Just binged the whole 2 episodes like watching a movie.. awesome explanation.. episode 3 pls ☺️ thanks again
i didn't take any notes while watching but at the end of the video I'm still able to memorize and write down everything I've learnt and I think that shows how good and comprehensible your explanations are. Very well done sir!
That's fantastic!
respect from a moroccan student studying in germany, your are the best
Danke schön Herr Aidan :D
You dont know how Much you help me to understand CFD, thank you!!
I´ve been following for over a year now. I can´t believe material of this quality (top of the shelf) is public. You´re something else. Thank you Aidan.
Thank you so much for your kind words
Highly anticipated the second video :) Thank you!
You are simply great… Thank for making me understand the basics clearly…..
I was waiting for the second part, thanks super appreciate it!!
your explanations are better than what my university professors do...
Thanks a lot for your videos! I am an engineer working for Russian space agency doing CFD, mostly compressible, and I find your tutorials very helpful for the various of things. I have been trying to find an explanation about lowRe functions and you gave this in one of your previous tuts, but I am left with the question like what are all-Re and high-Re functions and what is the difference between them.
I am still trying to work this out myself, but I think the confusion comes from the description of 'Re'. I think they are referring to the wall Reynolds number, which is a Reynolds number based on the shear velocity and the distance from the wall. You can use this 'wall Reynolds number' to define where you are in the boundary layer profile. If the function is 'lowRe' then it only works if you are in the viscous sub layer. If it is 'highRe' then it only works if the first cell centroid is in log law region. 'allRe' has some capability to blend the buffer region (but this will always be questionable). That is my current understanding, I hope it helps ☺️
Sounds quite logical, that’s why I always try not to use allRe functions cause this term is blurry enough for me:) so the term “lowRe” is a unique attribute of k-epsilon model and has nothing to do with k-omega model, as far as I understand. I am using different from ANSYS software, and when I choose model SST it allows me this 3 wall treatment models to choose- low-, all- and highRe, I don’t quite understand why I have to choose it since k-epsilon is not supposed to be used near wall so these wall functions are not applicable…
thank you very much for your generosity in sharing this knowledge.
Hi,
First, thanks a lot for your fruitful video. Both parts 1 and 2 are amazing, and you delivered the material in a very easy-to-understand manner. From your explanations, I could understand that the CFD codes calculate a vector of residuals for each transport equation when solving a CFD problem. So, assuming that our problem deals with N different transport equations and the domain is divided into M grids, we get N*M residual values in each iteration. From your first video, we learned how to use a representative residual for the domain in each iteration to work with N values instead of N*M values in each iteration. Also, in this video, you explained how the CFD codes scale the representative residuals to make our judgments (about the convergence) more accurate. However, some CFD codes (like Comsol) provide a single convergence plot (or, as they call it, error plot) for each iteration, no matter how many transport equations are included in the multiphysics problem. I understand that one can get the residual values for each equation from these codes; however, I was wondering how the residual plots (for each transport equation) differ from the single error plot. I would appreciate it if I could have your comment on this.
Thanks
Hi Mehrzad, your summary is perfect. However, I am not too sure how COMSOL works with its error plot. Probably worth having a look at the manual too see what it is doing and what it means by an 'error plot'
@@fluidmechanics101 Thanks a lot for your response. Let me first correct my mistake. The name of the plot is 'Convergence Plot' (nor error plot). I took a look at the manual before, and I double-checked it just now. There is a short explanation, and most of it is related to the plot settings. The only relevant part (in my understanding) is as follows (I am quoting it from Comsol online documentation).
'For the nonlinear solver, the convergence plots show an error estimate for each nonlinear iteration number. These numbers also appear in The Log Window. The segregated solver shows one plot with one graph for each segregated step.
For the iterative linear system solvers, the error estimate for each linear iteration is a factor times the relative (preconditioned) residual. This number also appears in the Log window as LinErr. When these solvers are used together with the nonlinear solver, the graphs for the different linear-system solution steps are merged, and the plots use the accumulated number of iterations. Each linear solver used has a separate plot window.
When using the parametric solver, the graphs for the different parameter steps are merged, and the convergence plots use the accumulated number of iterations. The graphs for the different nonlinear and linear solve steps are concatenated. The plot uses the accumulated number of iterations.
When using a Time-Dependent Solver, the graph in the Convergence Plot window shows the reciprocal of the time step size versus the time step. That is, a convergence plot with decreasing values shows that the time-dependent solver takes longer time steps, and vice versa.'
Once again it looks like the CFD manuals are not being very clear 😂 I will have a think and see if I can work it out
@@fluidmechanics101 That's true :))) Many thanks.
i have been waiting for this part as soon as part 1 cleared my concepts,
Thank you very much!!! God bless you
Thank you for your helpful sharing, I very expect your next videos, sir
I found this talk very usefull. I am looking forward for next part.
Absolute masterpiece!! looking forward to your next talk on residuals. Can u pls explain what are relaxation factors in ANSYS Fluent and OpenFoam?
Let's say a temperature of T^(1) = 10 K is obtained after your first iteration (in a given cell). That temperature then changes to, say, T^(2) = 20 K after the second iteration. Now if you use an under-relaxation factor of 0.5, for example, that second computed temperature will be relaxed to T^(2) = T^(1) + {under-relaxation * [T^(2) - T^(1)]} = 10 + [0.5 * (20 - 10)] = 15 K. Or something to that effect. The point is that the under-relaxation reduces the change in cell values from iteration to iteration to facilitate stability. Else, changes might be too large and go out of control, especially early on in simulations when you are far from your solution. Therefore, it is not a bad idea to start with small under-relaxation factors (values closer to 0), and as you approach your solution, to increase the under-relaxation factors (to values closer to 1).
.... The next lecture series will be on exactly this 😅 well explained!
Was waiting for it.😁
I'm in love with your lecture ❤️
Thanks your the best in explaining ☺️.
great job! looking forward for part 3!
darn... it's super easy to follow you. loved your "talk"
very useful talk...thanks for posting.
Great Video Aidan, keep it going! I haven't really thought about the scaling of residuals until now...
Thanks Mauro 🙂
Can’t wait for part 3. Excellent info
Amazing Work!!! Please make a tutorial on normalisation too.Thank You!!
Hold on for part 3 and 4 :)
@@fluidmechanics101 Trying our best :)
Super explained, thanks.
Thanks.Appreciate it.
I'm absolutely astonished by your lectures! Thank you so much for making them public! I just got a quick question if anyone could help.
In part 1, the penultimate slide entitled "Representative residual", states that "We also need to scale the representative residual", while in this lecture, between 29:00 and 29:15, Aidan says "...what we're doing by scaling the residuals is giving us a percentage energy imbalance in every cell in the mesh and then we can use the techniques that we used in the previous talks to get a representative residual for all of the cells in the mesh...".
What I couldn't grasp is which step comes first and which one follows? The identification of the representative residual (which is then followed by scaling) or the scaling of all residuals (and then the identification of the representative one)?
Thank you very much in advance!
This is really awesome and helpful for my bachelor thesis about simulation. I wonder how you got to know all this! Anyways thanks a lot
Best of luck with your thesis ☺️
you have goooood accent ; knowledge and presentation
pleassse make a session for system coupling and the iteration we define in fluent and system coupling and the differences; concepts and so on
Im onfused each time
Thanks for video. As I remeber Ansys Fluent do scaling in some different way. IIf we make matrix A_abs from matrix A in the following way aabs_ij = abs(a_ij), then we can obtain vector of reference resiudal by multipling A_abs on vector T . The method that you describe is default in OpenFOAM?
Yes, I described the OpenFOAM version, as we can see it in the source code and user manual. Fluent seems to be hidden and it is not clear exactly how they do it, so I left this out 🙂
Thanks Aiden
Can you also scale the residual per cell by the flux in that cell, before calculating the norm?
Thank you for this series. For the momentum equation, what does the temperature difference represent? Like what difference do we need to look in?
The velocity difference? Maybe I am misunderstanding
@@fluidmechanics101 Yea, I got it. Essentially you take a representative heat flux for a cell that needs a representative temperature difference. In the same sense, for momentum equation, a representative momentum flux has to be chosen.
Thank you 🙏
hi, great video
Could you do a video on how cfd solves transient flow problems. For my thesis i have to optimise the front wing of a formula student racecar and we are kinda stuck on modelling the rotating wheel because of the transient nature of the flow around it.
Thx,
keep up the good work
Thanks for the great insides.
What I missed is why do we need scaling in the first place if it is only about the reduction of orders of magnitude. Can't this evaluation be achieved with the norm of the original energy imbalances as well?
Secondly, I understood that the scaling factor is adapted every iteration. Is this true and why don't we keep it at one value?
Hi Adian. Is the representative heat flux get an updated number for every iteration?
Yes 👍
should i learn openfoam or ansys fluent??i am mech undergrad and i want to pursue further study in fluid dynamics,which software you think will be worthy. but openfoam resources are limited compared to fluent.
Both are great CFD software. OpenFOAM is harder to learn but will give you greater understanding of CFD (because you have to learn more to use it).
Maybe try out the tutorials for both and see which you prefer
If the residuals are representative and we cannot say whether it converged at an exact value, why do we look at residuals, how do they contribute to the evaluation of convergence?
thank you so much
keep it up fam :P
you are goated 😅
where i can find these these thing in cfd ... i mean how can i display it as plots
What code are you using? It should be pretty straightforward in fluent, star and CFX. OpenFOAM is a bit more tricky, you will need to make the plots yourself 🙂
Your videos are awesome! Please keep them coming I loved your video about discretisation very much and it helped me a lot with my modeling so far.
I was wondering now that you mentioned CFD coding do you got any source of information for OpenFOAM programming which are understandable by a beginner :-D ?
OpenFOAM is a difficult one. It takes a long time to learn as it is basically written in its own language. There are a few tutorials scattered around the internet for things like 'how to code your own solver by modifying icoFOAM'. This is probably a good place to start if you want to learn the syntax
👍