CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   How to use Spab function (https://www.cfd-online.com/Forums/openfoam-solving/58441-how-use-spab-function.html)

booz October 20, 2008 11:16

Hello everybody, i´m using
 
Hello everybody,

i´m using the following equation

tmp<fvvectormatrix> VEqn
(
fvm::div(-phi,V)
+ (gradU & V)
+ alpha & V // (*)
);

The problem is, that alpha and V are volVectorFields and (*) will be a scalar. Like in Programmers Guide for (*) i used

fvm::Sp(alpha&V, I) // I initialvector

In my createFields i use for I

dimensionedVector I
(
"I",
dimensionSet(0, 0, 0, 0, 0, 0, 0),
vector(1,1,1),
);

But i get the following error message:

createFields.H: In function 'int main(int char**)':
createFields.H:110: error: expected primary-expression before ')' token
AdjAlphaFoam_Vers2.C:81: error: no matching function for call to 'Sp(Foam::tmp<foam::geometricfield<double,> >, Foam::dimensionedVector&)'
make: *** [Make/linuxGccDPOpt/AdjAlphaFoam_Vers2.o] Error 1

Is the "Sp(a,b)" operator the right solution for to use (*) in OpenFoam?

For any answers i will be very happy!

Thanks a lot,
Khaled Totakhel

hjasak October 22, 2008 07:58

What is on like 110 in createF
 
What is on like 110 in createFields.H? Looks like you've got a syntax error. The operator fvm::Sp will take a scalar linearised field for the first argument and the field you are solving for as the second. Your second argument seems to be a dimensionedVector and not the thing you are solving for.

Hope this helps,

Hrv

niklas October 22, 2008 08:08

first off, I have no idea what
 
first off, I have no idea what you are trying to do
so this will be an answer based purely on the visual inspection of your constructor...
there is a comma after vector(1,1,1) that shouldnt be there.

booz October 22, 2008 08:46

Hello Niklas, i'll try the
 
Hello Niklas,

i'll try the Sp(a,b)-operator to solve (*) implicit.
In Programmers Guide "a" must be a scalar or volScalar -typ and "b" a vol<type>Field. I thought if i use an inititalvector I for b, i reach my goal!

Regards,
Khaled

booz October 22, 2008 08:51

Hello Hrvoje, thanks for yo
 
Hello Hrvoje,

thanks for your answer. But how can I use an initialvector (1,1,1) as volVectorField for the second argument of Sp(a,b) without:

volVectorField I
(
IOobject
(
"I",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh
);

in my createFields?

Regards,
Khaled


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