CFD Online Discussion Forums

CFD Online Discussion Forums (
-   Main CFD Forum (
-   -   Which is better to develop in-house CFD code or to buy a available CFD package. (

Tareq Al-shaalan June 6, 1999 04:04

Which is better to develop in-house CFD code or to buy a available CFD package.
I personally see that, it depend on the application. For small simple problem, I can use the available CFD package. However, once I deal with complicated flow and geometry, I would prefer to develop in-house CFD code to do the job. It is really hard to trust any Black box for an answer. I do not truest the answer if I do not know what is going in that black box.

Scientist have be developing many models (for example models for combustion, models for turbulence, and so on) for different applications. Each model is appropriate for a specific application. For example, you will find a model that fit very well in IC engine, but dose not fit very well for external flow. So, you want to use that specific model which is the most appropriate for your specific applications.

What is more, CFD is NOT COLORD fluid dynamic. Its is COMPUTIONAL fluid dynamics. Computational takes lots of CPU time to crunch the number. Specially, once you deal with big problem (like problem in industry) you want your code to be optimized so it takes few days not weeks to answer your problem. Once you design for some thing, you need your code to give you the answer in a short time. Getting the answer in short time will give a better design and a better market. Of course, knowing the problem you are dealing with may help you to optimize the code for that specific problem.

Some big problem, need a special care, so it gives an answer in a short time. For example, some time your problem needs some FFT for some unknown, so you get the answer in a fraction of minute instated of hours. For example, One of my problem, I was working on, was appropriate for using FFT to solve for the pressure. Taking advantage of that I saved lots of memory and CPU time. I reduce the memory from 3 Gbyts to 100 Mbytes. I reduce the computation from days to hours.

What other people things.

John C. Chien June 6, 1999 15:49

Re: Which is better to develop in-house CFD code or to buy a available CFD package.
(1). This is a good question. But I don't think there is a good answer to it. (2). some people like to work on the problem step-by-step, and enjoy the results they obtain. They are called " workholic ". Simply said, they enjoy working on theri problem. (3). But there are also some people who love to follow the commands from other people. A computer program is a series of commands issued by the author who developed it. Using a CFD package is just like following someone's commands. As long as they also enjoy doing so, there is nothing wrong about it. ( some people would feel more comfortable being as a slave. At least in this way, less pain is created in the brain. ) (4). The computer games packages belong to this catagory. Most of the time, the players simply push the control buttons rapidly in sequence. ( There are exceptions though, some games require intensive brain exercise.) (5). So, the question really is not " in-house code vs commercial package", but rather " inventor vs slave ". The inventor can create new stuff and make it run faster, but a slave following instructions can also get thing done in an organized way. If a slave makes a mistake, he blames on his boss. On the other hand, if an inventor makes a mistake, he is likely to work continuously for several nights without sleep. (6). The question posted is not so simple to answer. This is because, I think, it is impossible to change the world, and it is also impossible to change a person. (7). The above example of an inventor vs a slave is just a virtual example. The fact is as the CFD becoming more like a fashion, more people will be interested in wearing it than to design it. (8). So, the real test is in a war. But, so far the war is not here yet. But, I think, if you are spending your own pocket money, you probably know what you are after. It is really hard to complain about how others are spending their money.

ThoLi June 7, 1999 05:48

Re: Which is better to develop in-house CFD code or to buy a available CFD package.
(1) I have a different opinion than John C. Chien

(2) my experience is, that writing a CFD solver is a very complex job; invest your effort in searching and testing avaliable packages instead of coding and debugging your own code

(3) as phd-student, my salary (with tax and social insurance), rent for my office, computer equipment and so on, reached in 6 (six!) days the price for a FIDAP installation. Can you write in 6 days a code, that solve ALL your problems during the next year?

(4) You always have to test the program you use, whether self coded or bought; replace the coding time by searching for a good package!

(5) If there is no package, that can all you need, then ask the vendors how to enhance their package; this way you reduce your coding work dramatically and get a professional look for your results!

(6) a word about the inventor vs slave: I feel myself a slave of the compiler, when coding myself; I feel more like an inventor, when I'm using a CFD package: there I talk with the computer in terms like "viscosity", "boundaries", "time step control parameters", not in memory cells or loop control!


John C. Chien June 7, 1999 07:12

Re: Which is better to develop in-house CFD code or to buy a available CFD package.
(1). I like your opinion. (2). I think, everyone has a different definition of CFD. That's fine. (3). Regardless of the definition you use, it is important that you are happy when you are working on it. (4). As for the degree of difficulty in writing the solver, most algorithms take only a few pages of descriptions if you read the CFD journal papers. (5). In CFD, each problem is a new problem. A general CFD code or a special purpose CFD code is nothing but a collection of subroutines. It does not represent a CFD solution. And in most cases, with the highly interactive approach, it is almost impossible to repeat one's mesh and solution. In this case, each solution is custom-made, no two solutions are the same. (6). To be successful in CFD, I think it is more important to study the human nature than to do the number crunching.

Nuray Kayakol June 7, 1999 09:11

Re: Which is better to develop in-house CFD code or to buy a available CFD package.
I am using an open commercial source-code. But based on my previous experience, the critical point is the ability and experience of CFD users. If you are a beginner it is better to write the code yourself. From this experience you can learn not to trust the results. Because codes may mislead a beginer providing expected trends somehow.

Getting a correct result from a commercial code will take approximately the same time required for writing your code.

However, CFD users may not update theirselves as fast as available commercial CFD codes,for example writing CFD codes on parallel architectures.

Actually you write the code or not numerical solution errors especially convergence rate and its errors, finding optimum relaxation values for iterative solutions and getting grid independent results with minimum CPU time take time and cause problems.

Then it it better to check the capabilities of commercial codes to alliviate these problems.


Patrick Godon June 7, 1999 09:25

Re: Which is better to develop in-house CFD code or to buy a available CFD package.
To answer your main question: what other people thinks? I would just say that I prefer writting my own codes for the simple reason that then I know exactly what's in and what's not. I have also no problem changing the code or some part of it if needed, etc... Once I have a solver, I can easily use it to write a new code within a week or so, but of course testing can take a month. I have run codes which were not mines and had troubles with boundary conditions (reflected shock etc..). It was not easy either to change these boundary conditions. So in general my opinion is that if you use a code that it not yours, you better be in direct contact with the 'author', just in case you need him.

Cheers, PG.

John C. Chien June 7, 1999 10:53

Re: Which is better to develop in-house CFD code or to buy a available CFD package.
(1). I kind of agree with you that a person who has passed the basic level of CFD training should be able to write his CFD code or modify existing CFD codes. (2). Along this line, I think it is important to recognize that there exists several levels of difficulties in getting involved with CFD activities. Since CFD is still a relatively young engineering field, so far, there is no standard classification of CFD experience for an engineer. (3). If we look at the various CFD processes involved, there are probably several types of CFD jobs we can define. (4). At the entry level, a CFD engineer should receive basic training of fluid dynamics, thermodynamics, and heat transfer. In addition to these basic courses, he needs to have good calculus and numerical methods knowledge. And good understanding of the introduction to CFD. At this point, he can start his career in the CFD applications using proven CFD packages. (5). At the next level, one can spend more time in the special component development areas such as the geometry and mesh generation, the solution algorithms, turbulence modelling, reacting flows, multi-phase flows, etc.. At this level, the engineer should have the basic training in CFD, practical knowledge of using proven CFD packages, and have a specialized CFD component field. This is roughly at the PhD level, or five years after BS degree. (6). The next level would be the one where an engineer can put together a practical working CFD code to solve a real problem on his own. This requires the understanding of the real world problem ( must learn the trade of a particular application), the ability to identify the level of technology to be incorporated into his code, and the actual development of the final CFD code to obtain the necessary results. This will take at least five to ten years from the PhD level. The reason is one need to be familiar with a particular field of application whether it is turbomachinery, aircraft aerodynamics, rocket propulsion, electronic cooling, automobile powertrain, pumps , combustor, casting etc..., before he can define his problem. Even though from CFD point of view, they all have something in common, they also have their own special features. (7). The next level up would be the one where one can read, understand and moify CFD source codes developed by someone else, and be able to make use of it in his problem solving processes. This is the so-called expert professional level. (8). One may start reading source codes developed by other CFD experts at an earlier level, but based on my experience, the code modified at this level frequently have bugs in it. It requires extensive experience to gain the capability to read, understand and modify existing CFD code. (9). Looking at the above description of CFD engineer clasification, it is much easier to know where one stands in the CFD career path. As an expert, the minimum requirement is the ability to spot the bug in the existing code and the ability to modify and improve the existing code.

Dr. Tanmay Sarkar June 9, 1999 12:10

Re: Which is better to develop in-house CFD code or to buy a available CFD package.
This is a very interesting discussion. I think the choice depends on time and money. If somebody is looking a solution in a short time it is definitely useful to go for a available package. In case one is looking for soltion of a specific type of problem and have sufficient time and resources in hand it is better to develop in-house code. Cheers

John C. Chien June 9, 1999 16:27

Re: Which is better to develop in-house CFD code or to buy a available CFD package.
(1). Would you be kind enough to give us suggestions as how to pick a available package in a short time when we have at least over 20 packages available by the forum sponsors? Especially, if it is going to have large impact on the products being designed. (2). I would say it also takes time to find the right package because it must also match the skill of the user.

Dr. Tanmay Sarkar June 10, 1999 10:03

Re: Which is better to develop in-house CFD code or to buy a available CFD package.
Yes I agree that there is a difficulty in choosing the right package and there is no denying of the fact that user must have basic understanding of his problem and associated difficulties. Once you have that it becomes easier to short list the choices to two or three. One can follow a set of guidelines: (1) List out the main difficulties of your problem (2) See if there is already some closely related applications of that software (3) Try to find out the background of the group or the originator of the package (example a software originated in aerodynamics research group will most likely be better choice for aerodynamics application). One can always see some of the publications using this software or its ancestors (I mean the papers published by its originator and its research group) (4)This will reduce your choices to 3-4. (5) Compare costs (6) Compare user support (7) Compare whether the software allows user coding (8) Tell the vendor to produce some evidence (preferably publications) for your kind of applications. (9) If you go through these steps your choice will reduce to two or three. Out of these two or three sometimes the result will also depend on user skill. Finally there is no denying of the fact that minimum level of understanding and clear cut ideas of fundamentals of CFD is essential in user. Cheers

John C. Chien June 12, 1999 23:27

Re: Which is better to develop in-house CFD code or to buy a available CFD package.
(1). A very good set of guidelines indeed for selecting a suitable CFD package. (2). In recent years, I have observed something interesting, that is, a failing company normally has many application software packages in the computer system. And, some companies even try to create expert data systems on the computer system as way to survive. (3). There is a complete mis-understanding that data base and application software packages can save a company. This is totally incorrect. (4). Unless one can develop a software which is error-free, and a data base which will grow by itself, the risk of running into problems is always higher than using no software at all. (5). Assuming that MS software for PC is very good, then one can freeze the update and just produce more copies like printing books. This will save money, lower costs, lower price and biger market. Well, that is what happening to the hardware components. Sooner or later, the product becomes no longer profitable. (6). So, what I am trying to point out is, the only way to survive is to have the capability of providing good service. And the service can be provided either directly person-to-person, or indirectly through a product. (7). Since it is impossible to write a error-free CFD code, the code becomes a living thing which requires constant care to survive. This essential constant care comes from the engineer himself. (8). In a similar situation, the constant battle of a network system to fight against the virus simply demonstrates that the system will die without the constant care from the engineer. (9). It is the engineer who solves the problem, not the computer system or the software. And if engineers in a software company stop taking care of the software product they developed (or developing), then it is likely that the company will cease to exist overnight. This is because " software is an extension of human thinking process which is alive and dynamic ". (10) If computer virus is a living thing, then you must be well equipped and trained when touching the keyboard and the software. This may change your way of selling the software packages. In the real war, it is the persons behind the scene who are directing the battle.

All times are GMT -4. The time now is 23:24.