
[Sponsors] 
October 20, 2015, 04:28 
boundary conditions effect on Matrix coefficients

#1 
New Member
Join Date: Oct 2015
Posts: 15
Rep Power: 2 
Hi all,
I am trying to understand how openfoam generates the matrices for the differential operators. I have programmed a simple example for the laplacian operator: Code:
// Define a matrix that contains the coefficients of the Laplacian fvScalarMatrix TEqnLaplaciano ( fvm::laplacian(DT, T) ); // Extract source term, matrix diagonal, upper and lower nonzero elements and their indices scalarField& source_ = TEqnLaplaciano.source(); scalarField& lower_ = TEqnLaplaciano.lower(); scalarField& upper_ = TEqnLaplaciano.upper(); scalarField& diag_ = TEqnLaplaciano.diag(); const unallocLabelList& l_ = TEqnLaplaciano.lduAddr().lowerAddr(); const unallocLabelList& u_ = TEqnLaplaciano.lduAddr().upperAddr(); Info<< "\n diagvalues: \n " << diag_ << endl; Info<< "\n lowervalues: \n " << lower_ << endl; Info<< "\n lowerAddr: \n " << l_ << endl; Info<< "\n Uppervalues: \n " << upper_ << endl; Info<< "\n UpperAddr: \n " << u_ << endl; Info<< "\n sourcevalues: \n " << source_ << endl; * Matrix Diagonal terms * Matrix out of diagonal terms * Indices of the out of diagonal terms * source terms (right hand side of the linear system) (zero in my example) But the effect of the boundary conditions is not yet included in the matrix and source term that I get. My question is: How can I get the contribution (coefficients and indices) of the Boundary Conditions to the matrix coefficients (diag and outofdiag) and to the source term? Thanks in advance for your help. CME 

February 24, 2016, 18:16 

#2 
New Member
Join Date: Aug 2012
Posts: 21
Rep Power: 5 
same question here. any news on this?


March 1, 2016, 11:46 

#3 
New Member
Join Date: Oct 2015
Posts: 15
Rep Power: 2 
Hi gigilentin8i,
Not much on this unfortunaltely: I have use these two extra lines to get the information from the boundary conditions: Code:
Info <<"\n TEqnLaplaciano.boundaryCoeffs() \n " << TEqnLaplaciano.boundaryCoeffs() << endl; Info <<"\n TEqnLaplaciano.internalCoeffs() \n " << TEqnLaplaciano.internalCoeffs() << endl; Carlos 

March 1, 2016, 20:47 

#4  
New Member
Join Date: Aug 2012
Posts: 21
Rep Power: 5 
Thanks Carlos,
this explains why I am getting incorrect results for the eigenvalues/functions of the laplacian when the mesh is non cartesian. does this mean that the additional nonorthogonal contribution are in TEqn.source()? If this is the case I could just try to put them back in the matrix. or how about using an uncorrected or fourth scheme? I was able to add the boundary condition contribution to the matrix with this code Code:
forAll(TEqn.internalCoeffs(), patchI) { const label* fPtr = TEqn.lduAddr().patchAddr(patchI).begin(); Field<double> intF(TEqn.internalCoeffs()[patchI].component(0)); forAll(TEqn.lduAddr().patchAddr(patchI), faceI) { label fCell = fPtr[faceI]; diag(fCell) = intF[faceI]; } } Quote:


Thread Tools  
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
Setting the height of the stream in the free channel  kevinmccartin  CFX  10  July 9, 2015 21:36 
CGNS Boundary conditions using SU2  denzell  SU2  2  February 20, 2015 15:33 
Error finding variable "THERMX"  sunilpatil  CFX  8  April 26, 2013 07:00 
How the boundary conditions are disposed into the matrix coefficient?  mxylondon  OpenFOAM  1  March 1, 2013 17:03 
Matrix coefficients from boundary conditions how  tehache  OpenFOAM Running, Solving & CFD  10  October 16, 2011 18:26 