CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (http://www.cfd-online.com/Forums/openfoam-solving/)
-   -   Using codedFixedvalue to apply totalPressure Boundary Condition (http://www.cfd-online.com/Forums/openfoam-solving/119239-using-codedfixedvalue-apply-totalpressure-boundary-condition.html)

 cdm June 12, 2013 13:16

Using codedFixedvalue to apply totalPressure Boundary Condition

Using OF 2.1.1, I'm trying to use the codedFixedValue boundary condition to apply a polynomial temperature distribution at my inlet. I can apply a static temperature distribution using the following code in my 0/P file:

Code:

```    INLET     {         type            codedFixedValue;         value          \$internalField;         redirectType    polyTemperatureInletDistribution;  // name of generated BC         code         #{             vector dir=vector(0,0.866026,-0.5);  // unit vector (30-deg CCW from Y)             scalarField var=patch().Cf()&dir;             scalarField value = -8508888.202118 * pow(var,4)                                 -  76279.680124 * pow(var,3)                                 +  5489.594313 * pow(var,2)                                 +    639.763780 * var                                 +  1200;             operator==(value);         #};     }```
This generates the following boundary condition:
https://dl.dropboxusercontent.com/u/60307133/Inlet.jpg

However, I want to define this temperature distribution as the totalTemperature at the inlet, not a static temperature. How can I modify my codedFixedValue BC to apply a totalTemperature?

Alternatively, would setting the inlet velocity, U, as fixedValue uniform(0 0 0) force a total temperature condition at the inlet? I'm worried that this could cause adverse effects on the solution, though, so I'd rather code a totalTemperature if possible.

Thanks for having a read, and for any help.

 cdm June 12, 2013 20:41

Looking through the source code in src/finiteVolume/fields/fvPatchFields/derived/totalTemperature/ I implemented the equivalent calculation as shown below. I'm currently running my case to check whether this yields the desired results, and if anyone spots any potential issues I'd be grateful for the assistance; this is my first time analysing the source code and trying to understand it. However, the BC does compile properly. I'll update again later after running a number of iterations and checking the results.

Code:

```    INLET     {         type            codedFixedValue;         value          \$internalField;         redirectType    polyTempInletDistribution;  // name of generated BC         code         #{             const scalar gamma_ = 1.34;             const fvPatchVectorField& Up =                 patch().lookupPatchField<volVectorField, vector>("U");             const fvsPatchField<scalar>& phip =                 patch().lookupPatchField<surfaceScalarField, scalar>("phi");             const fvPatchField<scalar>& psip =                 patch().lookupPatchField<volScalarField, scalar>("psi");             scalar gM1ByG = (gamma_ - 1.0)/gamma_;             vector dir=vector(0,0.8660255047,-0.4999998252);             scalarField var=patch().Cf()&dir;             scalarField value = -8508888.202118 * pow(var,4)                                 -  76279.680124 * pow(var,3)                                 +  5489.594313 * pow(var,2)                                 +    639.763780 * var                                 +  1200;             operator==             (                 value/(1.0 + 0.5*psip*gM1ByG*(1.0 - pos(phip))*magSqr(Up))             );         #};     }```

 cdm June 22, 2013 14:10

This worked as needed. For anyone looking at this for their own work, please note that the direction vector must be specified as a unit vector (magnitude = 1) otherwise it will scale your temperatures on you.