Matrix addressing
hi,
I m currently have to make some matrix calculations and therefore created a matrix like Code:
Matrix<scalarField,scalar> D(2,1); The code compiles, but I don t think I am addressing the first element in the first row. Simple question: How can I address the different elements of the matrix? I ve already searched the forum, but could not find the answer. Additionally: How can I do a element/element multiplication with two matrices? Example: Quote:

To answer the second question, what you have there is the dot product, right?
Openfoam implements the dot product of two vectors using Code:
VectorA & VectorB However, your `pow' call is going to return 1 every time  you have x^0. 
hi,
first of all thx. I really need to know which mathematical operations are available for objects of class "matrix" . Is there anywhere an overview? I already installed "armadillo", because I could not do Code:
Term[celli]= (D*Prod.T()).value(); and got: Quote:
EDIT: I know about the pow returning always 1  I implemented several similar functions which differ in the exponent  I ll probably change this one later for saving a little bit time when running the program. EDIT2: I also tried now Code:
Prod = SF & w; only getting: Quote:

Dear Maybee,
Firstly, sorry for the problems you're having with multiplication  I have checked the documentation more closely and noticed that the dot product is (unsurprisingly) not defined for matrices  only vectors. Hence Code:
A & B The documentation for OpenFOAM is available online at http://www.openfoam.org/docs/cpp/ There you will see a search bar in the top right  you can use this to search for functions, or classes, etc. In your case, you would want the class Matrix. (Classes are displayed in the dropdown list as eg Code:
Matrix Foam. I'm unsure what acceptable "Form" is for a matrix  if you or someone else can give a link to documentation explaining this, or alternatively, explain this, that'd be really useful I imagine. My initial guess is that Form describes eg SquareMatrix, SymmetricSquareMatrix, RectangularMatrix etc. As a result of this, part of me feels like you're getting undefined operators because your template substitution is messing you up. If you type Code:
Matrix<Banana<double>, double> D(2,1) Code:
Matrix<scalarField, scalar> D(2,1) I ask because GeometricField<scalar> (== scalarField via typeDef) is not listed as a Form as far as I can see, so I'm wondering if that is because I can't find a suitable list of "Form"s, or if it is not a valid construction. Best, Christian 
Hi,
I ve already used the FOAM Docs to search for the matrix class: http://www.openfoam.org/docs/cpp/ But there is not much documentation about mathematical methods that can be used on matrices! I also could not find any list for valid "Forms", only: http://www.cfdonline.com/Forums/ope...m16ext.html Quote:
I ll use armadillo now, perhaps OpenFOAM s Matrix class is not finished yet (?).... greetings maybee 
I guess this might help:
http://www.foamcfd.org/Nabla/guides/...sGuidese4.html 
nice, but still I ll use armadillo since I am working with matrices and not tensors.

Of course the Matrix class works. It's not there for nothing.
Quote:
What is the form of you matrix? Rectangular/Square/Diagonal/Symmetric? You would then do: Matrix<RectangularMatrix<scalar>, scalar> D(2,1); or shorthand (see scalarMatrices.H): scalarRectangularMatrix D(2,1); Most standard matrix operations are available. 
Ok,
I missread the translation of "rectangular" when translating it :/ . Is there anywhere a list/reference of the matrix operations in OpenFOAM? Furthermore is there defined a method for this operation Quote:

All times are GMT 4. The time now is 04:46. 