set fvMatrix coefficients equal to those of another cell
Hello all,
I have a problem in which I want to set the solution dependency of a particular subset of cells to that of another subset of cells, i.e. I need to set the fvMatrix coefficients in UEqn for a particular subset equal to a different subset, iterating per cell. I have done considerable reading about the addressing format for the lduMatrix but it isn't clear to me whether I can do what I need. Also I have looked at the setValues function in fvMatrix but that involves setting the value within the cell to a constant value. I want to preserve the dependency of the other cell on its neighbors when the equation is solved. Is this possible using the current mechanics of the fvMatrix, or would I need to create my own addressing system to allow me to do this? Any help would be great, I am kind of stuck and my thesis is dependent on getting this to work. Thanks, Austin |
Austin, changing the coeffs in a fvMatrix is possible like in negSumDiag (lduMatrixOperations.C) method, for example. In this method info from non-diagonal coeffs is readed and subtracted from diagonal coeffs.
Code:
00050 void Foam::lduMatrix::negSumDiag() Feel free to do more questions. Regards. |
Thank you for the bit of code, it was most helpful.
After further searching I came upon a sample solver on the openfoamwiki site called icoBlockedCellFoam which also does similar operations on the fvMatrix coefficients. Between your code and this other code I have been able to understand what the coefficients are doing within the matrix. Fortunately I have also discovered that the method I am trying to implement does not in fact require me to operate on these coefficients directly - instead I can operate on the actual values of phi and U to obtain the needed results. |
Austin, good to hear you managed the problem.
Best wishes with your thesis. |
All times are GMT -4. The time now is 07:29. |