|
[Sponsors] |
March 30, 2010, 23:12 |
Non-normal inflow with groovyBC
|
#1 |
Member
|
Anybody have any general guidance on this? I am trying to work my way up to 45 degree flow... but starting with this 80/10 ratio. I've got it working without groovyBC, but does anybody know how the formulation would need to be changed if using Groovy... my current attempt looks like this...
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: http://www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volVectorField; location "0"; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; internalField uniform (80 10 0); boundaryField { front { type groovyBC; variables "zp=pts().z;minZ=min(zp);maxZ=max(zp);para=-pow(pos().z/0.390667,0.13)*normal();"; valueExpression "(1+0.00005*sin(500*time()))*para"; value uniform (80 10 0); } inlet { type groovyBC; variables "zp=pts().z;minZ=min(zp);maxZ=max(zp);para=-pow(pos().z/0.390667,0.13)*normal();"; valueExpression "(1+0.00005*sin(500*time()))*para"; value uniform (80 10 0); } back { type inletOutlet; inletValue uniform (0 0 0); value uniform (80 10 0); } outlet { type inletOutlet; inletValue uniform (0 0 0); value uniform (80 10 0); } lowerWall { type fixedValue; value uniform (0 0 0); } OBJECT_patch0 { type fixedValue; value uniform (0 0 0); } upperWall { type slip; } } // ************************************************** *********************** // |
|
March 31, 2010, 16:24 |
Getting there... this works
|
#2 |
Member
|
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: http://www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volVectorField; location "0"; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; internalField uniform (63.63 63.63 0); boundaryField { /* inlet { type fixedValue; value $internalField; } */ inlet { type groovyBC; //variables "zp=pts().z;minZ=min(zp);maxZ=max(zp);para=-pow(pos().z/0.390667,0.13)*normal();"; //valueExpression "vector(63.63*para, 63.63*para, 0)"; valueExpression "vector(63.63, 63.63, 0)"; value uniform (63.63 63.63 0); } /* front { //type slip; type fixedValue; value $internalField; } */ front { type groovyBC; //variables "zp=pts().z;minZ=min(zp);maxZ=max(zp);para=-pow(pos().z/0.390667,0.13)*normal();"; //valueExpression "90*para"; //valueExpression "vector(63.63*para, 63.63*para, 0)"; valueExpression "vector(63.63, 63.63, 0)"; value uniform (63.63 63.63 0); } /* back { //type slip; type inletOutlet; inletValue uniform (0 0 0); //value uniform (90 0 0); value $internalField; } */ back { type groovyBC; valueExpression "vector(0,0,0)"; //valueExpression "vector(63.63,63.63,0)"; gradientExpression "vector(0,0,0)"; fractionExpression "(phi > 0) ? 0 : 1"; //value uniform (0 0 0); value $internalField; } /* outlet { type inletOutlet; inletValue uniform (0 0 0); //value uniform (90 0 0); value $internalField; } */ outlet { type groovyBC; valueExpression "vector(0,0,0)"; //valueExpression "vector(63.63,63.63,0)"; gradientExpression "vector(0,0,0)"; fractionExpression "(phi > 0) ? 0 : 1"; //value uniform (0 0 0); value $internalField; } lowerWall { type slip; //type fixedValue; //value uniform (0 0 0); } OBJECT_patch0 { type fixedValue; value uniform (0 0 0); } upperWall { type slip; } } // ************************************************** *********************** // |
|
March 31, 2010, 18:26 |
|
#3 |
Member
|
But, if I switch the commented lines from
//valueExpression "vector(63.63*para, 63.63*para, 0)"; valueExpression "vector(63.63, 63.63, 0)"; to valueExpression "vector(63.63*para, 63.63*para, 0)"; //valueExpression "vector(63.63, 63.63, 0)"; it gives the error... Starting time loop Time = 1 Parser Error at "1.18" :"syntax error, unexpected ','" "vector(63.63*para, 63.63*para, 0)" " ^ " Any ideas? |
|
March 31, 2010, 19:21 |
|
#4 | |
Assistant Moderator
Bernhard Gschaider
Join Date: Mar 2009
Posts: 4,225
Rep Power: 51 |
Quote:
Bernhard |
||
March 31, 2010, 19:30 |
|
#5 |
Member
|
I don't get it because there seems to be a successful case here... he thinks he has a pow(x,y) error, but seems to have gotten the above syntax to work.
http://www.cfd-online.com/Forums/ope...-groovybc.html """ I managed to get a parabolic profile with variables "w=0.00005;m=3;n=2;Umax=1*(m+1)*(n+1)/m/n;c=pos().y-w;d=pos().z-w;a=pow((c/w),2);b=pow((d/w),2);speed=Umax*(1-a)*(1-b);"; valueExpression "vector (speed, 0, 0)"; in my starting file for U but i have two problems. pow() does not accecpt non integer values for the exponent like pow(a,1.5) is this a "normal" behaviour? and i need some function to get the distance from a point like distance = pos().z-w now this will result in an negative value if pos().z <w which "should" be positive, i tried abs() but it seems its not implemented and i tried something like sqr(pow(pos().z-w,2)) which doesnt work either. """ |
|
March 31, 2010, 19:46 |
Found the problem as far as syntax is concerned...
|
#6 |
Member
|
I've at least made the syntax happy... I believe the normal and the negative sign do not combine with the vector function. I suppose this makes sense, to be explicit about the vector components in this way. As for making sure it's physically correct... that's my problem. Thanks for entertaining my thoughts out loud though Bernhard! Once again it's us and not groovyBC!
inlet { type groovyBC; valueExpression "vector(pow(pos().z/0.390667,0.13)*63.63,pow(pos().z/0.390667,0.13)*63.63,0)"; value uniform (63.63 63.63 0); } |
|
January 14, 2011, 20:42 |
help with inflow to groovybc
|
#7 |
Member
Join Date: Mar 2010
Posts: 31
Rep Power: 16 |
Sorry for the newbie questions, but clearly I'm misunderstanding something. I'd like to use groovyBC to vary the inlet velocity both in time and space. I've been playing with the examples circulatingsplash.
I'll use that example, from the 0/U file: atmosphere { type groovyBC; valueExpression "-(alpha1+internalField(alpha1))*0.5*normal()"; value uniform (0 0 0); } So, my questions: (1) why do you need value uniform(0,0,0) ? From what I understand valueExpression is going to assign a value to each cell face, what role is the uniform playing? (2) how is { type groovyBC valueExpression " vector(0,2,0)"; } different from { type groovyBC valueExpression "2*normal()"; } different from: { type fixedValue value uniform(0,2,0) } ? (in this case, atmosphere is on the y=1 plane) Cheers |
|
January 15, 2011, 12:27 |
|
#8 | |
Assistant Moderator
Bernhard Gschaider
Join Date: Mar 2009
Posts: 4,225
Rep Power: 51 |
Quote:
They are all equivalent. The middle one is the most flexible because it makes no assumption about the orientation of the boundary. So if you got to 3D and your atmosphere is z=1 you can reuse the files from the IC and they will still work. |
||
January 15, 2011, 22:32 |
thanks
|
#9 |
Member
Join Date: Mar 2010
Posts: 31
Rep Power: 16 |
Ok, thanks for that. It's good to know I have some idea. So, the
value uniform (0,2,0) is for postprocessing - I do use paraview. Now, I haven't noticed any difference from the following BC's: (1) type groovybc; valueExpression 2*normal; (2) type groovybc; valueExpression 2*cos(time())*normal; The latter should give me a periodic wave, but as I run the case, and post-processes using paraview I see no difference as a function of time. This could then be a paraview problem? can you suggest a different way of processing the data to see what's going on? Thanks so much for your help, it's good to know I'm somewhat on the right track. |
|
January 17, 2011, 11:35 |
|
#10 | |
Assistant Moderator
Bernhard Gschaider
Join Date: Mar 2009
Posts: 4,225
Rep Power: 51 |
Quote:
Bernhard |
||
Tags |
crossflow, inlet profile |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
[snappyHexMesh] snappyHexMesh error "Cannot determine normal vector from patches." | lethu | OpenFOAM Meshing & Mesh Conversion | 1 | June 3, 2020 08:49 |
[swak4Foam] Boundary Conditions with GroovyBC, Normal Gradient | treima | OpenFOAM Community Contributions | 32 | November 17, 2017 04:44 |
[snappyHexMesh] determining displacement for added points | CFDnewbie147 | OpenFOAM Meshing & Mesh Conversion | 1 | October 22, 2013 10:53 |
[swak4Foam] Boundary Conditions with GroovyBC, Normal Gradient | treima | OpenFOAM Community Contributions | 2 | January 26, 2013 03:37 |
NACA0012 geometry/design software needed | Franny | Main CFD Forum | 13 | July 7, 2007 16:57 |