Postprocesado y Automatización

Guía Completa de functionObjects: Extracción de Fuerzas, Sondas y Planos en Tiempo Real

Aprende a calcular coeficientes de sustentación y resistencia, perfiles de velocidad y planos de corte durante el cálculo sin saturar el almacenamiento.

I

Ing. Carlos Mendoza

Especialista en CFD Industrial

Publicado: 14 de febrero de 202512 min de lectura

Guía Completa de functionObjects en OpenFOAM

Los functionObjects son módulos dinámicos en C++ cargados en tiempo de ejecución desde system/controlDict que permiten calcular y exportar datos ingenieriles sin necesidad de guardar mallas volumétricas gigantes en disco en cada paso de tiempo.


1. Coeficientes Aerodinámicos (forceCoeffs)

Calcula coeficientes de sustentación ($C_l$), resistencia ($C_d$) y momento de cabeceo ($C_m$):

text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
functions { fuerzas { type forceCoeffs; libs ("libforces.so"); writeControl timeStep; writeInterval 1; patches (cuerpo_vehiculo); rho rhoInf; rhoInf 1.225; liftDir (0 1 0); dragDir (1 0 0); CofR (1.5 0 0); magUInf 30.0; lRef 4.5; // Longitud característica (m) Aref 2.2; // Área frontal de referencia (m2) } }

Los resultados se exportan a postProcessing/fuerzas/0/coefficient.dat.


2. Sondas Espaciales (probes)

Registra valores temporales de presión y velocidad en ubicaciones de coordenadas exactas para análisis de armónicos o FFT:

text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sondasPuntos { type probes; libs ("libsampling.so"); writeControl timeStep; writeInterval 1; probeLocations ( (0.1 0.05 0.0) (0.5 0.05 0.0) (1.0 0.05 0.0) ); fields (p U); }

3. Planos de Corte y Muestreo (surfaces)

Exporta planos bidimensionales en formato VTK para generar animaciones ligeras:

text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
planosCorte { type surfaces; libs ("libsampling.so"); writeControl writeTime; surfaceFormat vtk; fields (p U); surfaces ( planoSimetria { type cuttingPlane; planeType pointAndNormal; pointAndNormalDict { point (0 0 0); normal (0 0 1); } interpolate true; } ); }