CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM (http://www.cfd-online.com/Forums/openfoam/)
-   -   How to use Cp and Cv filds in groovyBC? (http://www.cfd-online.com/Forums/openfoam/119699-how-use-cp-cv-filds-groovybc.html)

immortality June 23, 2013 04:38

How to use Cp and Cv filds in groovyBC?
 
Hi
I want to use Cp and Cv fields in groovyBC as I told in the title.
does it need that these fields necessarily be written in time folders so that groovyBC can use them or not?
how to introduce these fields that computes by the solver(as Mach postProcessing tool uses them) to groovyBC?
I have written these lines in variables:
Code:

//"gamma=thermo.Cp()/thermo.Cv();"
                  //"Cp=thermo.Cp();"
                  //"Cv=thermo.Cv();"
                  "p_3=p0_3/pow(1+magSqr(U)/(2*Cp*T),Cp/(Cp-Cv));"

and the error:
Code:

--> FOAM FATAL ERROR:
 Parser Error for driver PatchValueExpressionDriver at "1.25-26" :"field Cp not existing or of wrong type"
"p0_3/pow(1+magSqr(U)/(2*Cp*T),Cp/(Cp-Cv))"


gschaider June 23, 2013 05:19

Quote:

Originally Posted by immortality (Post 435405)
Hi
I want to use Cp and Cv fields in groovyBC as I told in the title.
does it need that these fields necessarily be written in time folders so that groovyBC can use them or not?
how to introduce these fields that computes by the solver(as Mach postProcessing tool uses them) to groovyBC?
I have written these lines in variables:
Code:

//"gamma=thermo.Cp()/thermo.Cv();"
                  //"Cp=thermo.Cp();"
                  //"Cv=thermo.Cv();"
                  "p_3=p0_3/pow(1+magSqr(U)/(2*Cp*T),Cp/(Cp-Cv));"

and the error:
Code:

--> FOAM FATAL ERROR:
 Parser Error for driver PatchValueExpressionDriver at "1.25-26" :"field Cp not existing or of wrong type"
"p0_3/pow(1+magSqr(U)/(2*Cp*T),Cp/(Cp-Cv))"


At first: groovyBC can only work with fields that are in memory. Depending on the OF-version Cp may or may not be in memory (because it is only computed on demand). It may also be in memory under a different name (see the discussion on aliases in swak elsewhere - a feature that was added for that specific situation. PLEASE try to find it with the search-function of the message board yourself).

If the solver does not provide the field in memory (use the listRegisteredObjects from the simpleFunctionObjects to check) then you can create an expressionField-functionObject to create such a field using the appropriate function from the libswakThermoTurbFunctionPlugin.so (you've got to add that lib to the libs-entry in controlDict then these functions are available to you)

immortality June 23, 2013 10:03

thanks Bernhard for explanations
a little question:in which folder I have to use listRegisteredObjects?

gschaider June 24, 2013 18:33

Quote:

Originally Posted by immortality (Post 435453)
thanks Bernhard for explanations
a little question:in which folder I have to use listRegisteredObjects?

That is a regular function object and will only print a table of the objects currently registered with the mesh


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