Skip to content

[Bug] Cylinder jet actuation is not zero-net-mass-flux #360

Open

Description

@NopeCharon

Describe the bug
The jet actuation of hydrogym.firedrake.Cylinder was added in #141 as zero-net-mass-flux (ZNMF) control following Rabault et al. (2019), where the two jets satisfy Q1 + Q2 = 0. The boundary velocity in Cylinder.cyl_velocity_field adds both jet profiles with the same sign:

# Normal velocity (blowing/suction) at the cylinder wall
return ufl.as_tensor((self.x, self.y)) * (A_up + A_lo)

(x, y) points out of the cylinder at both jets, so a positive control blows through both jets and a negative control sucks through both. The actuation is symmetric about the centreline and injects net mass. Because of this symmetry it can't produce lift, which is what the feedback and step-input examples rely on. MAIA's Cylinder already pairs its jets with opposite signs.

To Reproduce
Integrate the outflow through each jet for unit control:

import firedrake as fd
import hydrogym.firedrake as hgym

flow = hgym.Cylinder(mesh="medium")
flux = fd.dot(flow.cyl_velocity_field, -flow.n)  # from the wall into the fluid
up = fd.assemble(fd.conditional(flow.y > 0, flux, 0.0) * fd.ds(flow.CYLINDER))
lo = fd.assemble(fd.conditional(flow.y < 0, flux, 0.0) * fd.ds(flow.CYLINDER))
print(up, lo)  # 1.0033  1.0033  -> net flux 2.0

Steady Newton solve at Re = 40 (medium mesh), with no actuation and with the maximum control u = 0.1:

CL CD
u = 0 0.00003 1.789
u = 0.1, current main 0.00031 2.050
u = 0.1, jets with opposite sign -1.272 1.732

On main the jets have no authority over lift and only increase drag.

Console Error
No error is raised; the actuation is just not the documented ZNMF blowing/suction.

Environment Description
Current main (6ab9c58). Checked with the firedrakeproject/firedrake-vanilla-default container (arm64) on Linux.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions