Cp (Pressure Coefficient)

Computation of pressure coefficient


  • base: Base

    The base must contain:

    • the mesh coordinates x, y, and z

    • the solution

    • ‘hb_computation’ as an Base.attrs (if HB/TSM type).

  • coordinates: list(str)

    The variable names that define the set of coordinates.

  • vectors: tuple/list(tuple(str)), default= []

    Component names of vectors that need to be rotated. It is assumed that these are given in the cartesian coordinate system.

  • rho_inf: float, default= ‘in_attr’

    The infinite density corresponding to the reference state.

  • v_inf: float, default= ‘in_attr’

    The infinite axial velocity corresponding to the reference state.

  • p_inf: float, default= ‘in_attr’

    The infinite static pressure corresponding to the reference state.

  • family_name: str

    The name of the family from which the percent will be computed and on which Cp is computed.

  • percent: float, default= None

    The percentage relative to the family to determine the absolute position value.

  • position: float, default= None

    The absolute position value relative to the family where the cut must be made.

  • form: int in [1,2,3], default= 1

    The definition of Cp (see below).

Main functions

class antares.treatment.turbomachine.TreatmentCp.TreatmentCp

Execute the treatment.

Compute the pressure coefficient at a given radius percent of the given blade. Thee formulae for Cp are proposed:

form 1: \(\displaystyle Cp_1 = - \frac{p - p_{inf}}{\rho_{inf} n^2 D^2}\)

form 2: \(\displaystyle Cp_2 = 2 \frac{p - p_{inf}}{\rho_{inf} (v_{inf} n^2 r^2)}\)

form 3: \(\displaystyle Cp_3 = 2.0 \frac{p - p_{inf}} {\rho_{inf} v_{inf} ^ 2}\).

The mean and the harmonics of Cp can also be computed if duplication is enabled. Note that the amplitude of the harmonics are divided by the mean value.


Return type:



import os

if not os.path.isdir('OUTPUT'):

from antares import Reader, Treatment, Writer


# Data can be downloaded from
# https://cerfacs.fr/antares/downloads/application1_tutorial_data.tgz

r = Reader('bin_tp')
r['filename'] = os.path.join('..', 'data', 'ROTOR37', 'ELSA_CASE', 'MESH',
r['zone_prefix'] = 'Block'
r['topology_file'] = os.path.join('..', 'data', 'ROTOR37', 'ELSA_CASE',
r['shared'] = True
base = r.read()

r = Reader('bin_tp')
r['base'] = base
r['filename'] = os.path.join('..', 'data', 'ROTOR37', 'ELSA_CASE', 'FLOW',
r['zone_prefix'] = 'Block'
r['location'] = 'cell'


# Needed for turbomachinery dedicated treatments
base = base.get_location('node')

P0_INF = 1.9
base.compute('MachIs = (((%f/psta)**((gamma-1)/gamma)-1.) * (2./(gamma-1.))  )**0.5' % P0_INF)

# Definition of the treatment
t = Treatment('Cp')
t['base'] = base
t['family_name'] = 'BLADE'
t['coordinates'] = ['x', 'y', 'z']
t['rho_inf'] = 0.873
t['p_inf'] = 0.59
t['v_inf'] = 1.5
t['form'] = 3

# Cp
res_dir = os.path.join('OUTPUT', 'CP')
if not os.path.isdir(res_dir):

writer = Writer('column')

for loc in [0.25, 0.5, 0.75, 0.9]:  # radius in percent
    t['percent'] = loc
    Cp_blade = t.execute()

    writer['filename'] = os.path.join(res_dir, 'Cp_%s.dat' % (loc))
    writer['base'] = Cp_blade