CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Pre-Processing (https://www.cfd-online.com/Forums/openfoam-pre-processing/)
-   -   Problem: Defining a linear scalar BC with groovyBC (https://www.cfd-online.com/Forums/openfoam-pre-processing/104538-problem-defining-linear-scalar-bc-groovybc.html)

 holp July 11, 2012 17:22

Problem: Defining a linear scalar BC with groovyBC

Hello everybody,

I'm new in this forum, so first: greetings everyone
Im currently in my 4th semester and was assigned a project which mainly involves openFoam. I was hoping you could help me with a problem, it would be very much appreciated.

I have to define a linear temperature distribution as B.C. over the lateral surface of a cylinder (along the z-axis). Since I couldn't find any tutorial how to adapt / write my own B.C. (it's also a bit complicated for a beginner), I wanted to use groovyBC in order to define the boundary condition.

My problem: it doesn't work. Or put another way: I screwed something up.
I downloaded the swak4Foam GNU tarball, executed wmake all and added
libs ("libOpenFOAM.so""libgroovyBC.so");
to my controlDict.

I then tried to define my B.C in the 0/T file:

Code:

```surface     {         type    groovyBC;         variables "zp = pos().z; m = pts().z ;minZ = min(m); maxZ =max(m)";         valueExpression "200 + (zp) / (maxZ - minZ)) * 100";         value uniform 1;     }```
I also tried some simpler variants variants, like
valueExpression "100*pos().z";
and used the mag() function since I wasn't enterely sure whether I was dealing with scalar values. Nothing worked.

When I execute paraFoam before calculating anything, the default value uniform 1 is always being used. Executing my modified IcoFoam solver, openFoam gives a bug report and crashes.

Code:

```    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Create mesh for time = 0 Reading transportProperties Reading field p Reading field T Reading field U Reading/calculating face flux field phi Starting time loop Time = 1 Courant Number mean: 0 max: 0 DILUPBiCG:  Solving for Ux, Initial residual = 0, Final residual = 0, No Iterations 0 DILUPBiCG:  Solving for Uy, Initial residual = 0, Final residual = 0, No Iterations 0 DILUPBiCG:  Solving for Uz, Initial residual = 0, Final residual = 0, No Iterations 0 DICPCG:  Solving for p, Initial residual = 0, Final residual = 0, No Iterations 0 time step continuity errors : sum local = 0, global = 0, cumulative = 0 DICPCG:  Solving for p, Initial residual = 0, Final residual = 0, No Iterations 0 time step continuity errors : sum local = 0, global = 0, cumulative = 0 word::stripInvalid() called for word zp     For debug level (= 2) > 1 this is considered fatal }```
I would appreciate any help / advise. Thanks a lot in advance.

holp

 gschaider July 14, 2012 06:30

Quote:
 Originally Posted by holp (Post 370923) Hello everybody, I'm new in this forum, so first: greetings everyone Im currently in my 4th semester and was assigned a project which mainly involves openFoam. I was hoping you could help me with a problem, it would be very much appreciated. I have to define a linear temperature distribution as B.C. over the lateral surface of a cylinder (along the z-axis). Since I couldn't find any tutorial how to adapt / write my own B.C. (it's also a bit complicated for a beginner), I wanted to use groovyBC in order to define the boundary condition. My problem: it doesn't work. Or put another way: I screwed something up. I downloaded the swak4Foam GNU tarball, executed wmake all and added libs ("libOpenFOAM.so""libgroovyBC.so"); to my controlDict. I then tried to define my B.C in the 0/T file: Code: ```surface     {         type    groovyBC;         variables "zp = pos().z; m = pts().z ;minZ = min(m); maxZ =max(m)";         valueExpression "200 + (zp) / (maxZ - minZ)) * 100";         value uniform 1;     }``` I also tried some simpler variants variants, like valueExpression "100*pos().z"; and used the mag() function since I wasn't enterely sure whether I was dealing with scalar values. Nothing worked. When I execute paraFoam before calculating anything, the default value uniform 1 is always being used.
That's alright I'm afraid: paraview does not know how to interpret groovyBC and therefor uses the old value (subsequent timesteps will always get value written and therefor be useful)

Quote:
 Originally Posted by holp (Post 370923) Executing my modified IcoFoam solver, openFoam gives a bug report and crashes. Code: ```    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Create mesh for time = 0 Reading transportProperties Reading field p Reading field T Reading field U Reading/calculating face flux field phi Starting time loop Time = 1 Courant Number mean: 0 max: 0 DILUPBiCG:  Solving for Ux, Initial residual = 0, Final residual = 0, No Iterations 0 DILUPBiCG:  Solving for Uy, Initial residual = 0, Final residual = 0, No Iterations 0 DILUPBiCG:  Solving for Uz, Initial residual = 0, Final residual = 0, No Iterations 0 DICPCG:  Solving for p, Initial residual = 0, Final residual = 0, No Iterations 0 time step continuity errors : sum local = 0, global = 0, cumulative = 0 DICPCG:  Solving for p, Initial residual = 0, Final residual = 0, No Iterations 0 time step continuity errors : sum local = 0, global = 0, cumulative = 0 word::stripInvalid() called for word zp     For debug level (= 2) > 1 this is considered fatal }``` I would appreciate any help / advise. Thanks a lot in advance. holp
My bad: you tried to make it more readable by adding spaces. Now swak4Foam uses the variable name "zp " and OpenFOAM does not think this is a word. It occurred once before and I meant to fix this but I forget about such SEPs ("Somebody elses problem") if they are not in the Mantis. So for the time being remove the space before the = and you should be fine

 holp July 19, 2012 08:46

Thank you very much for your answer, and also my apologies for answering one week late.

I managed to get it running by not defining the variables and only using the valueExpression term. But it's always good to know what caused the problem - might save me quite some trouble in the future.
I didn't expect that problem, because every (programming) language I ever dealt with absolutely ignores blank spaces.

You programmed swak4Foam? Respect, and thanks a lot! :o

holp

 gschaider July 19, 2012 20:19

Quote:
 Originally Posted by holp (Post 372372) Thank you very much for your answer, and also my apologies for answering one week late. I managed to get it running by not defining the variables and only using the valueExpression term. But it's always good to know what caused the problem - might save me quite some trouble in the future. I didn't expect that problem, because every (programming) language I ever dealt with absolutely ignores blank spaces.
You're right (although one might say: Fortran 77 and Python take spaces very seriously. For different reasons ... and in one case I'd say: for good reasons). And swak ignores spaces everywhere else. But that part (variables) was a bit of an afterthought. And I'm a bit stubborn there: either a client demands a fix from me there or someone takes the time to write a bug report on the Mantis before I fix it

Quote:
 Originally Posted by holp (Post 372372) You programmed swak4Foam? Respect, and thanks a lot! :o
You're welcome. And as I said above: best "Thank you" is writing precise bug report on the Mantis, because the only three priorities for me to improve swak are: client demands, stuff that interests me and stuff that touches my ego (and keeping the number of bugs in the swak/openfoam-extend-Mantis low is important to my ego)

 All times are GMT -4. The time now is 17:27.