CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   Main CFD Forum (http://www.cfd-online.com/Forums/main/)
-   -   Higher Order Spectral Difference Methods (http://www.cfd-online.com/Forums/main/107718-higher-order-spectral-difference-methods.html)

cfd seeker October 4, 2012 13:42

Higher Order Spectral Difference Methods
 
I came across a research paper in which problem was solved using Higher Order Spectral Difference Method. This method appears fantastic to me as it give very good results starting from very coarse mesh and its accuracy is also very good. I only use Fluent for my numerical work and Fluent don't have these methods in it. Has anybody ever had an experience with these methods? Thanks in advance

Regards

cfdnewbie October 4, 2012 13:53

Not the spectral difference method itself, but its closely related cousin, the spectral element method. But you won't find high order methods in most of the commercial solvers, they are almost exclusively used by researchers in their inhouse codes.

cfd seeker October 4, 2012 21:17

Quote:

Originally Posted by cfdnewbie (Post 384962)
Not the spectral difference method itself, but its closely related cousin, the spectral element method. But you won't find high order methods in most of the commercial solvers, they are almost exclusively used by researchers in their inhouse codes.

thanx cfdnewbie for sharing your experience, does spectral element method also works well with coarse meshes? and can we implement these spectral difference methods in Fluent through UDF?

nikola_m October 5, 2012 03:13

Hi man,

Implementing high order method like spectral difference trough UDF in FLUENT, would be engaging as turning a granny into a miss Venezuela.

I can suggest you few other alternatives.

1. Check out Nek5000 a free Spectral Element Method (SEM) code (it used to be Nekton in the late 80's). Other SEm codes you might download are Nektar, Semtex, ... To understand SEM, I suggest reading Deville, Fischer, Mund, or if you start using Nektar, Karniadakis, Sherwin.

2. Why not trying to implement Spectra Difference (SD) yourself. It won't be easy but it will be highly rewarding.
I suggest two papers:
Liu, Vinokur, Wang - Spectral difference method for unstructured grids I:Basic formulation, JCP 216 (2006) pp.780-801

and

Sun, Wang, Liu - High-Order Multidomain Spectral Difference Method for the Navier-Stokes Equations on Unstructured Hexahedral Grids, Commun. Comput. Phys., Vol. 2, No. 2, pp. 310-333

:cool:

P.S. If you think developing SD code on your own is a hard task- we can try doing it together.

cfdnewbie October 5, 2012 06:42

Quote:

Originally Posted by cfd seeker (Post 384993)
thanx cfdnewbie for sharing your experience, does spectral element method also works well with coarse meshes? and can we implement these spectral difference methods in Fluent through UDF?


yes, of course, it is well suited for coarse meshes. One can in fact show that a spectral difference method (the flavor Wang proposes) is identical to a spectral element method with nodal integration.

but forget about implementing that in Fluent... you can't turn a plough horse into a racer, even if you add some bells and whistles and ribbons to it :)

Nektar is a good place to start, or if you want to go DG, try the DG book by Hesthaven and Warburton (Springer), it has some Matlab code to get you going.

cfd seeker October 5, 2012 14:40

Quote:

Originally Posted by nikola_m (Post 385021)
Hi man,

Implementing high order method like spectral difference trough UDF in FLUENT, would be engaging as turning a granny into a miss Venezuela.

I can suggest you few other alternatives.

1. Check out Nek5000 a free Spectral Element Method (SEM) code (it used to be Nekton in the late 80's). Other SEm codes you might download are Nektar, Semtex, ... To understand SEM, I suggest reading Deville, Fischer, Mund, or if you start using Nektar, Karniadakis, Sherwin.

2. Why not trying to implement Spectra Difference (SD) yourself. It won't be easy but it will be highly rewarding.
I suggest two papers:
Liu, Vinokur, Wang - Spectral difference method for unstructured grids I:Basic formulation, JCP 216 (2006) pp.780-801

and

Sun, Wang, Liu - High-Order Multidomain Spectral Difference Method for the Navier-Stokes Equations on Unstructured Hexahedral Grids, Commun. Comput. Phys., Vol. 2, No. 2, pp. 310-333

:cool:

P.S. If you think developing SD code on your own is a hard task- we can try doing it together.

Thanx Nikola for your reply. I was just thinking if it's possible or not yah I know it's very difficult but I am having the trouble other way round as well. I am trying to do Flapping Wing Analysis in Fluent at Reynolds No of 2000 of course the flow transition will take place at this Re. No. Fluent's transitional turbulence models has very stringent requirements for wall y+ which means the I need very large mesh for this problem(of the order of 6 million cells), secondly the time period of the wing is very large approx. 36 sec, so in Fluent to simulate 36 sec on such a large mesh using of course a very small time step is just like a trying to climb Everest. But during literature survey I came across a paper "3D Flapping wing analysis using Higher order spectral difference methods" in which they used mesh size of 37,000 to simulate a 3D case but still producing very good results and I was shell shocked to read this. I consulted a FDM person and he told me that it is the beauty of Higher Order Spectral Difference methods that they give very good results starting with very coarse mesh. So I asked a question from myself that if these methods are so good then why Fluent still don't have incorporated these methods?

cfdnewbie October 5, 2012 14:57

Quote:

Originally Posted by cfd seeker (Post 385135)
. So I asked a question from myself that if these methods are so good then why Fluent still don't have incorporated these methods?

The short answer is: because they want to sell their product to as many people as possible and make money. That's why most commercial solvers are just second or first order with very very high dissipation - whatever situation the user throws at them, they will produce a stable result . The result might be total crap, but it gives you nice pictures to satisfy your boss. Sadly, oftentimes users of commercial CFD tools have no or little background in numerics, and they tend to believe every solution the code offers, without taking the limits of the underlying numerics into account - which is not helped by the fact that the CFD companies tend to be very tightlipped about what exact scheme their are using in their codes...

In short:
Low order schemes are easy to program, give you stable results and have a high tolerance for bullshit input. They will give you some pretty result, and the user doesn't call the hotline too often.

High order methods are more difficult to program, need a lot more input from the user and careful design of your problem (i.e. the user has to know exactly what he is doing) and will still blow up many times. If a company would produce a high-order code and sell it to their customers who would then make their under-trained employees use it, the poor person at the vendor hotline would go crazy.

To sum it up: There is no market for high order schemes, because there are very few people in the industry who could use them effectively and thus profit from them.

cfd seeker October 5, 2012 15:12

thanks cfdnewbie I got my answer. have you ever written any code or even try to write it for your work?

FMDenaro October 5, 2012 15:22

Quote:

Originally Posted by cfdnewbie (Post 385139)
The short answer is: because they want to sell their product to as many people as possible and make money. That's why most commercial solvers are just second or first order with very very high dissipation - whatever situation the user throws at them, they will produce a stable result . The result might be total crap, but it gives you nice pictures to satisfy your boss. Sadly, oftentimes users of commercial CFD tools have no or little background in numerics, and they tend to believe every solution the code offers, without taking the limits of the underlying numerics into account - which is not helped by the fact that the CFD companies tend to be very tightlipped about what exact scheme their are using in their codes...

In short:
Low order schemes are easy to program, give you stable results and have a high tolerance for bullshit input. They will give you some pretty result, and the user doesn't call the hotline too often.

High order methods are more difficult to program, need a lot more input from the user and careful design of your problem (i.e. the user has to know exactly what he is doing) and will still blow up many times. If a company would produce a high-order code and sell it to their customers who would then make their under-trained employees use it, the poor person at the vendor hotline would go crazy.

To sum it up: There is no market for high order schemes, because there are very few people in the industry who could use them effectively and thus profit from them.

I totally agree ...commercial codes have the goal to "satisfy" the final user letting him obtaining something he can call "a solution" ...
Recently we had a project, called LESinItaly, testing Fluent, TransAT, OpenFOAM, Code_Saturn and some FD, FV and spectral academic code in the LES of channel flow ... Fluent got the worst solutions owing to the large numerical viscosity.

I suggest to try in implementing a high order code ... note that even for FV method you can implement schemes with high order of accuracy and good spectral resolution using high order flux reconstruction and deconvolution approaches. I think that is suitable to be implemented in FLuent by UDF but it is a very hard work to do

cfdnewbie October 5, 2012 15:30

Quote:

Originally Posted by FMDenaro (Post 385143)
Recently we had a project, called LESinItaly, testing Fluent, TransAT, OpenFOAM, Code_Saturn and some FD, FV and spectral academic code in the LES of channel flow ... Fluent got the worst solutions owing to the large numerical viscosity.

That is very interesting! is there some publications of the results? In case you are interested, here are some results of a high order method workshop, although the focus was more on comparing HO academic codes, and not so much commercial software: http://zjw.public.iastate.edu/hiocfd/

FMDenaro October 5, 2012 15:54

Quote:

Originally Posted by cfdnewbie (Post 385145)
That is very interesting! is there some publications of the results? In case you are interested, here are some results of a high order method workshop, although the focus was more on comparing HO academic codes, and not so much commercial software: http://zjw.public.iastate.edu/hiocfd/

thank you for the link, we presented the results at the AIMETA conference
http://www.lamc.ing.unibo.it/aimeta2011/

and a full paper is now under progress

cfdnewbie October 5, 2012 15:58

thanks a lot, very interesting! Great to see such a comparison!

FMDenaro October 5, 2012 16:02

Quote:

Originally Posted by cfdnewbie (Post 385150)
thanks a lot, very interesting! Great to see such a comparison!

Thanks to you for the interest, you have to dowload the file MEM-331-2.pdf available in the section "Atti del Congresso".
The paper is written in english

cfdnewbie October 5, 2012 16:14

yes, I found it, thank you. I'm currently doing an LES of the channel with a DG code with implicit (no sgs) and smagorinkys model, so this comparison is very helpful. When your paper has been published, it would be great if you could share the doi, so I could cite it!
thanks again very much, and a nice evening!

nikola_m October 6, 2012 03:18

Hello again guys.

I was thinking, because we speak here about high order methods, that maybe this is the right place to say smt about my recent effort in this area...

I'm developing my own method (but maybe I will find out that somebody allready did it 30 years ago :confused:).
It is a collocation method using Bernstein polynomials. :cool:

You can download my code at:

http://code.google.com/p/bernstein-poly/

Give it a try and let me know what you think.

It has two versions - in Fortran and Python

The code is in it's infancy, and now it solves only two-point BVP's.
Newer version (not uploaded) solved some complicated non-linear IVP's like Korteweeg-de Vries-Burgers equation. I solved also Poisson eq. in 2D but there's some bug, I don't know what;s wrong (Poisson in 2D is available on request).

I have in plan some two papers to publish when I find time... But this bug in 2D is really killing me. Hope to find it soon and start with fluid problems by the end of the fall.


P.S. To cfd seeker: Now when you say what's the problem you're working on - I think the best way to go is Immersed Boundary Method.

cfd seeker October 6, 2012 10:19

good going guys cfdnewbie, nikola, filippo....its nice to have a such a nice and precious info from you people....I will look at your work in detail after the weekend and Nikola what is Immersed Boundary Method? sorry i don't know about this(yes I am young and new in this field and still learning) can you please explain more?

FMDenaro October 6, 2012 11:50

Quote:

Originally Posted by cfd seeker (Post 385210)
good going guys cfdnewbie, nikola, filippo....its nice to have a such a nice and precious info from you people....I will look at your work in detail after the weekend and Nikola what is Immersed Boundary Method? sorry i don't know about this(yes I am young and new in this field and still learning) can you please explain more?

The IB method is due to C.Perskin about 40 years ago, you can find many of his papers in JCP. Since that time, more versions and improvement were presented, you can find a review here
http://www.annualreviews.org/doi/abs....061903.175743

nikola_m October 6, 2012 13:14

The Immersed Boundary Method is one of the ways to treat fluid-structure interaction.

It became popular lately for two reasons:
  1. It is easy to write a new paper (pick any working method for CFD + one of the IB techniques + title "Combined XY and Immersed boundary method for three dimensional flows over complex geometries" = a paper in Int. J. Num. Meth. Fluids),
  2. Because you can simulate fluid flows over static and moving bodies without need to make complex body-fitted meshes. Often people just need small modifications of existing finite volume, finite-difference, compact finite difference or FEM code.

I can suggest two papers, which are really practical:

sbaffini October 6, 2012 15:31

Quote:

Originally Posted by FMDenaro (Post 385143)
I totally agree ...commercial codes have the goal to "satisfy" the final user letting him obtaining something he can call "a solution" ...
Recently we had a project, called LESinItaly, testing Fluent, TransAT, OpenFOAM, Code_Saturn and some FD, FV and spectral academic code in the LES of channel flow ... Fluent got the worst solutions owing to the large numerical viscosity.

I suggest to try in implementing a high order code ... note that even for FV method you can implement schemes with high order of accuracy and good spectral resolution using high order flux reconstruction and deconvolution approaches. I think that is suitable to be implemented in FLuent by UDF but it is a very hard work to do

As the one in charge of the Fluent simulations for the LESinItaly project and as a contributor to the forthcoming paper, i think there is the need for a clarification. In the work presented to the AIMETA congress cited by Filippo and now readily available, our main concern was about the feasibility of LES in Fluent with a BOUNDED CENTRAL SCHEME, as from practical experience it showed to be the most widely applicable scheme and we tought it would have had much more sense to asses the performances of such scheme instead of a less dissipative but less useful one. The results are in the conference proceedings and are in line with what Filippo has already said.

In the following we had times to also assess the performances of the unbounded scheme present in Fluent and, of course, everything changed. Such results are also present in a companion paper in the conference proceedings cited by Filippo (Lampitella et al.) and are those which will be used for the comparisons in the final paper.

We didn't change opinion on the suitability of the different schemes but it is certainly more fair to compare the codes at their best possibility (as, indeed, all the contributors of LESinItaly already did for the conference).

The main outcome from this new comparison does not show any particular difference indicating Fluent as worst than the other codes in predicting the main quantities from the wall-resolved channel flow case, not even the more fancy-spectral codes. However, differences still exist, of course.

Notice that this is also in line with some recent French-German collaboration on the LES-DES of the Ahmed car body, where the fancy spectral code failed to predict the Drag coefficient by 44%. Of course, there are reasons for this, very well explained in the paper (C&F 2011), but at the end of the day (several actually, due to the computing times) that was the number.

Having said so, i totally agree with you on everything and i also want to stress the fact that i am not working in ANSYS, i'm just an user.

Actually, coming to the original question, i also had my experience in trying to implement my own convective scheme in Fluent by UDF. It was a first order symmetry preserving central scheme, and i worked on trying to modify the basic first order upwind by a deferred correction approach, that is the most simple modification immaginable for a code because it only requires a very simple source term for each cell. However, i had no way to manage this and i didn't obtain the expected behaviour so i abandoned the idea. The fact is that, even with all the provided UDF macros to enter the code in all the possible places, the strict control is not possible. Notice that in Fluent you can implement your own scalar equation, and is also very easy to implement your own convection scheme; but this approach is limited to iterative p-v coupling approaches (no fractional step) and not applicable to the momentum equation.

If you extrapolate this experience to the main question of this post, i think that is actually impossible to work on UDFs to obtain a SFD code. Still, if Fluent had the proper routines to modify the schemes by deferred correction approach, than no limitation would exist in obtaining very high order schemes but still in a FV framework.

I don't know how much it fits with the cited work on Bernstein polinomials, but i recently found this work:

http://www-2.unipv.it/compmech/publications/2007_9.pdf

Also, if i remember well, there is some work by Kravchenko and Moin using NURBS interpolation in a FV framework with non matching interfaces.

But nothing similar is available, or at least i am not aware of. So your contribution is certainly welcome.

Finally, nek5000 certainly is a good reference. I would also suggest to take a closer look to this new entry of the opensource scene:

http://code.google.com/p/incompact3d/

Actually, it isn't available yet but it is very promising

nikola_m October 6, 2012 17:10

@sbaffini

Thanks!

The paper you linked is on Hughes Variational Multiscale Approch (interesting thing per se), and they use NURBS based finite elements. A recent Hughes effort is Isogemetric Analysis (cf. isoparametric elements). The idea is to use same functions to model the geometry in CAD and as trial functions in FEM.

I'm aware of Kravchenko and Moins work - they used B-splines for expansion in non-uniform direction in channel flow simulations, if I'm correct.

B-splines (and therfore NURBS) are very closely related with Bernstein polynomials.
Bernstein polynomials are very interesting on their own. Check out my blog (see link below) if you're interested to see more but don't have time to test the code.


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