Psat
Hello,
I'm currently trying to implement the saturation pressure into the solver twoLiquidMixingFoam, so far what I have written is : { forAll(psat,celli){ if (ELSATl[celli] > 200.) { psat[celli]=cfit*exp(c1 + c2/(Tl[celli] ) +c3*log(Tl[celli]/one ) +c4*pow(Tl[celli],c5)); } else { psat[celli]=0.*pfit; } } } But when I compile i get the following error message : error: cannot convert ‘Foam::dimensioned<double>’ to ‘double’ in assignment I've chosen the unit of the constant c1..c5 and one, such that they give a dimensionless term inside the exponential and the log function. But cfit has a dimension of pressure. Somehow when I withdraw the 'celli' term from psat I don't have any problem, but since I need to apply the temperature condition for all control volume, I feel like I have to keep (celli) this term. Does anybody know how to solve the problem ? |
1) define Psat as volScalarField
2) if you did! , then pfit is dimensionedScalar but pSat[celli] is Scalar so! use pfit.value() or same for cfit you can use cfit.value() P.S: T has dimension T[celli] has no dimension .value() return only value not dimension now you should handle it ;) |
Thank you nimasam for your answer,
I've tried what you said and the message error message is the same, so I added .value() to the constant c2 and c4 since they are not dimensionless : { forAll(psat,celli){ if (ELSATl[celli] > 200.) { psat[celli]=cfit.value()*exp(c1 + c2.value()/(Tl[celli] ) +c3*log(Tl[celli] ) +c4.value()*pow(Tl[celli],c5)); } else { psat[celli]=0.*pfit.value(); } } } The error message obtained is error: call of overloaded ‘log(double&)’ is ambiguous. Do you have an idea of what the problem could be ? |
use
Foam::log instead of log |
you need to put .value() on all c's. c1, c3 and c5 as well
|
Thanks you nimasan and niklas,
I have taken your advice and it works, this is what I wrote : { forAll(psat,celli){ if (ELSATl[celli] > 200.) { psat[celli]=cfit.value()*Foam::exp(c1.value() + c2.value()/(Tl[celli] ) +c3.value()*Foam::log(Tl[celli] ) +c4.value()*Foam::pow(Tl[celli],c5.value())); } else { psat[celli]=0.*pfit.value(); } } } |
All times are GMT -4. The time now is 23:21. |