Repository navigation
Make Cylinder jet actuation zero-net-mass-flux - #362
Open
NopeCharon wants to merge 1 commit into
Open
NopeCharon wants to merge 1 commit into
NopeCharon wants to merge 1 commit into
Conversation
The jet actuation of the Firedrake Cylinder environment was introduced as zero-net-mass-flux (ZNMF) blowing/suction following Rabault et al., where the two jets satisfy Q1 + Q2 = 0. However, cyl_velocity_field summed the upper and lower jet profiles with the same sign. Since the radial vector (x, y) points out of the cylinder at both jets, a positive control blew through both jets and a negative control sucked through both. The actuation was symmetric about the centreline, injected net mass and had no authority over lift: a steady Re=40 solve at the maximum control u=0.1 gave CL=0.0003 and raised CD from 1.789 to 2.050. Subtract the lower jet profile instead, so a positive control blows through the upper jet and sucks through the lower jet with equal flow rate. The same steady solve now gives CL=-1.272 and CD=1.732. Add test_jet_zero_net_mass_flux, which checks that the upper jet blows for a positive control and that the flux through the two jets cancels. Document the ZNMF pairing in the docstring, the generated API page and the cylinder example page, which also called the jets "tangential" although they are normal to the wall. Closes dynamicslab#360
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #360
Cylinder.cyl_velocity_fieldadded the upper and lower jet profiles with the same sign.(x, y)points out of the cylinder at both jets, so a positive control blew through both of them and a negative control sucked through both. The actuation was symmetric and put net mass into the flow, not the zero-net-mass-flux blowing/suction from Rabault et al. that #141 set out to add.Changes
A_up - A_lo). A positive control blows through the upper jet and sucks through the lower jet at the same flow rate.test_jet_zero_net_mass_fluxintest/test_cyl.py: for unit control the upper jet has to blow, and the fluxes through the two jets have to cancel.docs/docs/examples/firedrake/cylinder.mdnow say the jets have zero net mass flux. The example page also called the jets "tangential", but they're normal to the wall.Validation
All runs used the
firedrakeproject/firedrake-vanilla-defaultcontainer.maingives +1.0033 / +1.0033, so the net flux is 2.0. With this PR it's +1.0033 / -1.0033, with a relative imbalance of 2e-16 (9e-16 on the fine mesh).u = 0u = 0.1,mainu = 0.1, this PRtest_jet_zero_net_mass_fluxfails onmainand passes with this change.test_integrate[1],test_integrate[3],test_envandtest_controlalso pass.test_steady,test_steady_rotation,test_linearizeandtest_act_implicit_no_dampfail the same way onmainand on this branch: the Newton solve doesn't converge, andtest_steady_rotationgets the wrong CL. This PR doesn't touch them.ruff check,ruff format --check,isort --check-onlyandcodespellpass.