Adaptive optimization of geometry
I am looking for persons with experience in adaptive optimization that wants to share their experience/comments here.
Background: Occasionally I am facing problems where there are strict requirements to the flow distribution upstream a device i.e. heating surface or burner or requirements to the allowable pressure drop. Typically there is expansion before the device, but due to structural, competition, economical reasons or whatever then must the ducting system be as small or simple as possible. Getting tired of manually changing the grid and facing the same problems more often I wanted to make the solution more automatically.
What I am doing now is.
I start with simplifying as much as possible, makes it 2D, and use a coarse grid as possible. I am not interested in grid independent solutions, at this stage; it will be to time consuming to optimize on a full 3D grid with all details. When I have found and optimum solution with the simplified approach I then do a standard, costly, calculation to compare with initial design.
I select three of four points in the duct or expansion or whatever there is downstream the device with requirements to the flow distribution. These points are not fixed and can be adjusted until a minimum pressure drop is obtained or a minimum standard deviation or a minimum peak velocity. The coordinates of these data points are stored in a data file which is read by, in my case build.
With the use of sessionfiles it is then possible from the command line to automatically generate a new geometry file with the use of the data points. This is the first step.
I have a Fortran program that writes the adjustable points to the data file and executes build (session file from command line)
The solver is then next executed from the Fortran program with the use of the new geometry file and patch data is written at last from the solver.
The standard deviation or pressure drop etc. is then read from the output file, which then gives information about the results with the given points. Depending on the result then new points can be calculated according to given restrictions in the geometry.
The way I now adjust the points is, by a grid method where I for each point that is adjustable, calculate the standard deviation in 8 neighbor points ( a grid by 3X3). The best solution is selected for each point and new points around this is then investigated, I of course ensure that I do not calculated the same geometry again.
I) I am not satisfied with this approach. The drawback with this method is that I restart the flow solver for each calculation, I do use the old dump file, but the initialization every time of the flow solver slows down the solution, I would be better If it was possible the control the generation of the new geometry file from the flow solver. I have been looking at usrgrd, but I am not convinced that using this user Fortran is appropriate for several reasons. Usrgrd does not seem to be very general and rather difficult to use with multiblocks and user3d patches with pressure resistance.
Any opinion and other recommendations on this is highly appreciated
II) I am not satisfied with the way I search for the solution, I have been looking in some article from the finite element world and some thesis's about structural optimization, but the methods seems not very general and are difficult to implement
Any opinion/suggestions on this is also highly appreciated
Regards Jan Rusås
Re: Adaptive optimization of geometry
(1). It is easier to use a real world example to show what you are trying to solve. It is kind of hard to know exactly what you are trying to achieve. (2). I think you have several configurations to solve, and from the solution, you want to find the one which will satisfy some predetermined requirements. (3). The straight forward way to do is to identify the parameters first. These can be geometric parameters, or flow parameters (inlet conditions, or overall conditions). With the parameters defined, you can set the range and pick some numbers or conditions. For example, three lengths, three diameters, three pressure ratios, three inlet velocities or mass flow rates,etc.(4). Then you have a table or matrix of cases to solve. You can solve it case by case, independently. Or, you can make use of the previous case solution as the initial flow field guess to speed up the solution process, if your problem allows such approach. (5). From a set of say 16 cases, you can sort out the optimum case. For simple problem, three cases may be enough. But I have no idea of what you are trying to solve. (for a combustor, I guess, you need 16 cases instead of three) (6). Such optimization can easily take one several months to finish. (7). If you are constrained by time, then there is another way to do. That is you can start with one case, and modify the geometry based on the computed results, in one of the parameter. With this step-by-step improvement, you can stop at any time when the deadline is reached and still have an improved configuration. (8). I have used both approaches in combustor design and turbine components design. I guess, in arriving at the optimum configuration, both the degree of difficulty and the experience of the investigator must be included in the equation. (9). It is possible to write a custom made code to do these things, but in reality, it depends on whether you have the time to do it or not. (most people don't like to spend money to improve the process, they simply want the results done ASAP)
|All times are GMT -4. The time now is 21:33.|