Register Blogs Members List Search Today's Posts Mark Forums Read

 March 19, 2013, 02:42 About GroovyBC #1 Member   M Mallikarjuna Reddy Join Date: Jul 2012 Posts: 91 Rep Power: 7 Hi Foamers, I am using OpenFOAM2.1.1 version. My solver is steady state and i prepared it by modifying "simpleFoam" solver. I am facing problem with boundary condition for the scalar field (lets say T). The governing equation for the field T as follows: Code: solve ( fvm::div(phi, T) + fvc::div(J) ); At the fixed Walls i need to apply zero flux boundary condition. In the above equation "J" is the flux. So i need to apply J.n=0 at fixed walls. I have little experienced in handling "groovyBC". Can anyone help me how to write this expression. Thanks in advance. Regards M Mallikarjuna Reddy

March 19, 2013, 06:04
#2
Assistant Moderator

Bernhard Gschaider
Join Date: Mar 2009
Posts: 4,013
Rep Power: 43
Quote:
 Originally Posted by mmkr825 Hi Foamers, I am using OpenFOAM2.1.1 version. My solver is steady state and i prepared it by modifying "simpleFoam" solver. I am facing problem with boundary condition for the scalar field (lets say T). The governing equation for the field T as follows: Code: solve ( fvm::div(phi, T) + fvc::div(J) ); At the fixed Walls i need to apply zero flux boundary condition. In the above equation "J" is the flux. So i need to apply J.n=0 at fixed walls. I have little experienced in handling "groovyBC". Can anyone help me how to write this expression. Thanks in advance. Regards M Mallikarjuna Reddy
And J is related to T how?

Assuming that J is a surface field then fvc::div(J) only uses the values on the boundary patches (the situation is not better if J is a volume-field).

Anyway: if you're not doing completely different physics to somebody else then J is somehow related to grad(T) which makes the second term boil down to something like laplacian(lambda,T) for which you can use the fvm-form which makes everything much more stable.

If J is completely unrelated to T then only the actual value of div(J) in the cells matters for the solution of the T-equation and if J is a vector and J=(0,0,0) is not good enough for you then a slip-boundary condition is sufficient
__________________
Note: I don't use "Friend"-feature on this forum out of principle. Ah. And by the way: I'm not on Facebook either. So don't be offended if I don't accept your invitation/friend request

March 19, 2013, 07:57
#3
Member

M Mallikarjuna Reddy
Join Date: Jul 2012
Posts: 91
Rep Power: 7
Quote:
 Originally Posted by gschaider And J is related to T how? Assuming that J is a surface field then fvc::div(J) only uses the values on the boundary patches (the situation is not better if J is a volume-field). Anyway: if you're not doing completely different physics to somebody else then J is somehow related to grad(T) which makes the second term boil down to something like laplacian(lambda,T) for which you can use the fvm-form which makes everything much more stable. If J is completely unrelated to T then only the actual value of div(J) in the cells matters for the solution of the T-equation and if J is a vector and J=(0,0,0) is not good enough for you then a slip-boundary condition is sufficient

Dear gschaider,
Thanks for the quick response. In my case i defined J as volume field:
Code:
```volVectorField J
(
IOobject
(
"J",
runTime.timeName(),
mesh,
IOobject::NO_WRITE
),
-f1*fvc::div(Epnn1)+fvc::laplacian(f2, U)
);```
Where Epnn1 is defined as:

Quote:
 volTensorField Epnn1 ( IOobject ( "Epnn1", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), f3*Q );
Where f1,f2 and f3 are functions of T and Q is a tensor. I defined Q as:

Quote:
 dimensionedTensor Q ( "Q", dimensionSet(0, 0, 0, 0, 0, 0, 0), tensor(1,0,0,0,0.58,0,0,0,0.38) );
As you noticed if J is function of grad(T), then my problem could be easy. But in my case i don't have any explicit expression for J in-terms of grad(T). Could you please elaborate the method in which I can use a slip boundary condition for my case by using groovyBC?
Moreover i am struggling with divergence problem. From your valuable suggestion I understood that there is divergence in my case since J is defined as a volume field. Should I define J at the surface field to achieve convergence?

Thanks
Reddy

March 19, 2013, 09:00
#4
Assistant Moderator

Bernhard Gschaider
Join Date: Mar 2009
Posts: 4,013
Rep Power: 43
Quote:
 Originally Posted by mmkr825 Dear gschaider, Thanks for the quick response. In my case i defined J as volume field: Code: ```volVectorField J ( IOobject ( "J", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), -f1*fvc::div(Epnn1)+fvc::laplacian(f2, U) );``` Where Epnn1 is defined as: Where f1,f2 and f3 are functions of T and Q is a tensor. I defined Q as: As you noticed if J is function of grad(T), then my problem could be easy. But in my case i don't have any explicit expression for J in-terms of grad(T). Could you please elaborate the method in which I can use a slip boundary condition for my case by using groovyBC? Moreover i am struggling with divergence problem. From your valuable suggestion I understood that there is divergence in my case since J is defined as a volume field. Should I define J at the surface field to achieve convergence? Thanks Reddy
slip has nothing to do with groovyBC. It is a standard-BC in OpenFOAM. Anyway: to set special boundary conditions for a field it is better to read that field from disc. Everything else is horrible to program.

For convergence: i can only be general here: you mentioned that the functions fX depend on T: the best strategy would be to identify the parts that depend on T, linearize them, put these parts implicitly into the T-equation using fvm-operations and only put the rest of the terms into the explicit source. Also sit down with pen and paper and see if the BC for J can be expressed in terms of T on the boundary. Then implement that BC for T. If you insist on having an all-explicit source term the way you do now you may need veeeery small time-steps (probably)

Yeah: if you know what you're doing a surfaceScalar-field for the flux is better than a volVector-field (see creation and usage of phi in the regular solvers)
__________________
Note: I don't use "Friend"-feature on this forum out of principle. Ah. And by the way: I'm not on Facebook either. So don't be offended if I don't accept your invitation/friend request

March 20, 2013, 06:55
#5
Member

M Mallikarjuna Reddy
Join Date: Jul 2012
Posts: 91
Rep Power: 7
Quote:
 Originally Posted by gschaider slip has nothing to do with groovyBC. It is a standard-BC in OpenFOAM. Anyway: to set special boundary conditions for a field it is better to read that field from disc. Everything else is horrible to program. For convergence: i can only be general here: you mentioned that the functions fX depend on T: the best strategy would be to identify the parts that depend on T, linearize them, put these parts implicitly into the T-equation using fvm-operations and only put the rest of the terms into the explicit source. Also sit down with pen and paper and see if the BC for J can be expressed in terms of T on the boundary. Then implement that BC for T. If you insist on having an all-explicit source term the way you do now you may need veeeery small time-steps (probably) Yeah: if you know what you're doing a surfaceScalar-field for the flux is better than a volVector-field (see creation and usage of phi in the regular solvers)
Dear gschaider

Thanks
Regards
Mallikarjuna Reddy

 Thread Tools Display Modes Linear Mode

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are On Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post sagnikmazumdar OpenFOAM Running, Solving & CFD 24 March 1, 2015 08:16 gschaider OpenFOAM 164 January 13, 2015 03:52 treima OpenFOAM Running, Solving & CFD 29 September 18, 2014 10:56 Hisham OpenFOAM Running, Solving & CFD 13 January 20, 2012 06:04 benk OpenFOAM 3 June 2, 2011 08:49

All times are GMT -4. The time now is 06:45.