[solved]differentiation in one direction
Dear Foamers,
Does anyone of you know what is the best way to dicsretize following problem: we have: f(x,y) -- scalar function we need: f_xxxx (fourth order) differentiation but only in one direction. i.e. laplacian(f) = f_xx + f_yy but I need only f_xx (in fact I need f_xxxx) Thanks ZM |
You should use a difference quoutient, like you have propably seen for f_x. You can perform the difference quotient "four" times or you can have a look here (they have already done it for you):
http://en.wikipedia.org/wiki/Difference_quotient Probably it should be the best for you to read the whole article, but you can also jump ahead to: http://en.wikipedia.org/wiki/Differe....C5.83th_Order |
Thanks :)
This I know. I didn't put it explicit in my question but I need to know how to make it in OpenFOAM. -Best |
so far I found such explicit solution:
volVectorField gradT=fvc::grad(T); // (T_x, T_y) volScalarField Txxxx = gradT.component(0); // T_x gradT = fvc::grad(Txxxx); // (T_xx, T_xy) Txxxx = gradT.component(0); // T_xx gradT = fvc::grad(Txxxx); // (T_xxx, T_xxy) Txxxx = gradT.component(0); // T_xxx gradT = fvc::grad(Txxxx); // (T_xxxx, T_xxxy) Txxxx = gradT.component(0); // T_xxxx Maybe someone have some better idea ? Is it possible to descritize T_xxxx implicitly ? -ZM |
It seems that problem can be solved (after Akidess suggestion ):
"... it sounds like you want anisotropic diffusion - why not just pass a diffusion coefficient tensor to laplacian instead of a scalar?..." from: http://www.cfd-online.com/Forums/ope...-operator.html So, x - direction diffusion: DTe1D DTe1D [ 0 2 -1 0 0 0 0 ] (3e-02 0 0 0 0 0 0 0 0 ); x,y and - directions diffusion: DTe3D DTe3D [ 0 2 -1 0 0 0 0 ] (3e-02 0 0 0 3e-02 0 0 0 3e-02 ); for f_xxxx it can be done as follows : suppose we have equation f_xxxx = g(x,y), substitution: h = f_xx so we have two "one-directional" Poison equations to solve: h_xx = g(x,y) f_xx = h(x,y) in OF: fvm::laplacian(DTe1D, h) == g fvm::laplacian(DTe1D, f) == h |
All times are GMT -4. The time now is 17:58. |