Description🔗
The Curle
function object computes the acoustic
pressure based on Curle’s analogy.
Curle’s analogy is implemented as:
\[p' = \frac{1}{4 \pi} \frac{\vec{r}}{| \vec{r} | ^2} \cdot \left( \frac{\vec{F}}{| \vec{r} |} + \frac{1}{c_0}\frac{d\vec{F}}{dt} \right)\]where:
- \(p'\)
- Curle’s acoustic pressure [Pa] or [Pa (m3/kg)]
- \(c_0\)
- Reference speed of sound [m/s]
- \(\vec{r}\)
- Distance vector to observer locations [m]
- \(\vec{F}\)
- Force [N] or [N (m3/kg)]
- \(t\)
- Time [s]
Operands🔗
Operand | Type | Location |
---|---|---|
input | - | - |
output file 1 | dat | $FOAM_CASE/postProcessing/<FO>/<time>/<file> |
output file 2 | surface file | $FOAM_CASE/<outputDir>/<time>/<surfaceName> |
output field | - | - |
Usage🔗
Example of the Curle
function object
by using functions
sub-dictionary in system/controlDict
file:
Curle1
{
// Mandatory entries (unmodifiable)
type Curle;
libs (fieldFunctionObjects);
input <point|surface>;
output <point|surface>;
patches (<patch1> <patch2> ... <patchN>);
c0 343;
// Conditional mandatory entries (runtime modifiable)
// if input=point
observerPositions (<point1> <point2> ... <pointN>);
// if input=surface
surface <surfaceFileName>; // "inputSurface.obj";
// if output=surface
surfaceType <surfaceType>; // ensight;
formatOptions
{
vtk
{
format ascii;
}
}
// Optional entries (runtime modifiable)
p p;
// Optional (inherited) entries
writePrecision 8;
writeToFile true;
useUserTime true;
region region0;
enabled true;
log true;
timeStart 0;
timeEnd 1000;
executeControl timeStep;
executeInterval 1;
writeControl timeStep;
writeInterval 1;
}
where the entries mean:
Property | Description | Type | Required | Default |
---|---|---|---|---|
type | Type name: Curle | word | yes | - |
libs | Library name: fieldFunctionObjects | word | yes | - |
patches | Sound generation patch names | wordList | yes | - |
c0 | Reference speed of sound | scalar | yes | - |
input | Input type | word | yes | - |
output | Output type | word | yes | - |
p | Pressure field name | word | no | p |
observerPositions | List of observer positions (x y z) | pointList | conditional | - |
surface | Input surface file name | word | conditional | - |
surfaceType | Output surface type | word | conditional | - |
formatOptions | Dictionary of surface format options | dictionary | conditional | - |
The inherited entries are elaborated in:
Options for the input
and output
entries:
point | Operand is a set of points
surface | Operand is a surface
Usage by the postProcess
utility is not available.
Notes on entries🔗
- Only the normal-pressure force is included in the force calculation.
Further information🔗
Tutorial:
Source code:
API:
History:
- Introduced in version v1706