|
[Sponsors] |
how to create a volScalarField of mesh.V() ??? |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
July 8, 2010, 12:36 |
how to create a volScalarField of mesh.V() ???
|
#1 |
New Member
Sebastian
Join Date: Feb 2010
Posts: 9
Rep Power: 16 |
Hey
I use a volScalarField with the volume of cells. It works with the cell center but not with cell volume. - Why the following line works volVectorField centres = Sj.mesh().C(); - Why the following line dosn't work volScalarField volume= Sj.mesh().V(); Sj is a volVectorField defined as follow: volVectorField Sj ( IOobject ( "Sj", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE ),mesh, dimensionSet(1,-1,-3,0,0,-1,0) ); thanks Sebastian |
|
June 13, 2011, 13:59 |
|
#2 |
Member
Fran
Join Date: Sep 2009
Location: Buenos Aires
Posts: 37
Rep Power: 17 |
Did you ever get to fix this? I have the exact same problem.
|
|
June 13, 2011, 18:20 |
|
#3 |
Senior Member
Pablo
Join Date: Mar 2009
Posts: 102
Rep Power: 17 |
I think that mesh.V() is a scalarField, not a volscalarField ..........
|
|
July 2, 2011, 08:48 |
|
#4 | ||
Senior Member
Francois
Join Date: Jun 2010
Posts: 107
Rep Power: 21 |
Looking at the doxygen documentation on the openfoam.com website, you can see that:
Quote:
Did you try using: Quote:
Francois. |
|||
July 6, 2011, 11:17 |
|
#5 |
Senior Member
Kathrin Kissling
Join Date: Mar 2009
Location: Besigheim, Germany
Posts: 134
Rep Power: 17 |
This is due that a volScalarField does store values on the boundary, what does not make a lot of sense for cell volumes.
So just the internalField of a volScalarField does have cell volumes So I personally would not try to cast this into a volScalarField! What will you do on the boundaries? If you initialize the volScalarField with zero than there will be zero at the boundaries too. What happens if you divide at a point by these values? I would just work on the internalField volScalarField myWhatEverField =mag(U); scalarField volumes = mesh.V(); volScalarField result(IOobject(...),mesh, 0); result.internalField() = myWahateverField.internalField/volumes; Do whatever you need to do on the boundaries Best Kathrin |
|
July 23, 2018, 00:36 |
|
#6 | |
Senior Member
Elham
Join Date: Oct 2009
Posts: 184
Rep Power: 17 |
Quote:
Hi, I need mesh.V() for my code which is calculating mDot for phaseChangeTwoPhaseMixtures in a multi phase flow. There is the following error: ‘mesh’ was not declared in this scope If I changee it to : ‘mesh’ was not declared in this scope The error is : ‘const class Foam::incompressibleThreePhaseMixture’ has no member named ‘mesh’ I will aprrciateof any help. Cheers, Elham |
||
July 29, 2018, 07:33 |
|
#7 |
Senior Member
Michael Alletto
Join Date: Jun 2018
Location: Bremen
Posts: 616
Rep Power: 16 |
did you try U_.mesh().V()
|
|
November 12, 2018, 04:00 |
|
#8 |
Senior Member
Elham
Join Date: Oct 2009
Posts: 184
Rep Power: 17 |
||
June 12, 2019, 04:17 |
stuck in creating the volScalarField
|
#9 |
Senior Member
krishna kant
Join Date: Feb 2016
Location: Hyderabad, India
Posts: 133
Rep Power: 10 |
Hello All
I am trying to create a variable delta which is cuberoot of volume. I am using it in a coupled level set VOF method, inside the code I will be using the variable for some multiplication with volume fraction and level set scalar. Here is the code I am using in createFields, volScalarField deltaX ( IOobject ( "deltaX", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), mesh, dimensionedScalar("deltaX",dimless, 0.0) ); deltaX.internalField()=cbrt(mesh.V()); volScalarField gamma(deltaX*0.75); volScalarField epsilon(deltaX*1.5); volScalarField deltaTau(deltaX*0.1); And it is giving the following error in the bold line ./createFields.H:228:27: error: passing ‘const Internal {aka const Foam:imensionedField<double, Foam::volMesh>}’ as ‘this’ argument of ‘void Foam:imensionedField<Type, GeoMesh>:perator=(const Foam::tmp<Foam:imensionedField<Type, GeoMesh> >&) [with Type = double; GeoMesh = Foam::volMesh]’ discards qualifiers [-fpermissive] deltaX.internalField()=cbrt(mesh.V()); Any help will be deeply appreciated. |
|
June 12, 2019, 05:33 |
|
#10 |
Senior Member
Michael Alletto
Join Date: Jun 2018
Location: Bremen
Posts: 616
Rep Power: 16 |
Did you try:
deltaX.primitiveFieldRef()=cbrt(mesh.V()); |
|
June 14, 2019, 01:52 |
|
#11 |
Senior Member
krishna kant
Join Date: Feb 2016
Location: Hyderabad, India
Posts: 133
Rep Power: 10 |
Thanks Michael,
It is working fine. But I have one more small doubt what is the difference between deltaX.primitiveFieldRef() and deltaX.Ref() ? |
|
June 14, 2019, 04:19 |
|
#12 |
Member
Join Date: Dec 2018
Location: Darmstadt, Germany
Posts: 87
Rep Power: 7 |
Hey kk415,
it looks like your deltaX is having the wrong type of units (I don't know if dimless is what you want, shouldn't it be in [m]?). The reason why you were having the error is due to the fact that in OF (at least in my OF versions) the function internalField returns a const reference to a geometricFields private data which is storing the internal field, thus disallowing any kind of changes to that member. internalFieldRef is the non constant counterpart which allows you to modify the field directly. Regarding your last question, the function ref() returns a reference to the dimensioned internal field. So basically, by using this function, you may have to ensure that the dimensions of your field deltaX matches cbrt(mesh.V()) . It is basically safer. With internalFieldRef, you can write directly to that field without checking units. For more information, check the extended code guide (https://www.openfoam.com/documentati...ce.html#l00041) which is undoubtedly the best resource to better understand OF. Cheers RP |
|
June 25, 2019, 04:34 |
|
#13 | |
Senior Member
Ruiyan Chen
Join Date: Jul 2016
Location: Hangzhou, China
Posts: 162
Rep Power: 10 |
Quote:
Code:
voScalarField cellSize ( IOobject ( "cellSize", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE ), mesh, dimensionedScalar("zero", dimVolume, 0.0) ); cellSize.ref() = mesh.V(); |
||
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
How to create initiate a volScalarField p without reading from disk NO_READ does not seem to work | dbxmcf | OpenFOAM Running, Solving & CFD | 14 | March 25, 2022 07:08 |
Meshing a Sphere | Ajay | FLUENT | 10 | September 3, 2016 15:18 |
Actuator disk model | audrich | FLUENT | 0 | September 21, 2009 08:06 |
Where's the singularity/mesh flaw? | audrich | FLUENT | 3 | August 4, 2009 02:07 |
fluent add additional zones for the mesh file | SSL | FLUENT | 2 | January 26, 2008 12:55 |