|
[Sponsors] |
How much time did it take for you to create your solvers? And what mstakes you made? |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
October 17, 2021, 16:20 |
How much time did it take for you to create your solvers? And what mstakes you made?
|
#1 |
Senior Member
Sayan Bhattacharjee
Join Date: Mar 2020
Posts: 495
Rep Power: 8 |
All of the CFD codes that I see in the market seems like they have been in development for a long time. It doesn't become clear how much time it actually took them to become good enough to develop their own solvers. And most importantly they only share where they succeeded, but never about where they failed.
What has been your experience? Here's my experience through failures. If anyone is a beginner and would want to ask more about the mistakes I made, let me know : It took me around 1.5 year to try out a few different versions of my solver. Most of them were not good enough. For the first version, I just took some matlab code and made it work with some spit and glue. It was horrible, but it worked. For second version I tried to improve performance, but after 4 months of work and finding one issue, I gave up using Fortran, and started using C++. Then I optimized for the wrong thing. That is, I optimized for latency instead of throughput, and my code became so "fast", it was choking the memory bus, as every thread waited for memory. For the third version, the development is going on smoothly. I figured out where I was doing premature optimization and where I should be focusing my efforts. |
|
October 18, 2021, 04:03 |
|
#2 |
Senior Member
|
Probably, any absolute measure you are going to consider in development, will always be biased, if not completely inaccurate.
For example, anything between 1 and 2 years seems reasonable to develop a full, unstructured, cell centered finite volume solver, batteries included, with all the bells and whistles. But, I think, only assuming you already did it before, so you are kind of allowed to take a look at your previous code whenever you don't remember something (not copy/paste of course, otherwise there would be no reason to rewrite stuff). For example, in my development journey, I have rewritten stuff multiple times, each time also redesigning or learning new things. So, I have spent time learning or designing stuff that you can't reasonably include in this 1-2 years, also because they happened in very different moments in time. And I'm just mentioning true advanced stuff that you only consider for actual production codes. Not even considering the years it took me to learn CFD from scratch. Also, when you need to switch between the different topics of a full code, having to learn/design stuff will also induce a lack of efficiency, inevitably, because every time you derail from what you're doing you need the time to get back; the more you do it, the more you spend time in doing, basically, nothing. So, in the end, it really depends. But having been there (and being there now as well), I confirm that the 1-2 years figure is appropriate as long as you know what you're doing in every detail. EDIT: mistakes... plain ones probably not, but sometimes assumptions turned out not wise enough to make the underlying code last as much as I would have liked. Yet, when I developed my first 3D panel code I was unaware of certain theoretical details, which led to me spend 6 months on it, inlcuding a full rewrite from scratch (full scratch, like I even trashed all my hand notes), only to come up with the exact same code because there were no mistakes but a lacking theoretical knowledge. |
|
|
|