Create a biharmonic operator
Hi all,
I would like to use a biharmonic operator for implicit calculation. I tried to use the laplacian of the laplacian but it didn't work. So should I implement a new operator? If yes, does anyone could help me to get started. I took a look at the laplacian scheme : /OpenFOAM/OpenFOAM-1.6.x/src/finiteVolume/finiteVolume/laplacianSchemes/laplacianScheme and I'm a little confused with the oriented object programming. Any help would be greatly appreciated. Pascal |
Hi Pascal,
I am facing the same problem right now. Did you were able to implement biharmonic operator ? Or maybe you know some other solution for this problem ? Thanks ZM |
Hi,
No solution have been found yet, but if you find one let me know. Pascal |
Hi Pascal,
The only solution I can think about is just explicit discretization. If you want to calculate laplacian(laplacian(f(x,y))) = fxxxx + 2fxxyy + fyyyy then you can make it like that: fvc::laplacian(fvc::laplacian(f)) -ZM |
Hi Ziemowit,
I tried this one but the stability condition on such explicit discretization seems very restrictive. I think it has for consequence that you need to reduce dt a lot. No? Pascal |
yes,
it is very possible... |
Hi all,
Have you managed to get working the laplacian(laplacian)? Using the explicit formulation my simple case blows up very quickly. /Eysteinn |
Hi Eysteinn,
I think that the best solution is just to solve two equations instead on one: laplacian(laplacian(f)) = g can be solves as: 1) laplacian(h) = g 2) laplacian(f) = h ZM |
Quote:
Thank you for the answer and sorry for my late answer. This does not seem to solve my problem. Yes it runs but diverges for the simplest cases. btw. my equation also includes time derivative + extra terms: http://upload.wikimedia.org/wikipedi...15a0eb8707.png /Eysteinn |
sorry, it should be:
... Of course third term is not nolinear but as far as I know there ... ... |
I think Mieszko algorithm for solving the fourth order equation is not right.
fvm::laplacian (h) =c fvm::ddt(c) = -fvc::laplacian (D, h) This is equal to fvm::ddt(c) = D*c |
yes,
you are right, it should be: h = fvc::laplacian (c) fvm::ddt(c) = -fvm::laplacian (D, h) This is equal to fvm::ddt(c) = -fvm::laplacian (D, fvc::laplacian (c)) |
All times are GMT -4. The time now is 04:44. |