varying cp with temperature .
In the buoyantBousinessqSimpleFoam solver i want to vary my Cp with temperature . How should i write the program for this ?
|
As a start , lets say i want to vary Cp in the following manner :
Cp = C*tanh(mT) ; I write the program in the following manner : Code:
Info<<" Reading field Cp "<<endl ; Code:
dimensionedScalar m (laminarTransport.lookup("m")); In TEqn.H i have the added a source term . and hence need Cp . I add it in the following manner . Code:
Cp = C*tanh(mT); Code:
--> FOAM FATAL ERROR: |
i think, this is something to do with dimensional consistency for LHS and RHS. From the error message it may said that the term "C*tanh(mT)" should have the units of cp.
An alternative way is use JANAF tables. |
1) you can use thermodynamic table which is implemented in open foam
2) but whats the dimension of c and cp, does they have the same dimensions? if yes, try it forAll (C,celli) {cp[celli]=c[celli]*tanh(m*T[celli]) } or define m as dimless and use T.value() to get just the value of it |
@chandramurthy : C has the dimensions of Cp and m*T is dimensionless. .... m has dimensions of [ 0 0 0 -1 0 0 0 ] while T has that of [0 0 0 1 0 0 0].... The error says that m*T is not dimensionless .... which is not very clear to me ...
|
@nimasam : C and Cp have the same dimensions . regarding the loop you have suggested when i declare C and Cp as volScalarFields and simply do Cp = C*tanh(m*T) shouldnt it be executed on all cells ?
|
u are right, every thing seems correct! but those two suggested methods were to insure that variable are dimensionless
|
@nimasam I get the following error for the first one :
error: ‘struct Foam::volScalarField’ has no member named ‘value’ for the second one : error: cannot convert ‘Foam::dimensioned<double>’ to ‘double’ in assignment |
Hi,
value() is a method for scalars, not for volScalarFields. You have to loop over cells to use it. Did you check mT is actually dimensionless (you did not say how you define it in the code). Best, |
@alberto i define m in transportProperties in the following manner :
Code:
m m [0 0 0 -1 0 0 0] 0.2; as Code:
dimensionedScalar m (laminarTransport.lookup("m")); Code:
error: cannot convert ‘Foam::dimensioned<double>’ to ‘double’ in assignment |
Use
m.value() However it should really work with fields without looping. Best, |
about janafthermo
Quote:
i am very new to openfoam, is it possible to use janafthermo.H while using the interfoam solver?? basically i want to vary Cp and density with temperature and pressure in a 2 phase incompressible vof problem. Please help me out in this matter. regards, karthik |
that gives the following error :
Code:
error: call of overloaded ‘tanh(double)’ is ambiguous |
problem solved . Thanks everyone . I was including the variation in a header file . Once this was removed and added it in TEqn.H ... it worked ... thanks a lot for your help .
|
ambiguous
Quote:
use Foam::tanh(....) instead of tanh() , it will cure the pain;) |
In case of varying Cp with temperature , i wish to vary it conditionally .
What i mean is : for T < Tvalue Cp = f(T) ; for T >= Tvalue Cp = g(T) ; in such a case i am not able to use the standard operators like >= or > or < My code is as follows: Code:
forAll(T,celli) Code:
TEqn.H: In function ‘int main(int, char**)’: Code:
In readTransportProperties.H |
dear friend you can not assign a dimension Scalar to a scalar so use value()
Tleft.value() and so on |
thanks ,
that was a lesson learnt .... |
I am solving a heat transfer problem with water as fluid . So far I am using the buoyantBousinessqSimpleFoam solver . This solver however has the temperature formulation instead of the enthalpy formulation for the energy equation . That is correct considering that Cp and rho are assumed to be constant . I wish to formulate the energy equation using enthalpy . Can any of the already available solvers do this ? I went through the tutorials of solvers which are present in OF170 , what i found was that all of them used the working substance as air , assuming it as a perfectGas . This was declared in constant/thermophysicalProperties as :
Code:
/*--------------------------------*- C++ -*----------------------------------*\ |
When i rewrite the enthalpy equation as :
Code:
fvScalarMatrix hEqn Code:
incompatible fields for operation |
It means that you are trying to solve for two variables within one equation.
|
Thanks. That is clear . However a formulation like below ,
Code:
fvScalarMatrix hEqn |
Hi BalKrishna
Have you found the solution for this problem. How can some body solve 2 variables here. Regards Rohith |
Dear sir,
I am getting the error after using Foam::tanh(...) The error is: call of overloaded ‘tanh(const int&)’ is ambiguous c[ignCell] =1-Foam::tanh(ignSite.cells()[icelli]); The code is: forAll(ign.sites(), i) { const ignitionSite& ignSite = ign.sites()[i]; if (ignSite.igniting()) { forAll(ignSite.cells(), icelli) { label ignCell = ignSite.cells()[icelli]; c[ignCell] =1-Foam::tanh(ignSite.cells()[icelli]); } } } |
Dear sir,
I am getting the error after using Foam::tanh(...) The error is: call of overloaded ‘tanh(const int&)’ is ambiguous c[ignCell] =1-Foam::tanh(ignSite.cells()[icelli]); The code is: forAll(ign.sites(), i) { const ignitionSite& ignSite = ign.sites()[i]; if (ignSite.igniting()) { forAll(ignSite.cells(), icelli) { label ignCell = ignSite.cells()[icelli]; c[ignCell] =1-Foam::tanh(ignSite.cells()[icelli]); } } } |
Hi Sandip,
I hope tanh in openfoam takes only a value i.e if you define a dimensionedScalar then please define its value. See that there exists no Fields. I See Ignsites is a constant, i am not sure. If you can define it so. Best Regards, Rohith |
Thanks Raghavendra
I have tried with the interger value 5, but still i am getting the same error: call of overloaded ‘tanh(int)’ is ambiguous c[ignCell] =Foam::tanh(5); |
Hello friends,
I am compile the below mention code and i am getting the error error: ‘distance’ was not declared in this scope c = Foam::tanh[distance]; Code:
|
Quote:
Hi i knw this post is old but i need help on this problem :D in my case Cp varies in different locations, so I need to write energy equation with enthalpy. I wrote it like this: Code:
fvScalarMatrix EEqn can u help me?:confused: |
Hi,
The only error i see is that you have defined enthalpy as E=cp*T But it is deltaE = cp*deltaT. Hope it helps Regards, Rohith |
Quote:
thank u for ur response:) but I didnt get it!:confused: if we replace E with cp*T in Code:
( Code:
( actually first I tried TEqn like this: Code:
( but when I assume that cp is constant! like this: Code:
( so I tried EEqn :D |
All times are GMT -4. The time now is 20:17. |