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] what does this swak function of average on average mean? (https://www.cfd-online.com/Forums/openfoam-community-contributions/117134-what-does-swak-function-average-average-mean.html)

immortality May 2, 2013 16:12

what does this swak function of average on average mean?
 
I've found this function in an thesis.is it correct?
because it has defined an average of total pressure on the patch at each time step and in accumulations it uses average again.what does average do in this case?is it a correct method to get average on a patch?
Code:

Total-pressuresec9outlet
{
functionObjectLibs("libsimpleSwakFunctionObjects.so”);
type swak Expression ;
outputControl outputTime ;
valueType faceZone ;
zoneName sec9 outlet ;
expression ”sum((0.5∗rho*pow(mag(U),2)+p)∗(area()∗rho))/(sum(area()∗rho))”;
accumulations
(
average
);
verbose true ;
autoInterpolate true ;
warnAutoInterpolate false ;
}


wyldckat May 2, 2013 23:16

Hi Ehsan,

Mmm... after thinking a bit about this, I think I can explain what happened:
  1. The current accumulation in your example only averages a single value. Therefore, the average of a single value is that same value.
  2. The author probably started the function object like this:
    Code:

    Total-pressuresec9outlet
    {
    functionObjectLibs("libsimpleSwakFunctionObjects.so”);
    type swakExpression;
    outputControl outputTime;
    valueType faceZone;
    zoneName sec9outlet;
    expression ”0.5∗rho*pow(mag(U),2)+p”;
    accumulations
    (
    average
    );
    verbose true ;
    autoInterpolate true ;
    warnAutoInterpolate false ;
    }

    In other words, by using the standard average mechanism that swak4Foam provides.
  3. Problem was that this value wasn't the average that the author was looking for. So, the next step was to do the average manually, just to make sure things still worked as before:
    Code:

    Total-pressuresec9outlet
    {
    functionObjectLibs("libsimpleSwakFunctionObjects.so”);
    type swakExpression;
    outputControl outputTime;
    valueType faceZone;
    zoneName sec9outlet;
    expression ”sum((0.5∗rho*pow(mag(U),2)+p)*area())/sum(area())”;
    accumulations
    (
    average
    );
    verbose true ;
    autoInterpolate true ;
    warnAutoInterpolate false ;
    }

    This should be able to perform the same averaging methodology that is used by swak4Foam.
  4. And now, as for the final step, I'm going to ask you Ehsan: Why do you think the author used "area()*rho()" instead of "area()"? ;)
Best regards,
Bruno

immortality May 3, 2013 06:47

:D I think its because the flow has been compressible.correct?
this way the average will be more accurate(because of variation of density I think),is it true?
if the mesh is uniform then I think there is no need to sum on area manually,am i correct?!

wyldckat May 3, 2013 13:20

Quote:

Originally Posted by immortality (Post 424907)
:D I think its because the flow has been compressible.correct?
this way the average will be more accurate(because of variation of density I think),is it true?

Yes and yes.
Although I was thinking more along the lines of "mass weighted average" - an even better description on this topic can be found on this thread: http://www.cfd-online.com/Forums/mai...d-average.html - specially on post #20!

Quote:

Originally Posted by immortality (Post 424907)
if the mesh is uniform then I think there is no need to sum on area manually,am i correct?!

As someone once said: better safe than sorry.
It's better to use the area no matter what, to avoid any unpleasant surprises, in case you change the mesh and forget to update this calculation.

immortality May 3, 2013 14:52

ok.but I think its more satisfying to have min and max as well as true average of a variable field on a plane.
how can I change the function below to have min,max an true average(if I change mesh that I'm going to!)in a single function(so that no more complexity be added to poor controlDict!:D)
is it possible in your opinion?:)
Code:

sP_h2_velocity
    {
        type swakExpression;
        valueType surface;
        surfaceName horizontal_Plane_2;
        verbose true;
        surface {
            type plane;
            basePoint      (0.0345 0.002 0);
            normalVector    (0 1 0);
            interpolate true;
        }
        expression "mag(U)";
        accumulations (
            min
            max
            average
        );
    }


artymk4 April 25, 2019 10:32

I got error because of different multiplication signs in this quoted expression:
Quote:

expression ”sum((0.5rho*pow(mag(U),2)+p)(area()rho))/(sum(area()rho))”;
when I replaced big asterisks with normal ones (*) the error was gone. So:
Code:

expression ”sum((0.5*rho*pow(mag(U),2)+p)*(area()*rho))/(sum(area()*rho))”


All times are GMT -4. The time now is 04:25.