|
[Sponsors] |
September 28, 2011, 12:32 |
error: no match for ‘operator>’
|
#1 |
Member
,...
Join Date: Apr 2011
Posts: 92
Rep Power: 14 |
Hi Guys
I want to add a if condition in the following form to my code if (hStar > TLSTar) { gl = 1; } but when I compile it the following error is being produced "error: no match for ‘operator>’ in ‘hStar > TLStar’" hStar is a VolScalarField and TLStar is dimensioned scalar field. I would appreciate if you help me fix it! |
|
September 28, 2011, 15:53 |
|
#2 | |
Senior Member
|
Quote:
try this: (hStar.value()) > (TLSTar.value())
__________________
Amir |
||
September 28, 2011, 16:19 |
|
#3 |
Member
,...
Join Date: Apr 2011
Posts: 92
Rep Power: 14 |
Hi AMIR
Thanks for your comment. I tried (hStar.value()) > (TLSTar.value()) but it gives another error error: ‘struct Foam::volScalarField’ has no member named ‘Value’ |
|
September 28, 2011, 16:22 |
|
#4 | |
Senior Member
Nima Samkhaniani
Join Date: Sep 2009
Location: Tehran, Iran
Posts: 1,266
Blog Entries: 1
Rep Power: 24 |
Quote:
if (hStar[celli] > TLSTar.value()) { gl[celli] = 1.0; } } gl is volScalarField ? |
||
September 28, 2011, 16:24 |
|
#5 |
Member
,...
Join Date: Apr 2011
Posts: 92
Rep Power: 14 |
Thanks NIMA, Yep gl is volScalarField!
I will try that right away! |
|
September 28, 2011, 16:45 |
|
#6 |
Member
,...
Join Date: Apr 2011
Posts: 92
Rep Power: 14 |
Nima and Amir Thanks!
The problem has been fixed and the code sounds good now!! |
|
October 25, 2011, 06:46 |
|
#7 |
New Member
Sibusiso Mavuso
Join Date: Jul 2010
Location: South Africa/Pretoria
Posts: 22
Rep Power: 15 |
thanx guys, this helped. i had the same error.
|
|
October 25, 2011, 08:10 |
error: no match for 'operator=='
|
#8 |
New Member
Sibusiso Mavuso
Join Date: Jul 2010
Location: South Africa/Pretoria
Posts: 22
Rep Power: 15 |
Hi guys
I am trying solve the following: forAll(mAbsorbed, celli) { if(mAbsorbed[celli] <= rhoSs.value()) { solve(fvm::ddt(1.0-epsVoid,rhoS) == mAbsorbed[celli]); } } else { Info<< "\nrhoS - MHydride density = " << max(rhoS).value(); Info<< " has reached saturation density of " << rhoSs.value(); Info<< " kg/m^3.\n"<< endl; } so that if the value of mAbsorbed (a volScalrField) exceeds or equals the value of rhoSs a dimensionedScalar the program should a statement as above. but I get the following error: error: no match for 'operator==' in 'Foam::fvm::ddt(const Foam::dimensionedScalar&, Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh>&) [with Type = double](((Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>&)(& rhoS))) == mAbsorbed.Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>::<anonymous>.Foam:imensionedField <double, Foam::volMesh>::<anonymous>.Foam::Field<double>::< anonymous>.Foam::List<double>::<anonymous>.Foam::U List<T>:perator[] [with T = double](celli)' ... please help me fix this error. thank u. |
|
October 25, 2011, 09:42 |
|
#9 |
Senior Member
Nima Samkhaniani
Join Date: Sep 2009
Location: Tehran, Iran
Posts: 1,266
Blog Entries: 1
Rep Power: 24 |
you are going to import a strange format in openFOAM structure, it cant resolve ur data type, you are going to solve different variable from dimensionedScalar, UList and volScalarField its impossible in this way!
|
|
October 25, 2011, 10:00 |
|
#10 |
New Member
Sibusiso Mavuso
Join Date: Jul 2010
Location: South Africa/Pretoria
Posts: 22
Rep Power: 15 |
hi nimasam
Thanks, I tried it and I get: error: 'deltatime' was not declared in this scope. and i tried deltaTime and i get same error. how do i declare deltatime? |
|
October 25, 2011, 10:37 |
|
#12 |
New Member
Sibusiso Mavuso
Join Date: Jul 2010
Location: South Africa/Pretoria
Posts: 22
Rep Power: 15 |
http://ywang.eng.uci.edu/Publication...age%20beds.pdf
from the article above. i am trying to solve these equations: equation 1, 2, 9, 10 and 11. where: rhoS is the solid density in equation 9 mAbsorbed is the hydrogen reaction rate (source term) from equation 10 rhoSs is the saturated solid density constant from equation 10 too. hope this is clear enough, i really need help. |
|
October 25, 2011, 18:34 |
|
#14 |
New Member
Sibusiso Mavuso
Join Date: Jul 2010
Location: South Africa/Pretoria
Posts: 22
Rep Power: 15 |
hello nima
rhoS is the variable to be solved in my first post. forAll(mAbsorbed, celli) { if(mAbsorbed[celli] <= rhoSs.value()) { solve(fvm::ddt(1.0-epsVoid,rhoS) == mAbsorbed[celli]); } } else { Info<< "\nrhoS - MHydride density = " << max(rhoS).value(); Info<< " has reached saturation density of " << rhoSs.value(); Info<< " kg/m^3.\n"<< endl; } thank you. |
|
October 26, 2011, 03:26 |
|
#15 |
Senior Member
Nima Samkhaniani
Join Date: Sep 2009
Location: Tehran, Iran
Posts: 1,266
Blog Entries: 1
Rep Power: 24 |
dear sibusiso
why dont you combine equations 9 and 10, then finally your equation will be A*ddt(rhoS) - B* rhoS + B*rhoSS =0 which is a linear ode and have definte solution as a function of : rhos = f (rhoSS, time) then implement rhos equation in your code! |
|
October 26, 2011, 04:58 |
|
#16 |
New Member
Sibusiso Mavuso
Join Date: Jul 2010
Location: South Africa/Pretoria
Posts: 22
Rep Power: 15 |
Dear Nima
equation 9 calculates the reaction rate (Sm) which I also need to for equation 1 and 6 and need to track how fast does the source term (mAdsorbed) changes. mAbsorbed = max(Sm) - min(Sm); so i think i need equation 10. just realised that I had made a mistake in the following code (bolded) instead of the source term there should be the density of the solid rhoS. sorry about that. forAll(mAbsorbed, celli) { if(mAbsorbed[celli] <= rhoSs.value()) { solve(fvm::ddt(1.0-epsVoid,rhoS) == mAbsorbed[celli]); } else { Info<< "\nrhoS - MHydride density = " << max(rhoS).value(); Info<< " has reached saturation density of " << rhoSs.value(); Info<< " kg/m^3.\n"<< endl; } } I fixed it as follows: forAll(mAbsorbed, celli) { if(rhoS[celli] <= rhoSs.value()) { solve(fvm::ddt(1.0-epsVoid,rhoS) == mAbsorbed); } else { Info<< "\nrhoS - MHydride density = " << max(rhoS).value(); Info<< " has reached saturation density of " << rhoSs.value(); Info<< " kg/m^3.\n"<< endl; } } and it compiles and runs but it does not get out I have to manually terminate it, please check attached txt file. |
|
October 26, 2011, 05:20 |
|
#17 |
Senior Member
Nima Samkhaniani
Join Date: Sep 2009
Location: Tehran, Iran
Posts: 1,266
Blog Entries: 1
Rep Power: 24 |
its some how obvious it iterates over ur grids so! it solves your equations on the numbers of your grids! as i said before this combination does not work for you you should solve rhoS manually! and implement rhoS function!
|
|
October 26, 2011, 05:24 |
|
#18 |
New Member
Sibusiso Mavuso
Join Date: Jul 2010
Location: South Africa/Pretoria
Posts: 22
Rep Power: 15 |
thank you Nima
let me try it |
|
June 3, 2016, 03:27 |
|
#19 | |
New Member
Mr.liu
Join Date: Sep 2012
Posts: 27
Rep Power: 13 |
Quote:
First i added this code in the CreatField.H, volScalarField Rrate ( IOobject ( "Rrate", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE ), mesh, dimensionedScalar("Rrate", dimMass/dimVolume/dimTime, 0.0) ); Then, i added this code in YEqn, forAll(Y, i) { if (Y[i].name() != "CH4") Rrate = reaction->R(Yi); } After wmake, it shows YEqn.H:26:14: error: no match for ‘operator=’ (operand types are ‘Foam::volScalarField {aka Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>}’ and ‘Foam::tmp<Foam::fvMatrix<double> >’) Rrate = reaction->R(Yi); Can you tell me how to do that? Thank you very much. |
||
March 10, 2021, 02:47 |
no match for ‘operator<’ (operand types are ‘Foam::volScalarField {aka Foam::Geometri
|
#20 |
New Member
Qi
Join Date: Feb 2021
Posts: 7
Rep Power: 5 |
Hi everyone
I am a beginner of openfoam.I want to add a if condition in the following form to my turbulence model code volScalarField::Internal rek ( this->rho_*sqrt(k_)*y_/this->nu() ); if(rek > 10) ... but when I compile it the following error is being produced "no match for ‘operator<’ (operand types are ‘Foam::volScalarField {aka Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>}’ and ‘int’)" I would appreciate if you help me |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
area does not match neighbour by ... % -- possible face ordering problem | St.Pacholak | OpenFOAM | 10 | February 7, 2024 21:50 |
Match Control and Periodic BC ANSYS 12.1 | combustion | FLUENT | 2 | April 3, 2017 03:42 |
[ICEM] Forcing surface and curve to match | sherifkadry | ANSYS Meshing & Geometry | 0 | August 27, 2010 00:28 |
gmsh2ToFoam | sarajags_89 | OpenFOAM | 0 | November 24, 2009 22:50 |
[Commercial meshers] Trimmed cell and embedded refinement mesh conversion issues | michele | OpenFOAM Meshing & Mesh Conversion | 2 | July 15, 2005 04:15 |