CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Community Contributions (https://www.cfd-online.com/Forums/openfoam-community-contributions/)
-   -   [swak4Foam] FunkySetFields for OF 141 (https://www.cfd-online.com/Forums/openfoam-community-contributions/61981-funkysetfields-141-a.html)

sega March 17, 2009 15:32

Sorry to bother again.
But the solution with the bessel function did not turn out to be working.
Actually the new function in funkySetFields is working, but the result is not as planned. The function named in the paper mentioned above turns out to produce a different interface than I desired.

At this point I need an advice, which function the correct interface is representing.

Please refer to the two attached images from a previous post.
I want to set up this cosine-function in 3D on a square domain, meaning that the interface should be elevated at the walls and be lowered in the center of the domain forming this cosine-like 'tub'.

I'm not quite shure which function (in 3D) would represent such an interface, nor where to look at (or start investigating).

Please don't smack me for posting in the funkySetFields thread, as this this not directly linked to the tool but is rather basic.
But as this should lead to a condition statement for funkySetFields I thought it would be good place to ask for.

Many thanks for your ideas.
S.

gschaider March 17, 2009 15:46

Quote:

Originally Posted by sega (Post 209808)
Well, Sorry to ask this, but I don't know what xxx ? xxy : xxz means?

It means "if the logical expression xxx is true for a cell use the value xxy, else use xxz"

braennstroem April 29, 2009 04:18

Hi,

I am just trying to figure out, how this expression

'(grad(dist())^vector(0,0,-1))*mag(pos()-vector(0.05,0.05,0))/0.05'

creates a fild in a circle. I got trouble to understand it...
I would like to achieve something like:
u=2*y*(1-x^2), v=-2*x*(1-y^2)

It is probably similar!?
Thanks!
Fabian

gschaider April 29, 2009 13:48

Quote:

Originally Posted by braennstroem (Post 214577)
Hi,

I am just trying to figure out, how this expression

'(grad(dist())^vector(0,0,-1))*mag(pos()-vector(0.05,0.05,0))/0.05'

creates a field in a circle. I got trouble to understand it...
I would like to achieve something like:
u=2*y*(1-x^2), v=-2*x*(1-y^2)

It is probably similar!?

Not really. The first expression depends on the boundary of the mesh (dist() is the distance to the nearest wall). The grad gives you the direction away from the wall. The vector in the cross-product assumes that you are in the xy-plane and the cross product therefor gives you a vector almost parallel to the nearest boundary. The mag Assumes that the center of the mesh is 0.05/0.05 (basically it only works good for the driven cavity)

General circular field around a point in the xy-plane might be
'(pos()-vector(1,2,0))^vector(0,0,1)'

Bernhard

braennstroem May 3, 2009 14:58

Hi Bernhard,

thanks for the explanation!

Regards!
Fabian

alfa_8C May 4, 2011 07:11

fpos() and surf() synthax error
 
Hy funkyFOAMers,

I've generated an initial Field for an interFoam simulation by using funkySetFileds and it worked quite well.

Now I'm trying to smoothen the free surface by using the commands shown on this page:

http://openfoamwiki.net/index.php/Co...funkySetFields

But I can't get it working. I always receive the following error:

Parser Error at "1.9-12" :"syntax error, unexpected TOKEN_fposition"
"average(fpos().z <= surf(0.) ? surf(1.0) : surf(0.))"
" ^^^^ "


Being in the case directory the executed command is the following:

funkySetFields -case ./ -time 0 -field alpha1 -keepPatches -expression "average (fpos().z <= surf(0.) ? surf(1.0) : surf(0.))"

Has anybody an idea, how to modify the command in order to do what desired?

Thanks in advance, Toni

alfa_8C May 4, 2011 07:13

1 Attachment(s)
this is my initial filed:Attachment 7554

gschaider May 4, 2011 11:45

Quote:

Originally Posted by alfa_8C (Post 306214)
Hy funkyFOAMers,

I've generated an initial Field for an interFoam simulation by using funkySetFileds and it worked quite well.

Now I'm trying to smoothen the free surface by using the commands shown on this page:

http://openfoamwiki.net/index.php/Co...funkySetFields

But I can't get it working. I always receive the following error:

Parser Error at "1.9-12" :"syntax error, unexpected TOKEN_fposition"
"average(fpos().z <= surf(0.) ? surf(1.0) : surf(0.))"
" ^^^^ "


Being in the case directory the executed command is the following:

funkySetFields -case ./ -time 0 -field alpha1 -keepPatches -expression "average (fpos().z <= surf(0.) ? surf(1.0) : surf(0.))"

Has anybody an idea, how to modify the command in order to do what desired?

Thanks in advance, Toni

You're not REALLY using the 1.4.1 version, are you? If yes: that version of FSF is quite old and I can't help you on that. If no: why are you posting in a thread that implies that? (see also http://openfoamwiki.net/index.php/Ho..._Message_Board points 3 and 5)

Maybe the problem is that in newer versions of FSF what used to be called average was renamed to faceAverage (averaging over the faces of a cell. average is now the average of a whole field)

Bernhard

alfa_8C May 5, 2011 04:25

It seems that I didn't read the thread carefully - sorry for the inconvenience...

With the following link I switch now to a newer one, that implies a newer version of FSF.


http://www.cfd-online.com/Forums/ope...eld-patch.html

jianxiyao June 11, 2014 11:05

Quote:

Originally Posted by gschaider (Post 202678)
Now it works (new version just went to the SVN. Get it from there)

The expression would be:
"average(fpos().y < surf(0.) ? surf(1.) : surf(0.))"

The surf-functions generates surface-fields.

Hi Gschaider,

I use the above expression to initial alpha.water in OF 2.3.0. error occurs such as :

Modifying field alpha.water of type volScalarField

Putting "average(fpos().z < surf(0.) ? surf(1.0) : surf(0.))" into field alpha.water at t = "0" if condition "true" is true
Keeping patches unaltered



--> FOAM FATAL ERROR:
inconsistent types: alpha.water is volScalarField while the expression evaluates to a surfaceScalarField

From function doAnExpression()
in file funkySetFields.C at line 361.

FOAM exiting

gschaider June 11, 2014 11:29

Quote:

Originally Posted by jianxiyao (Post 496588)
Hi Gschaider,

I use the above expression to initial alpha.water in OF 2.3.0. error occurs such as :

Modifying field alpha.water of type volScalarField

Putting "average(fpos().z < surf(0.) ? surf(1.0) : surf(0.))" into field alpha.water at t = "0" if condition "true" is true
Keeping patches unaltered



--> FOAM FATAL ERROR:
inconsistent types: alpha.water is volScalarField while the expression evaluates to a surfaceScalarField

From function doAnExpression()
in file funkySetFields.C at line 361.

FOAM exiting

See http://www.cfd-online.com/Forums/ope...tml#post306250 above: you probably want to use faceAverage

jianxiyao June 11, 2014 11:34

Quote:

Originally Posted by gschaider (Post 496597)
See http://www.cfd-online.com/Forums/ope...tml#post306250 above: you probably want to use faceAverage

Thank you for your quick reply.

that is the reason. it works now.


All times are GMT -4. The time now is 12:59.