CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Community Contributions

[swak4Foam] Problem to calculate grad(U) using swak4Foam

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

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   March 15, 2012, 17:43
Default Problem to calculate grad(U) using swak4Foam
  #1
New Member
 
Hugo
Join Date: Jan 2011
Location: Montreal
Posts: 27
Rep Power: 15
Hugoles is on a distinguished road
Dear Foamers,

I need to calculate the strain rate tensor S_ij . In OpenFOAM this is made using the relation S_ij = symm(grad(U)). I am trying do this with swak4Foam (funkyDoCalc) but I just can't calculate grad(U). The error is the following:
Code:
Time = 1100
strainRate : swak4Foam: Allocating new repository for sampledGlobalVariables


--> FOAM FATAL ERROR: 
 Parser Error at "1.7" :"syntax error, unexpected ')'"
"grad(U)"
"       ^"

    From function parsingValue
    in file lnInclude/CommonValueExpressionDriverI.H at line 718.

FOAM exiting
I can calculate grad(U.x), so I wonder if this problem has to do with how swak4Foam handles tensors. OpenFOAM can handle this expression without a problem, but it would be nice to avoid the (little) programming. Any ideas?

Thanks,

Hugo
Hugoles is offline   Reply With Quote

Old   March 15, 2012, 19:06
Default
  #2
Assistant Moderator
 
Bernhard Gschaider
Join Date: Mar 2009
Posts: 4,225
Rep Power: 51
gschaider will become famous soon enoughgschaider will become famous soon enough
Quote:
Originally Posted by Hugoles View Post
Dear Foamers,

I need to calculate the strain rate tensor S_ij . In OpenFOAM this is made using the relation S_ij = symm(grad(U)). I am trying do this with swak4Foam (funkyDoCalc) but I just can't calculate grad(U). The error is the following:
Code:
Time = 1100
strainRate : swak4Foam: Allocating new repository for sampledGlobalVariables


--> FOAM FATAL ERROR: 
 Parser Error at "1.7" :"syntax error, unexpected ')'"
"grad(U)"
"       ^"

    From function parsingValue
    in file lnInclude/CommonValueExpressionDriverI.H at line 718.

FOAM exiting
I can calculate grad(U.x), so I wonder if this problem has to do with how swak4Foam handles tensors. OpenFOAM can handle this expression without a problem, but it would be nice to avoid the (little) programming. Any ideas?

Thanks,

Hugo
Had a quick look at the grammar. Seems that the gradient of a vector is currently not supported. Can't fix that today. Could you please write a bug-report so that I don't forget
gschaider is offline   Reply With Quote

Old   March 15, 2012, 19:52
Default
  #3
New Member
 
Hugo
Join Date: Jan 2011
Location: Montreal
Posts: 27
Rep Power: 15
Hugoles is on a distinguished road
Quote:
Originally Posted by gschaider View Post
Had a quick look at the grammar. Seems that the gradient of a vector is currently not supported. Can't fix that today. Could you please write a bug-report so that I don't forget
Done! Likewise, can swak make operations over tensors such as mag(symm(grad(U))) ? Not sure if the feature is about only the grad of vectors or about tensors in general.

Thanks Bernhard,

Hugo
Hugoles is offline   Reply With Quote

Old   March 19, 2012, 17:16
Default
  #4
New Member
 
Hugo
Join Date: Jan 2011
Location: Montreal
Posts: 27
Rep Power: 15
Hugoles is on a distinguished road
Thanks for the patch!

I applied it to 1.6 but I still get the

Code:
Parser Error at "1.1-4" :"field grad not existing or of wrong type"
"grad(U)"
" ^^^^  "

    From function parsingValue
    in file lnInclude/CommonValueExpressionDriverI.H at line 724.

FOAM exiting
when I try to calculate grad(U).

Furthermore, I pulled the developing version with mercurial and I get errors when trying to recompile in OF 1.7.1 on OS X 10.6.8. I tried in a desktop and in a laptop with the same result. The recompilation in Ubuntu 11.04 showed -apparently- no errors.

Could you please take a look at the attachment ?

Thanks!

h
Attached Files
File Type: gz logInstallOSX.txt.gz (15.1 KB, 12 views)
File Type: gz logInstallUbuntu.txt.gz (5.2 KB, 9 views)
Hugoles is offline   Reply With Quote

Old   March 20, 2012, 19:43
Default
  #5
Assistant Moderator
 
Bernhard Gschaider
Join Date: Mar 2009
Posts: 4,225
Rep Power: 51
gschaider will become famous soon enoughgschaider will become famous soon enough
Quote:
Originally Posted by Hugoles View Post
Thanks for the patch!

I applied it to 1.6 but I still get the

Code:
Parser Error at "1.1-4" :"field grad not existing or of wrong type"
"grad(U)"
" ^^^^  "

    From function parsingValue
    in file lnInclude/CommonValueExpressionDriverI.H at line 724.

FOAM exiting
when I try to calculate grad(U).

Furthermore, I pulled the developing version with mercurial and I get errors when trying to recompile in OF 1.7.1 on OS X 10.6.8. I tried in a desktop and in a laptop with the same result. The recompilation in Ubuntu 11.04 showed -apparently- no errors.

Could you please take a look at the attachment ?

Thanks!

h
The Mac-Problem: seems like the compiler can't find any of the .H-files in your OF-installation. I can only guess why that is. Try at least removing all deb-files with rmdeball. If that still happens have a look whether directories like $FOAM_SRC/OpenFOAM/lnINclude are there
gschaider is offline   Reply With Quote

Old   August 28, 2014, 05:23
Default
  #6
Senior Member
 
T. Chourushi
Join Date: Jul 2009
Posts: 321
Blog Entries: 1
Rep Power: 17
Tushar@cfd is on a distinguished road
Quote:
Originally Posted by gschaider View Post
Had a quick look at the grammar. Seems that the gradient of a vector is currently not supported. Can't fix that today. Could you please write a bug-report so that I don't forget
Dear Bernhard,

I wish to use the "grad(U)" function for the inlet boundary condition for "Tau" using groovyBC. Where, U is fully developed flow.

I am getting following error message:

Code:
--> FOAM FATAL ERROR: 
 Parser Error for driver PatchValueExpressionDriver at "1.18-21" :"field grad not existing or of wrong type"
"2*pow(mag(symm(grad(U))),2)"
                 ^^^^
----------------| 

Context of the error:
I found that very similar question was put forward in this thread, I would like to know How to overcome it?
Is "grad(U)" boundary condition possible using groovyBC?

I am using OF-2.1.x installed on Ubuntu 11.04

Thanks in advance!
Tushar@cfd is offline   Reply With Quote

Old   August 28, 2014, 06:07
Default
  #7
Assistant Moderator
 
Bernhard Gschaider
Join Date: Mar 2009
Posts: 4,225
Rep Power: 51
gschaider will become famous soon enoughgschaider will become famous soon enough
Quote:
Originally Posted by Tushar@cfd View Post
Dear Bernhard,

I wish to use the "grad(U)" function for the inlet boundary condition for "Tau" using groovyBC. Where, U is fully developed flow.

I am getting following error message:

Code:
--> FOAM FATAL ERROR: 
 Parser Error for driver PatchValueExpressionDriver at "1.18-21" :"field grad not existing or of wrong type"
"2*pow(mag(symm(grad(U))),2)"
                 ^^^^
----------------| 

Context of the error:
I found that very similar question was put forward in this thread, I would like to know How to overcome it?
Is "grad(U)" boundary condition possible using groovyBC?

I am using OF-2.1.x installed on Ubuntu 11.04

Thanks in advance!
grad is not available on patches (simply because OF doesn't have it). snGrad is. That is the gradient in the direction of the surface normal
__________________
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
gschaider is offline   Reply With Quote

Old   August 28, 2014, 06:46
Default
  #8
Senior Member
 
T. Chourushi
Join Date: Jul 2009
Posts: 321
Blog Entries: 1
Rep Power: 17
Tushar@cfd is on a distinguished road
Thank you for quick reply.
Tushar@cfd is offline   Reply With Quote

Old   September 22, 2014, 22:32
Default
  #9
Member
 
Francisco T
Join Date: Nov 2011
Location: Melbourne, Australia
Posts: 64
Blog Entries: 1
Rep Power: 14
frantov is on a distinguished road
Hi Hugo
I need to develop a similar script to plot the strain rates. did you have any success?
Regards
f
frantov is offline   Reply With Quote

Old   September 23, 2014, 01:16
Default
  #10
Senior Member
 
T. Chourushi
Join Date: Jul 2009
Posts: 321
Blog Entries: 1
Rep Power: 17
Tushar@cfd is on a distinguished road
Quote:
Originally Posted by frantov View Post
Hi Hugo
I need to develop a similar script to plot the strain rates. did you have any success?
Regards
f
Use snGrad(U) instead of grad(U) as pointed out by Bernhard in his post.

Quote:
grad is not available on patches (simply because OF doesn't have it). snGrad is.
-
Best Luck!
Tushar@cfd is offline   Reply With Quote

Old   September 24, 2014, 23:38
Default
  #11
New Member
 
Hugo
Join Date: Jan 2011
Location: Montreal
Posts: 27
Rep Power: 15
Hugoles is on a distinguished road
Quote:
Originally Posted by frantov View Post
Hi Hugo
I need to develop a similar script to plot the strain rates. did you have any success?
Regards
f
Hello Frantov,

Yes, you can calculate grad(U) using expressionField and then manipulate the result as with any other field. This way, you could calculate the instantaneous rate of strain and then control the averaging process as convenient. I do this in controlDict and not with funkyDoCalc as I tried originally.

Hope it helps,
Hugoles is offline   Reply With Quote

Old   September 25, 2014, 20:07
Default
  #12
Senior Member
 
ArathoN
Join Date: Jul 2011
Posts: 137
Rep Power: 15
ArathoN is on a distinguished road
doesn't openfoam have the utility to calculate the velocity gradient? what does swakfoam do more that the preloaded utility?
ArathoN is offline   Reply With Quote

Old   November 24, 2020, 11:28
Question what is the difference between this swak function and surfaceFieldValue?
  #13
Member
 
Join Date: Apr 2018
Location: UK
Posts: 78
Rep Power: 7
JM27 is on a distinguished road
Sorry to revive an old post but I am encountering a related problem.

I have been trying to compute grad(U) on wall patches using swak4Foam and built-in OF function surfaceFieldValue and compare the results. After looking at this post, I realise I have been trying to do the impossible as grad(U) is not defined on patches:

Quote:
grad is not available on patches (simply because OF doesn't have it). snGrad is. That is the gradient in the direction of the surface normal
This explains why:

Code:
extremesGradU {
         type                  swakExpression;
         valueType                         patch;
         patchName                       walls;
         verbose                             true;
         expression                 "grad(U)";
         accumulations          (min max);
         outputControlMode     timeStep;
         outputInterval                       1;
         writeStartTime                   yes;
}
does not work. So far so good.

Now, if I use surfaceFieldValue to compute grad(U) on the "walls" patch, I do get an output:
Code:
maxGradUOnWalls
{
    // Mandatory entries (unmodifiable)
    type            surfaceFieldValue;
    libs            (fieldFunctionObjects);

    // Mandatory entries (runtime modifiable)
    fields          (grad(U));
    operation       max;
    regionType      patch;
    name            walls;

    // Optional entries (runtime modifiable)
    postOperation   none;
    // weightField     alpha1;
    scaleFactor     1.0;
    writeArea       false;
    surfaceFormat   none;

    // Optional (inherited) entries
    writeFields     false;
    scalingFactor   1.0;
    writePrecision  8;
    writeToFile     true;
    useUserTime     true;
    region          region0;
    enabled         true;
    log             true;
    // timeStart       0;
    // timeEnd         1000;
    executeControl  timeStep;
    executeInterval 1;
    writeControl    timeStep;
    writeInterval   1;
}

Therefore my question is: why does surfaceFieldValue compute grad(U) if grad(U) not defined on boundary patches? Perhaps I have misunderstood what surfaceFieldValue does.
Strangely enough then, if I try to compute snGrad(U) using surfaceFieldValue I do not get an output, but I do get an output for snGrad(U) in swak.

p.s. I have tested these on depthCharge2D tutorial.
JM27 is offline   Reply With Quote

Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

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 Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
[swak4Foam] [OpenFOAM plus] [v1612+] swak4Foam installation problem in Windows (Allwmake) LThomes OpenFOAM Community Contributions 7 October 6, 2020 14:36
[swak4Foam] Foam-extend-3.2 and swak4foam...problem with link to triSurface ndev OpenFOAM Community Contributions 7 February 14, 2016 17:00
[swak4Foam] Problem in Installing swak4Foam AmirBaqa1987 OpenFOAM Community Contributions 9 November 20, 2015 13:18
problem in calculate yplus value? hamidciv CFX 9 September 15, 2015 06:30
Problem with SIMPLEC-like finite volume channel flow boundary conditions ghobold Main CFD Forum 3 June 15, 2015 12:14


All times are GMT -4. The time now is 10:21.