Hello OF people! It's me ag
Hello OF people!
It's me again, looks like I have too much questions, probably I haven't learned how to read code yet.. I'm trying to get my first solver working, but it's not so easy to find out from sources what exactly function
tmp<volscalarfield> fvMatrix<type>::A() const
tmp<geometricfield<type,> > fvMatrix<type>::H() const
is returning! In several papers momentum equation discretisation is shown in this form "a_P U_P = H(U) - grad(p)". OF has it's functions A() and H() which appear in many solvers for p-U coupling.
For example, I added rho to icoFoam equation
+ fvm::div(phi, U)
- fvm::laplacian(mu, U)
calculated phi as: "linearInterpolate(rho*U) & mesh.Sf()"
..and was hoping, that there is no need to modify
U = rUA*UEqn.H();
phi = (fvc::interpolate(U) & mesh.Sf())
+ fvc::ddtPhiCorr(rUA, U, phi);
since there is rho in UEqn. Sure, I was wrong, so I need to understand those functions.. Maybe you can help with this (explain, give a link to www or paper)? Basically the question is about how to write PISO loop for compressible flow and any kind of momentum eq.!
A() should return a Field of t
A() should return a Field of the same length of that describing the variable for which the matrix is solved for; the value of this field should be the diagonal term of the matrix. The output of H() is of the same size of the output of A(), and each of its element should be obtained by multiplying the neighbours' coefficients for the corresponding velocity (or whichever is the unknown) values and summing them all. For transient flows, add another previous step velocity term.
As for your solver... why don't you take a look at the "rhoSimpleFoam" sovler in the "compressible" folder? It could be a better start for compressible flow solver design
|All times are GMT -4. The time now is 10:40.|