CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > OpenFOAM Programming & Development

set fvMatrix coefficients equal to those of another cell

Register Blogs Members List Search Today's Posts Mark Forums Read

Reply
 
LinkBack Thread Tools Display Modes
Old   July 31, 2011, 02:37
Default set fvMatrix coefficients equal to those of another cell
  #1
New Member
 
Austin Kimbrell
Join Date: Feb 2011
Location: Tennessee, USA
Posts: 8
Rep Power: 6
akimbrell is on a distinguished road
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
akimbrell is offline   Reply With Quote

Old   August 1, 2011, 14:59
Default
  #2
Senior Member
 
santiagomarquezd's Avatar
 
Santiago Marquez Damian
Join Date: Aug 2009
Location: Santa Fe, Santa Fe, Argentina
Posts: 418
Rep Power: 15
santiagomarquezd will become famous soon enough
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()
00051 {
00052     const scalarField& Lower = const_cast<const lduMatrix&>(*this).lower();
00053     const scalarField& Upper = const_cast<const lduMatrix&>(*this).upper();
00054     scalarField& Diag = diag();
00055 
00056     const labelUList& l = lduAddr().lowerAddr();
00057     const labelUList& u = lduAddr().upperAddr();
00058 
00059     for (register label face=0; face<l.size(); face++)
00060     {
00061         Diag[l[face]] -= Lower[face];
00062         Diag[u[face]] -= Upper[face];
00063     }
00064 }
I think you can use this method and others from the same file to prepare your code.

Feel free to do more questions. Regards.
__________________
Santiago MÁRQUEZ DAMIÁN, Ph.D.
Post-doctoral Fellow
Research Center for Computational Mechanics (CIMEC) - CONICET/FICH-UNL
T.E.: 54-342-4511594 Ext. 1005
Güemes 3450 - (3000) Santa Fe
Santa Fe - Argentina
http://www.cimec.org.ar
santiagomarquezd is offline   Reply With Quote

Old   August 8, 2011, 01:12
Default
  #3
New Member
 
Austin Kimbrell
Join Date: Feb 2011
Location: Tennessee, USA
Posts: 8
Rep Power: 6
akimbrell is on a distinguished road
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.
akimbrell is offline   Reply With Quote

Old   August 8, 2011, 08:32
Default
  #4
Senior Member
 
santiagomarquezd's Avatar
 
Santiago Marquez Damian
Join Date: Aug 2009
Location: Santa Fe, Santa Fe, Argentina
Posts: 418
Rep Power: 15
santiagomarquezd will become famous soon enough
Austin, good to hear you managed the problem.

Best wishes with your thesis.
__________________
Santiago MÁRQUEZ DAMIÁN, Ph.D.
Post-doctoral Fellow
Research Center for Computational Mechanics (CIMEC) - CONICET/FICH-UNL
T.E.: 54-342-4511594 Ext. 1005
Güemes 3450 - (3000) Santa Fe
Santa Fe - Argentina
http://www.cimec.org.ar
santiagomarquezd is offline   Reply With Quote

Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Cell Reynolds Number laliong Main CFD Forum 11 March 19, 2015 12:42
low-level use of fvMatrix Conny_T OpenFOAM Programming & Development 3 September 20, 2010 14:54
How to show the transient case? H.P.LIU Phoenics 7 July 13, 2010 04:31
How to look at the coefficients from fvMatrix marco7 OpenFOAM Running, Solving & CFD 2 September 11, 2008 03:58
How to set environment variables kanishka OpenFOAM Installation 1 September 4, 2005 10:15


All times are GMT -4. The time now is 11:53.