|
[Sponsors] | |||||
|
|
|
#1 |
|
Senior Member
|
Hello all!
According to some standard books (Patankar, Versteeg, etc.), the common way of solving CFD-problems (abbreviatedly) consists of getting the equations into a form of aX + bX + cX = D, which is put into a matrix A of coefficients a, b and c and two vectors of X and D, basically giving a system [A] X = D. Several steps are needed for solving this equation system, among others - getting a, b and c into a form that makes [A] consisting of one diagonal of values instead of three (use of recurrence relations) - calculating the actual value for X based on the results of the recurrence calculations My question now is: In which parts of the code are these steps done? And how could these steps be manipulated? Ideally I would like to access the equations/matrices on a cell-level and change/control them cell-wise... I guess I will have to manipulate the matrices themselves, but how is that done? Any information/pointing to information would be highly welcome! Thank you all in advance! |
|
|
|
|
|
|
|
|
#2 |
|
New Member
Andreas Ruopp
Join Date: Aug 2009
Location: Stuttgart / Germany
Posts: 16
Rep Power: 5 ![]() |
Hi,
if you look into the solver ico-Foam for example, the main coefficients of the matrix are calculated with function A(): Code:
volScalarField rUA = 1.0/UEqn.A(); Code:
forAll(rUA,celli)
{
...
}
I'm facing almost the same problem and I need to manipulate the source term grad(vsf) (Manipulating source fvc::grad(vsf1+vsf2)) What is your physical application? Greetings Andy |
|
|
|
|
|
|
|
|
#3 | |
|
Senior Member
Santiago Marquez Damian
Join Date: Aug 2009
Location: Santa Fe, Santa Fe, Argentina
Posts: 371
Rep Power: 11 ![]() |
Quote:
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 |
||
|
|
|
||
|
|
|
#4 | |
|
Member
Avdeev Evgeniy
Join Date: Jan 2011
Location: Togliatty, Russia
Posts: 33
Blog Entries: 1
Rep Power: 4 ![]() |
Propably, I have same problem.
I want to save matrices A to separate file (A from AX=D). http://openfoamwiki.net/index.php/Op...x_coefficients Quote:
|
||
|
|
|
||
|
|
|
#5 |
|
Senior Member
|
I guess they want to do something similar that
Santiago Marquez Damian described in his post Can someone tell me more about vulashaka |
|
|
|
|
|
|
|
|
#6 |
|
Senior Member
Santiago Marquez Damian
Join Date: Aug 2009
Location: Santa Fe, Santa Fe, Argentina
Posts: 371
Rep Power: 11 ![]() |
Maybe you need http://openfoamwiki.net/index.php/Contrib_gdbOF, it has an specific tool to do that.
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 |
|
|
|
|
|
|
|
|
#7 |
|
Member
Avdeev Evgeniy
Join Date: Jan 2011
Location: Togliatty, Russia
Posts: 33
Blog Entries: 1
Rep Power: 4 ![]() |
Santiago, yes, GdbOF looks like what I want.
I've read GdbOF-Manual.pdf - it has a lot of, but very general examples like Example 3 "View Boundary Field values with gdbOF" Code:
$ (gdb) ppatchvalues vSF 0 Maybe it's very simple for describing - but I need at least one step-by-step example. I like example from (gdb)+OF Code:
go to cavity tutorial directory $cd cavity run icoFoam in debug $gdb icoFoam create breakpoint $b icoFoam.C:77 $run There are two ways of stepping in the file: $n (next) will step to the next line in the current file, but will not go into functions and included files. $s (step) will go to the next line, also in functions and included files. - I want similar, but for GdbOF (with pfvmatrixfull or pfvmatrixsparse commands). Can someone describe sequence of commands for describing? Or correct me, if I do something wrong. |
|
|
|
|
|
|
|
|
#8 |
|
Senior Member
Santiago Marquez Damian
Join Date: Aug 2009
Location: Santa Fe, Santa Fe, Argentina
Posts: 371
Rep Power: 11 ![]() |
Well, it suppose some basic knowledge about gdb as a pre-requisite, tell us which solver do you want to debug and what system within it.
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 |
|
|
|
|
|
|
|
|
#9 |
|
Member
Avdeev Evgeniy
Join Date: Jan 2011
Location: Togliatty, Russia
Posts: 33
Blog Entries: 1
Rep Power: 4 ![]() |
Solver - let it be simpleFoam.
Which solver to use - not matter for me (at least I think so now). What system within solver... == what algoritm of solver? About simpleFoam exist article here The_SIMPLE_algorithm_in_OpenFOAM but equations of solver far from Ax=b (it would be cool for me to know this moment, where equation like Code:
fvm::div(phi, U) - laplacian(nu, U) Also if needs case for example of debugging - it could be $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily Thanks. |
|
|
|
|
|
|
|
|
#10 | |
|
Senior Member
Santiago Marquez Damian
Join Date: Aug 2009
Location: Santa Fe, Santa Fe, Argentina
Posts: 371
Rep Power: 11 ![]() |
Well,
Quote:
Code:
00058 solve 00059 ( 00060 fvm::ddt(T) 00061 + fvm::div(phi, T) 00062 - fvm::laplacian(DT, T) 00063 ); then go the case directory, for eample $FOAM_TUTORIALS/basic/scalarTransportFoam/pitzDaily and start gdb $ gdb scalarTransportFoam once you you're within gdb: $ start $ b fvMatrixSolve.C:140 $ continue $ pfvmatrixfull this AdvDiff.dat $ shell cat AdvDiff.dat these lines will show you the matrix for this system. You also can read the AdvDiff.dat in octave or Matlab as a matrix. 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 |
||
|
|
|
||
![]() |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Force can not converge | colopolo | CFX | 13 | October 4, 2011 22:03 |
| How to find the product of A+ matrix and A- matrix | arjun shanker | Main CFD Forum | 0 | November 12, 2010 22:12 |
| OpenFOAM version 1.6 details | lakeat | OpenFOAM Running, Solving & CFD | 42 | August 26, 2009 21:47 |
| A question about matrix eigenvalues. | Demidov | Main CFD Forum | 0 | November 14, 2004 04:51 |
| Elemtary matrix to CSR global matrix | xueying | Main CFD Forum | 2 | September 24, 2002 09:44 |