A New Method for Generating Swirl Inlet Distortion
for Jet Engine Research
Kevin M. Hoopes
Thesis submitted to the Faculty of the
Virginia Polytechnic Institute and State University
in partial fulfillment of the requirements for the degree of
Master of Science
in
Mechanical Engineering
Walter F. O’Brien, Chair
Kevin Todd Lowe
Christopher B. Williams
May 8, 2013
Blacksburg, Virginia
Copyright 2013, Kevin M. Hoopes
A New Method for Generating Swirl Inlet Distortion for Jet Engine
Research
Kevin M. Hoopes
(ABSTRACT)
Jet engines operate by ingesting incoming air, adding momentum to it, and exhausting
it through a nozzle to produce thrust. Because of their reliance on an inlet stream, jet
engines are very sensitive to inlet flow nonuniformities. This makes the study of the effects
of inlet nonuniformities essential to improving jet engine performance. Swirl distortion is
the presence of flow angle nonuniformity in the inlet stream of a jet engine. Although
several attempts have been made to accurately reproduce swirl distortion profiles in a testing
environment, there has yet to be a proven method to do so.
A new method capable of recreating any arbitrary swirl distortion profile is needed
in order to expand the capabilities of inlet distortion testing. This will allow designers to
explore how an engine would react to a particular engine airframe combination as well as
methods for creating swirl distortion tolerant engines. The following material will present
such a method as well as experimental validation of its effectiveness.
Contents
1 Introduction 1
1.1 Total temperature distortion . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Total pressure distortion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Swirl distortion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Effects of flow distortion on engines . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Summary of present research . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Literature Review 6
2.1 Methods for generating swirl distortion . . . . . . . . . . . . . . . . . . . . . 7
2.1.1 Turned vanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.2 Delta wing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.3 Swirl chamber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Relationship of present research to other methods . . . . . . . . . . . . . . . 15
3 Methodology 18
3.1 Method overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2 Method details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2.1 Determine desired swirl profile . . . . . . . . . . . . . . . . . . . . . . 19
3.2.2 Create lines everywhere perpendicular to the desired profile . . . . . . 19
3.2.3 Use a vane model to determine the vane section geometry to place
along each vane line . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
iii
3.2.4 Add structural supports . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.5 Export geometry to a CAD package for creation of solid bodies . . . 30
3.2.6 Manufacture the geometry using an additive manufacturing method . 31
4 Experimental Setup 35
4.1 Low-speed tunnel overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2 Rotator and traverse system . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.1 5-hole probe description . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2.2 5-hole probe calibration . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.3 Data acquisition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.4 Experimental uncertainty . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.5 Inherent problems with experimental setup . . . . . . . . . . . . . . . . . . . 42
4.5.1 Vane deformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.5.2 Profile mixing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.5.3 Validity of numerical results on which screens are based . . . . . . . . 44
5 Results 45
5.1 Comparison metric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.2 Bulk swirl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.2.1 Profile description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.2.2 Screen description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.2.3 Results and discussion . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.3 Generic twin swirl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3.1 Profile description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3.2 Screen description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.3.3 Results and discussion . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.4 Representative profile for serpentine inlet applications . . . . . . . . . . . . . 64
5.4.1 Screen description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
iv
5.4.2 Results and discussion . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5 Representative profile for HWB applications . . . . . . . . . . . . . . . . . . 74
5.5.1 Profile description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.5.2 Screen description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.5.3 Results and discussion . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6 Conclusion and Recommendations 83
Bibliography 87
A Source Code 90
A.1 inleta variable vanes.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
A.2 super seed path maker.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
A.3 blade and path maker single.m . . . . . . . . . . . . . . . . . . . . . . . . . 105
A.4 flat plate gen simple orth square cl.m . . . . . . . . . . . . . . . . . . . . . . 113
A.5 structure blade and path maker.m . . . . . . . . . . . . . . . . . . . . . . . . 116
A.6 sweep journal multi.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
A.7 sweep journal maker multi sub.m . . . . . . . . . . . . . . . . . . . . . . . . 119
v
List of Figures
1.1 Contours of total pressure ratio for a typical total pressure distortion case. . 2
1.2 Velocity vectors taken from a typical case involving swirl distortion. . . . . . 3
1.3 Effect of total pressure distortion on engine operability. . . . . . . . . . . . . 5
2.1 Image and inlet system schematic from the Tornado fighter. . . . . . . . . . 6
2.2 Example of turned vanes swirl distortion generators. . . . . . . . . . . . . . . 8
2.3 Results from turned vanes swirl generators. . . . . . . . . . . . . . . . . . . . 9
2.4 Swirl angle profile created by a turned vanes type swirl generator. . . . . . . 9
2.5 Schematic of delta wing and assembly. . . . . . . . . . . . . . . . . . . . . . 11
2.6 Results obtained from a delta wing type swirl generator. . . . . . . . . . . . 12
2.7 CAD model of typical swirl chamber. . . . . . . . . . . . . . . . . . . . . . . 13
2.8 Possible swirl patterns that are obtainable using a swirl chamber. . . . . . . 14
2.9 Image and preliminary results from a swirl chamber produced at AEDC. . . 15
3.1 Parallel and perpendicular lines plotted on top of a generic twin vortex. . . . 20
3.2 Possible vane seeding process for twin vortex profile. . . . . . . . . . . . . . . 21
3.3 Comparison between uniform and variable vane seed spacing mechanisms. . . 22
3.4 Comparison of the NACA thickness profile and a flat plate profile. . . . . . . 25
3.5 Comparison between numerical and experimental NACA A4K6 cascade results. 26
3.6 Plot of ξ as a function of Γ for several different values of Cl. . . . . . . . . . 28
3.7 Output turning φ as a function of Cl. . . . . . . . . . . . . . . . . . . . . . . 29
vi
3.8 CAD model of solid geometry formed from vane lines and vane profiles. . . . 31
3.9 Overview of FFF process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.10 Image of twin vortex screen printed in ABS plastic. . . . . . . . . . . . . . . 34
4.1 CAD model of low speed test tunnel. . . . . . . . . . . . . . . . . . . . . . . 36
4.2 Flow velocity and swirl present in tunnel without any screen or blockage. . . 36
4.3 Detail image of traverse system used in the low-speed tunnel. . . . . . . . . . 37
4.4 Rotator and linear traverse systems with attached 5-hole probe . . . . . . . . 37
4.5 Detailed view of 5-hole pressure probe head . . . . . . . . . . . . . . . . . . 38
4.6 Contours of yaw angle for the different combinations of Cpyaw and Cppitch
used in the calibration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.7 Calibration setup in the low-speed wind tunnel. The probe is being held in
place by two rotation stages, one for yaw and the other for pitch adjustment. 40
4.8 Spatial resolution using rotator and traverse system . . . . . . . . . . . . . . 42
5.1 Description of variables used in the calculation of swirl angle. . . . . . . . . . 46
5.2 Bulk swirl profile velocity vectors and radial variation in swirl angle. . . . . . 47
5.3 Vane locations laid over the bulk swirl velocity vector field and an image of
the final printed bulk swirl screen. . . . . . . . . . . . . . . . . . . . . . . . . 47
5.4 Design and experimental radial variation in swirl angle for the bulk swirl screen. 48
5.5 Velocity vectors and swirl angle contours for generic twin swirl pattern. . . . 51
5.6 Seed lines, vane lines and structural lines for twin vortex screen. . . . . . . . 52
5.7 Spacing of vane seeds along the seed line shown in figure 5.6 for the four
screens tested. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.8 CAD images of twin swirl screens. . . . . . . . . . . . . . . . . . . . . . . . . 54
5.9 Results for ǫ = 2,ǫ′ = 1.87 . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.10 Results for ǫ = 3,ǫ′ = 2.67 . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.11 Results for ǫ = 4,ǫ′ = 3.27 . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
vii
5.12 Results for ǫ = 5,ǫ′ = 4.36 . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.13 Radial profiles of swirl angle for the twin vortex screens. . . . . . . . . . . . 62
5.14 Vane lines with velocity vectors created by vanes shown in blue and design
velocity vectors in gray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.15 Serpentine duct with streamlines colored by Mach number . . . . . . . . . . 64
5.16 Velocity vectors and contours of swirl angle present in the serpentine inlet
distortion profile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.17 Seed line and vane lines for serpentine inlet profile. . . . . . . . . . . . . . . 66
5.18 Vane lines (blue) and structural supports (green) for serpentine inlet profile. 66
5.19 CAD model and final printed screen designed to reproduce the serpentine inlet
profile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.20 CFD computed maximum swirl angle vs. distance downstream of the screen
plane for the serpentine inlet. . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.21 Velocity vectors from CFD results showing the effect of downstream mixing. 68
5.22 Contours of swirl angle from CFD results showing the effect of downstream
mixing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.23 Reference and experimental velocity vectors . . . . . . . . . . . . . . . . . . 70
5.24 Reference and experimental contours of swirl angle . . . . . . . . . . . . . . 71
5.25 Swirl angle comparisons between reference and experimental results along
several radii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.26 Typical hybrid wing body aircraft without boundary layer ingestion. . . . . . 74
5.27 Velocity vectors and contours of swirl angle present in the HWB swirl profile. 76
5.28 First set of seed line and vane lines for HWB profile. . . . . . . . . . . . . . 77
5.29 Second set of seed line and vane lines for HWB profile . . . . . . . . . . . . . 77
5.30 Vane lines (blue) and structural supports (green) for HWB profile. . . . . . . 78
5.31 CAD model and final printed screen designed to reproduce HWB profile. . . 78
5.32 Velocity vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
viii
5.33 Contours of swirl angle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.34 Swirl angle comparisons between reference and experimental results along
several radii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
A.1 Block diagram of interaction between source code files. . . . . . . . . . . . . 91
ix
List of Tables
5.1 Parameters used in the creation of the generic twin vortex pattern. . . . . . 50
5.2 Description of generic twin swirl screens. . . . . . . . . . . . . . . . . . . . . 51
5.3 Description of twin vortex screens. . . . . . . . . . . . . . . . . . . . . . . . 55
A.1 Descriptions and filenames of attached source code. . . . . . . . . . . . . . . 90
x
Chapter 1
Introduction
Jet engines operate by ingesting incoming air, compressing it, mixing it with fuel, combusting
this fuel/air mixture, expanding it through a turbine, and then finally exhausting it through
a nozzle. For aircraft propulsion, a jet engine is useful because it adds momentum to an
incoming stream of air which can, in turn, propel the aircraft. To develop this momentum,
a jet engine operates on this air by way of sets of rotating blades. Because of the aerody-
namics involved in the airflow over these rotating blades, a jet engine is very sensitive to
nonuniformities present in its incoming flow. Nonuniform inlet flow is also called distorted
inlet flow. The study of the effects of inlet distortion is essential to improving jet engine
performance.
There are three main types of distorted inlet flow that commonly affect jet engines;
namely, total temperature distortion, total pressure distortion, and swirl distortion. These
different types of distortion come from a variety of causes and are often present together.
1.1 Total temperature distortion
Total temperature distortion occurs when there is a nonuniformity in the incoming total
temperature profile. This often occurs when engines ingest their own hot exhaust gases
and is particularly true of engines placed in highly integrated military installations. Also in
1
these situations, the engines can be exposed to streams of hot gases from the use of onboard
weapons which can also cause total temperature distortion [1, p 293].
1.2 Total pressure distortion
Total pressure distortion can be caused by a wide variety of sources, such as upstream
obstructions, boundary layer ingestion, embedded inlets, or extreme flight maneuvers. Figure
1.1 shows contours of total pressure ratio for a typical total pressure distortion case.
x
y
−1 −0.5 0 0.5 1−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
0.78
0.8
0.82
0.84
0.86
0.88
0.9
0.92
0.94
0.96
0.98
Figure 1.1: Contours of total pressure ratio for a typical total pressure distortion case.
In this particular case, the profile was created by a Computational Fluid Dynamics
simulation of a boundary layer ingesting serpentine inlet. The combination of both the
curvature of the inlet as well as the ingested boundary layer creates a localized region of low
total pressure near the bottom the of the profile.
Total pressure distortion appears in a wide variety of jet engine installations and as
such has been highly studied in the literature. For quite some time it has been considered
to be the root cause of engine airframe incompatibilities [2, 3]. In order to test for these
potential incompatibilities, total pressure distortion generation devices have been used to
2
recreate total pressure profiles in a lab environment. As such, the creation of total pres-
sure distortion generation devices, which generally take the form of wire mesh screens, has
formed the backbone of distorted inflow research for many years. Recently, the Virginia Tech
Turbomachinery and Propulsion Research Laboratory has produced a method for quickly
creating high-fidelity total pressure distortion generation devices [4, 5].
1.3 Swirl distortion
Swirl distortion occurs when an engine is exposed to flow angle nonuniformities in its inlet
stream. Figure 1.2 shows in-plane velocity vectors for a typical swirl distortion case.
−1 −0.5 0 0.5 1−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
x
y
Figure 1.2: Velocity vectors taken from a typical case involving swirl distortion.
In this particular case, which comes from the same simulation of a boundary layer
ingesting inlet as in Figure 1.1, a distinct pair of vortices is found near the bottom of the
profile. Swirl distortion is often caused by embedded inlets as well as other factors, such
as cross winds, ingested vortices generated by upstream portions of the airframe, and the
ground vortex.
3
Due to the relatively complicated nature of swirl, as well as difficulties in its accurate
recreation, it has not been studied as extensively as total pressure distortion. However, new
airframe designs inspired by the ever-constant drive for higher performance have caused the
jet engine test community to recently begin putting higher importance on the evaluation of
the effects of swirl distortion [6, 7].
In the literature, the effect of swirl distortion on engine performance has mainly been
considered through testing the effects of generic, low-fidelity swirl profiles. There has yet
to be a proven method to duplicate in a testing environment a given swirl profile as seen
by an installed engine. Because of this, there have been several cases where engine/air-
frame systems were deemed compatible during the ground testing phase only to discover
incompatibilities during actual flight testing due to swirl distortion [7, 8].
1.4 Effects of flow distortion on engines
As mentioned previously, jet engines function by operating on the incoming air by way of
rows of blades. Each blade row in the compressor section of the engine is designed to produce
a certain amount of pressure rise with all the blades in a row having the same geometry.
This, by necessity, assumes that the incoming air is circumferentially uniform.
If this flow is distorted, as in Figures 1.1 and 1.2, as a blade rotates, it will enter and
exit regions of dissimilar flow which will cause the blade in these regions to be in an off-
design condition. This off-design condition can decrease blade performance as well as have
the effect of lowering the engine surge margin [1, p 295-297]. Figure 1.3 shows the results
of a study done by Hercock and Williams to test the effect of total pressure distortion on
engine operability [9]. In their study, the authors subjected an engine to several different
patterns of total pressure distortion.
Notice in the figure that the effect of the distortion is to lower the surge line and thus
decrease the surge margin. It is also interesting to note that as the extent of the distortion
was increased, the surge line was lowered even further. This effect is not limited to total
4
Figure 1.3: Summary of results obtained by Hercock and Williams on the effect of totalpressure distortion on engine operability.[9]
pressure distortion. Swirl distortion has also been shown in many independent studies to
produce reductions in engine operability and efficiency [10, 11, 12, 13].
Another effect of blades cycling between areas of distorted and non-distorted flow is
nonuniform blade loading. This cycling between different levels of loading has been shown
to lead to high cycle fatigue of engine components [14]. In one particular example, swirl
distortion was linked via high cycle fatigue to degraded blade life in the first stage compressor
section of auxiliary power units when exposed to high magnitudes of swirl distortion [15].
1.5 Summary of present research
In order to expand the capabilities of inlet distortion testing, the following material will
present a new method to design and produce passive flow control devices to recreate any
arbitrary swirl distortion pattern. These devices can be used in jet engine research to test
the effect of a particular installation/flight scenario on the propulsion system as well as in
fundamental research to explore how fans react to differing levels of swirl distortion. The
analytical base for the method, the implementation, and experimental results to evaluate
and validate the method are also presented.
5
Chapter 2
Literature Review
An early example of swirl distortion being identified as the root of an engine/airframe com-
patibility problem was in the flight testing of the Tornado fighter aircraft. The propulsion
system of this aircraft consists of two turbofan engines mounted internally, each being fed
by a serpentine duct and installed without inlet guide vanes. Figure 2.1a shows an image of
the Tornado in flight and 2.1b shows a schematic of the twin inlet ducts.
Despite ground tests that concluded that there would not be engine airframe compatibil-
ity issues due to total pressure distortion, initial test flights of the Tornado fighter resulted in
engine surge in certain flight conditions. It was discovered that the presence of swirl caused
one of engines to surge when the aircraft was being flown at high angle of attack and the
other engine to surge when the aircraft was flown at high Mach number. Fences placed in
(a) in flight (b) inlet system
Figure 2.1: Image and inlet system schematic from the Tornado fighter.
6
the inlets were successfully used to combat the effect of swirl distortion which resolved the
operability issues [8, §6.2-6.3].
The history of the Tornado fighter illustrates a clear deficiency in the employed ground
test procedure. Because the engines were not tested for their compatibility with respect
to swirl during the initial design phase, the operability problems were only discovered dur-
ing flight testing. Not only is this a dangerous situation for test pilots, but it could have
potentially required expensive, late-stage design modifications to ameliorate the problem.
Fortunately in this case, the inlet system did not have to be redesigned as the addition of
the fencing system sufficiently reduced the effects of the swirl distortion.
For many years, the solution employed to combat swirl distortion has been to mandate
the use of inlet guide vanes. Although the use of inlet guide vanes will reduce the amount of
swirl delivered to the engine, this reduction of swirl comes with an increase in noise and a
decrease in fan performance, which is undesirable, especially in commercial applications. In
addition, it has been shown that certain types of swirl persist even though inlet guide vanes.
A recent example is found in the design of the F-35 Joint Strike Fighter lift fan. Even though
the lift fan employed inlet guide vanes, it still had performance issues that were traced back
to swirl distortion caused by cross winds [7, §4.1.3].
The experience of the Tornado fighter caused the first serious investigation into the
effects of swirl distortion on compressor system performance and operability. This was
accompanied by the need to create swirl distortion in a laboratory setting, which in turn
prompted the investigation into the first swirl distortion generating devices.
2.1 Methods for generating swirl distortion
2.1.1 Turned vanes
Shortly after the development of the Tornado fighter, Genssler et al. produced a paper
that covered two proposed ideas for generating swirl distortion for ground testing [16]. The
first of these ideas was the use of turned vanes similar to inlet guide vanes used on many
7
jet engines. Two of these generators are shown in Figure 2.2. Figure 2.2a shows a screen
designed to create bulk swirl, while Figure 2.2b shows this same method as applied to a more
complicated, twin swirl pattern.
(a) bulk swirl (b) twin swirl
Figure 2.2: Example of turned vanes swirl distortion generators used by Genssler et al. [16]
In their study, Genssler et al. used these types of swirl generators not to simulate the
swirling flow present in any real airframe/engine combination, but instead to create generic
sample cases of twin and bulk swirl which could potentially be similar to conditions seen in
practice. Using the devices pictured in Figure 2.2, the authors were able to generate both
bulk and twin swirl profiles. Figure 2.3 shows plots of the resultant vector fields.
Qualitatively, the authors were able to create both bulk and twin swirl patterns. Pro-
files of swirl angle were also compared for the twin swirl case to give a more quantitative
comparison of the resulting flow to the desired flow. Figure 2.4 shows a profile of the desired
and measured swirl angle along the x-axis of the vector plot shown in Figure 2.3b.
Notice that although the authors were able to match the general shape of the desired
profile, they were unable to match the exact curvature or the magnitudes of the desired swirl
angle. The authors comment that some of the lack of fidelity in their results is attributable to
difficulties inherent in manufacturing. This is particularly evident in the twin swirl example
shown in Figure 2.2. For example, notice that all the vanes in the screen are linear, the
8
(a) bulk swirl (b) twin swirl
Figure 2.3: Vector fields created by turned vane type swirl generators created by Genssleret al. [16].
Figure 2.4: Swirl angle profile created by turned vane type twin swirl generator by Genssleret al. [16].
.
authors comment that curved vanes would have been better able to reproduce the desired
twin swirl pattern. This is especially true in the center of the profile where the desired flow
pattern would be highly curved. The authors go on to say that this type of detail in vane
9
geometry was not possible with the manufacturing process chosen. Although the authors do
not discuss which manufacturing process was used, it is clear from the date of publication,
1987, that current, digital manufacturing methods would be better suited to these types of
complicated vane patterns than any manufacturing process available at the time.
Continuing the efforts of Genssler et al., Flitcroft et al. published a follow-up study
where the effect of combined total pressure and swirl distortion on a fan was characterized
[10]. In their study, a wire mesh gauze was placed over either a supporting structure without
turning or a set of turned vanes similar to those used by Genssler et al. to create a bulk swirl.
This way, the effect of total pressure and bulk swirl distortion on a fan was characterized.
Similar to the previous study, this research did not seek to match a flow profile from a
particular engine/airframe combination, but rather to generate a generic swirl pattern. In
their study, the authors chose to produce bulk swirl using turning vanes designed for a
maximum swirl angle of 8. Since the study was mainly focused on fan response, a detailed
discussion of the generated swirl is not included. Even without measuring the details of the
profile as seen by the fan, the authors were still able to conclude that a counter-rotating
(with respect to the direction of fan rotation) swirl distortion has a negative impact on
engine operability.
A similar study using the same distortion-generation approach was later done by Govard-
han and Viswanath [17]. Following the pattern of the previous study, a detailed examination
of the swirl profile entering the fan was not undertaken. Instead the authors were satisfied
by prescribing a bulk 10 swirl and did not examine the swirl profile generated by their guide
vanes. They reached the same conclusion as Flitcroft et al.; namely, bulk swirl distortion
has a negative effect on engine operability.
Leaning on their relationship with widely studied inlet guide vanes, the use of turned
vanes to generate swirl distortion has proven useful for creating bulk swirl profiles of varying
strengths. The attempt by Genssler et al. to create a more complicated twin swirl pattern
10
speaks to the difficulty of adapting this method to more complicated, generic patterns, such
as the twin swirl pattern, let alone patterns taken from real engine/airframe systems.
2.1.2 Delta wing
Along with turned vanes, Genssler et al. investigated the use of a delta wing to generate
swirl [16]. A delta wing at an angle of attack will create a pair of counter-rotating vortices
behind it with magnitudes dependent on angle of attack. In order to exploit this, Genssler
et al. created a mechanism to hold a delta wing in place in a wind tunnel and allow the
angle of attack and location of the delta wing to be varied by a set of mechanical actuators.
Figure 2.5 shows a schematic of the delta wing used in their study along with the movable
assembly.
Figure 2.5: Schematic of delta wing and assembly used by Genssler et al.
The flow behind the delta wing was measured using a set of three 5-hole pressure probes.
Using these probes, the authors were able to measure a pair of counter-rotating vortices
behind the delta wing. Figure 2.6 shows some of the results from this investigation.
11
(a) velocity vector plot (b) profile of swirl angle
Figure 2.6: Results obtained from a delta wing type swirl generator by Genssler et al. [16]
Figure 2.6a shows a resulting vector plot from a delta wing and figure 2.6b shows profiles
of swirl angle at a given radius along with the design profile for comparison. In comparison
with the results obtained using the turned vanes as shown in Figure 2.4, the swirl profile
created using the delta wing provides a better match of the desired twin swirl pattern.
Pazur and Fottner published a related study where this distortion generator was used
and the effects of the created swirl on a jet engine were measured [11]. While the details
of the generated profile used in this study were not published, the authors show that the
presence of a pair of counter-rotating twin vortices generated by a delta wing has a negative
impact on compressor operability, efficiency, and performance. This method was also used
by Schmid et al. who reached similar conclusions [12].
There are several advantages to the delta wing being used as a swirl generator. First
it can easily be made adjustable in the same manner done by Genssler et al. This would
allow the position and magnitudes of the vortex pair to be adjusted. Also the delta wing
itself would be straightforward to manufacture as it consists of a simple flat plate cut in
a triangular shape. The main drawback of the delta wing method is that it is limited in
the patterns that it could potentially create. It is most applicable to symmetric twin swirl
12
patterns and would not be able to reproduce complicated patterns which arrive from real
engine/airframe combinations.
2.1.3 Swirl chamber
Another more recent method of generating swirl for jet engine research is to use a swirl-
producing inlet, often called a swirl barrel or swirl chamber. The basic concept behind the
swirl chamber is to create a plenum that has adjustable doors that only allow the flow to
enter at certain angles. By adjusting the size, position, and number of these doors, the flow
can be forced to enter the engine inlet in such a way as to produce many different swirl
patterns. Figure 2.7 shows an example of such an inlet designed to produce bulk swirl.
Figure 2.7: CAD model of typical swirl chamber for generation of bulk swirl.
The flow, shown as blue arrows, is drawn by the engine and enters the inlet plenum
only in the tangential direction. This causes a bulk vortex to develop and be ingested by
the engine.
There have been several studies done on the swirl chamber concept which all stem from
two related investigations done by Sheoran and Bouldin [18, 19]. The authors describe a
swirl chamber and provide results from several CFD studies that investigate the types of swirl
patterns that could potentially be created. The authors were able to simulate, using CFD,
a wide array of swirling flow, including bulk swirl, symmetric twin swirl, and asymmetric
13
twin swirl, all by varying the inlets to the swirl chamber. Figure 2.8 shows schematics of
several of these different swirl patterns along with the inlet configuration that was used by
the authors.
Figure 2.8: Possible swirl configurations that are obtainable using a swirl chamber as reportedby Sheoran and Bouldin [18].
Building upon the work done by Sheoran and Bouldin, Davis et al. discuss the appli-
cation of this type of swirl generator to jet engine testing [20]. In their study, a swirl barrel
inlet was manufactured and tested in a wind tunnel at the Arnold Engineering Development
Center. A CAD image of this inlet is shown in figure 2.9a.
Using flow directionality probes, the authors were able to measure a bulk vortex that
they created using the inlet. Figure 2.9b shows the resulting velocity vectors. Although
the paper references a forthcoming study to couple this type of inlet with an F109 turbofan
engine to measure fan response, the authors of the study have since abandoned the technique
commenting that the generated vortices were difficult to control [21].
It is important to note that variations of the swirl chamber method have been used to
create swirl in other applications, such as in the separation of mixtures [22]. Only recently
14
(a) CAD image of swirl chamber (b) resultant velocity vectors
Figure 2.9: Image and preliminary results from a swirl chamber produced at AEDC [20].
has this type of configuration has been proposed as a way to create swirl for jet engine
distortion research.
The swirl chamber method has many advantages as a possible choice to produce swirl
distortion. The method is reconfigurable with multiple different types of swirl obtainable by
slightly modifying the inlet. Also, this method does not place anything directly in front of
the engine, such as blades or delta wings which could potentially collapse and be ingested.
There are, however, several disadvantages to the swirl chamber concept. The main one
being that the swirl chamber concept is best suited to creating generic swirl profiles and not
detailed profiles from real engine airframe systems. This is the case as the swirling flow is
created far upstream by the plenum inlets which, while suitable for the coarse adjustments
needed to create generic patterns, makes the details of a swirl profile difficult to control
precisely. Also, due to the nature of the swirl chamber, coupling the method with a method
to control the total pressure profile would be difficult.
2.2 Relationship of present research to other methods
All three of the methods discussed rely on the same basic premise to create swirl distortion:
they all are designed to create generic swirl patterns. For fundamental research on the effect
of swirling flow on fan response, these methods have been used successfully to demonstrate
the reduction in performance that is associated with swirl distortion due to these generic
15
profiles [10, 11, 12, 13]. This strength is also the limitation of these methods. If an airframe
or inlet manufacturer wanted to study the effect of the swirl profile generated by their
particular geometry on fan performance these methods would be unable to reproduce the
profile as they are all limited to generation of generic profiles.
Some work has been done to allow generic profiles to be used to approximate profiles
from real engine airframe systems [7]. The idea behind this approach is that if the swirl
pattern can be reduced to a set of swirl descriptors that are the critical quantities for fan
response, then a generic profile could be generated with those same descriptors and the fan
response will be the same as it would be for the real profile. This has yet to be tested
experimentally for swirl distortion research, but it is obvious that a more ideal approach
would be to simulate the actual profile and not a reduced order approximation.
Thus, the ideal swirl generation method would be able to reproduce an arbitrary swirl
profile. This profile could take the form of an artificially generated generic profile or a profile
from a real engine/airframe system. The best case would be for this distortion generating
device to be adjustable in real time; this would allow the profile created by the device to be
measured and adjusted during an experiment until an acceptable level of reproduction was
met. In the absence of this type of adjustment, the best alternative would be a method that
produces screens that are fast and inexpensive to manufacture so that rapid design iteration
would be possible.
The ideal method would also produce a distortion generating device that could be
analyzed structurally so that it could be designed to avoid ingestion. Along with the swirl
profile, for the fan response due to a distortion generator to approximate the fan response
due to a real engine/airframe system, the total pressure profile must be duplicated at the
AIP as well. As such, the ideal swirl distortion generating device should also able to either
control its output total pressure profile or be easily coupled with a total pressure distortion
generating system. This would allow for the duplication of both the swirl and total pressure
profiles at the AIP and thus ensure the appropriate fan response.
16
The present research seeks to build upon the previous work done in the area of swirl-
distortion generation and take advantage of recent advancements in both fluid simulation as
well as manufacturing. Unlike the previous methods discussed, the present research creates a
swirl profile directly from a target velocity vector field and is therefore not limited to generic
swirl patterns. It does this by placing turning vanes in a pattern which directly matches
the desired vector field. This allows the method to be used to match profiles obtained
from particular engine/airframe combinations which represents a level of control and swirl
profile duplication that would otherwise be impossible. The method should prove helpful in
studying potential engine/airframe compatibility issues as well as providing insight to help
aid the designers of future inlets.
17
Chapter 3
Methodology
3.1 Method overview
The distortion screen design methodology presented in this chapter hinges on two basic
ideas. First, a flow-turning device is most effective when it is placed perpendicular to the
desired turning direction. Second, using experimental data from the literature, and also
CFD simulations where these data are insufficient, the turning produced by a linear cascade
of airfoils can be accurately predicted. Combining these two concepts, the method seeks
to create rows of turning vanes everywhere perpendicular to a desired vector field. These
vanes are designed with cross sections formulated from linear cascade data to produce the
desired turning at regular intervals along each vane row. This produces a flow-turning device
that would be very difficult to create using traditional manufacturing methods. In order to
overcome this limitation, advanced manufacturing techniques are employed.
Due to the reliance on placing guide vanes along streamlines constructed from perpen-
dicular and parallel vector fields, I have termed this method the StreamVane Design Method.
An overview of the StreamVane Design Method is presenting in the following list:
1. Determine desired swirl profile
2. Create lines everywhere perpendicular to the desired profile
18
3. Use a vane model to determine the vane section geometry to place along each vane line
4. Add structural supports
5. Export geometry to a CAD package for creation of solid bodies
6. Manufacture the geometry using an additive manufacturing method
3.2 Method details
3.2.1 Determine desired swirl profile
Typically in inlet flow distortion research, the goal is to duplicate the flow in a real air-
frame/engine installation scenario at a designated plane. This profile is usually set at a
certain number of inlet diameters from the face of the compressor fan, and is termed the
Aerodynamic Interface Plane, or AIP. The underlying assumption is that if one can dupli-
cate the flow pattern present at the AIP, then the engine response will be the same as it
would be in the real installation. Usually this desired velocity field, or swirl profile, is taken
from numerical studies of the airframe and inlet system. This is done so that the effect of
a particular engine/airframe system on an engine can be assessed. Often these results come
from studies that are done on concept airframe/engine systems without any experimental
support.
3.2.2 Create lines everywhere perpendicular to the desired profile
Once the desired swirl profile is chosen, a new vector field is then created that is everywhere
perpendicular to the first. This is done using a simple rotation as defined in Equation 3.1.
U ′
V ′
=
0 −1
1 0
U
V
(3.1)
In this equation, the components of the original vector field are labeled U and V while the
components of the rotated, perpendicular vector field are labeled U ′ and V ′. This new vector
19
field is then integrated in both positive and negative directions at regular intervals to form
lines that are everywhere parallel to it. Because of the rotation applied, these lines will be
everywhere perpendicular to the original, desired vector field. These lines are similar to flow
potential lines in the literature and in the present application will be termed vane lines as it
is along these lines that vane cross sections will be placed.
Figure 3.1 shows a plot of velocity vectors taken from a generic twin vortex pattern.
In the figure, the red lines are everywhere parallel to the flow while the blue lines represent
possible vane lines and are everywhere perpendicular to the desired vector field.
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
Figure 3.1: Parallel (red) and perpendicular (blue) lines plotted on top of a vector field of ageneric twin vortex.
One can think of this process as dropping a particle into the velocity field at a certain
location and then tracking its path as it moves through the vector field. In essence, this
is what is happening when the velocity field is integrated. The exact integration process
employed is independent of the StreamVane Method, but for the included experiments, the
Runge-Kutta 4th order integration scheme employed by the MATLAB stream2 function was
used [23].
20
One question to ask is, how does one choose where to seed the flow to create these
perpendicular vane lines? One way is to first seed the original vector field at a single point,
integrating to create a parallel line, then one can simply move along one of these lines and
seed the perpendicular vector field to create the vane lines at certain intervals. Figure 3.2
shows this process for the twin vortex pattern.
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
Figure 3.2: Possible vane seeding process for the twin vortex profile. In this figure, the redline represents the vane seed line with its start point shown as a red circle. The blue circlesrepresent seed locations for their corresponding vane lines which are also shown in blue.
First, the original vector field is seeded in a particular location, denoted in Figure 3.2
by the red circle. The original vector field is then integrated to create the red line, which is
everywhere parallel to it. Now that the seed line geometry has been established it can be
used to create seed points for the vane lines. These seed points are designated using blue
circles in Figure 3.2. For the purposes of this figure, they are evenly spaced along the seed
line. The perpendicular vector field is then integrated starting at these locations to create
the blue vane lines. It is along these lines that vane cross sections will be placed to recreate
the desired vector field and thus swirl pattern. For the purpose of this illustration, only one
21
seed line was used. Usually multiple seed lines would be used with their start point and
extent tuned to create vane lines that would cover the entire vector field.
It is also possible to use a variable spacing seeding mechanism when placing seed points
along a seed line. This allows for vanes that are closer together when larger gradients in
desired output turning are present. Uniform and variable vane line seeding are illustrated in
Figure 3.3.
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 12
4
6
8
10
12
14
16
Tur
ning
Ang
le (
deg)
Distance Along Seed Line
(a) uniform seed spacing
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 12
4
6
8
10
12
14
16
Tur
ning
Ang
le (
deg)
Distance Along Seed Line
Seed LineVane Seed LocationsExtrema
(b) variable seed spacing
Figure 3.3: Comparison between uniform and variable vane seed spacing mechanisms.
In both Figure 3.3a and 3.3b, the red line represents the desired output turning along
the seed line shown in Figure 3.2. Overlayed on these lines are blue circles marking potential
seed locations. Notice that in Figure 3.3a the seed locations are spaced evenly along the
vane seed line regardless of output turning. This method creates evenly spaced vanes, but
does not allow for their efficient use. Also, as illustrated in the figure, it is not guaranteed
that the seed points correspond to the extrema of the desired output turning curve. Using
this method, important details in the swirl pattern could potentially be neglected.
Figure 3.3b demonstrates a variable seed placement mechanism. First, the user defines
the minimum desired change in output turning angle designated as ǫ. The program then
places a vane seed at each local minima and maxmima along the vane line. These extrema
are marked with green circles in Figure 3.3b. The value of the turning angle at each extrema
22
is designated as Ψi where i goes from 1 to the number of extrema. Equation 3.2 is then
used to calculate the effective minimum turning angle, ǫ′, for the section between each pair
of extrema points.
Ψi+1 −Ψi
⌈Ψi+1−Ψi
ǫ⌉= ǫ′i (3.2)
This assures that there will be a integer number of vanes being placed between extrema
points while maintaining an ǫ′ which is near the desired ǫ. The program then steps away
from the ith extrema point placing vanes whenever the desired output turning changes by
ǫ′i. This process is repeated to fill each gap between each pair of extrema as can be seen in
Figure 3.3.
One of the underlying assumptions of the StreamVane Method is that the flow around
a vane with dissimilar neighbors will be similar to the flow around a vane where all of its
neighbors are like itself. This level of vane-to-vane variability can be controlled using the
variable seed spacing mechanism and the choice of ǫ. In Section 5.3, several experiments will
be discussed that explore the effect of ǫ on accurate swirl profile reproduction.
3.2.3 Use a vane model to determine the vane section geometry to place
along each vane line
Once the vane lines have been created, the geometry of the cross sections along each vane
line must be determined. At regular intervals along each vane line the original vector field
is queried to find the desired turning angle at the given position. Once the desired turning
angle is known, it is supplied to the vane model along with other parameters, such as the
distance to the nearest two vanes and the desired vane thickness and solidity. Using these
parameters, the vane model outputs a cross section that is designed to produce the desired
turning.
By unwrapping the seed line as shown Figure 3.2, one can imagine the vanes placed
along this line as being in the form of a linear cascade. This is similar to traditional rings
23
of inlet guide vanes being considered as linear cascades, except, as previously discussed, the
desired output turning will vary along the cascade.
The choice of vane geometry will be highly dependent on application of the screen as
well as manufacturing process. For example, some vane geometries are designed for high
Mach number flow, while others are designed with near uniform thickness to simplify the
manufacturing process. Although the details of the vane model are independent from the
StreamVane Method, in order to test the method a vane model was chosen, validated, and
implemented.
In his book, Axial-Flow Compressors: A Strategy for Aerodynamic Design and Analysis,
Aungier discusses several vane profiles for use in axial flow compressor stages as well as inlet
guide vanes [24, §4]. Out of all the vane profiles discussed, Aungier recommends the NACA
A4K6 camber line for inlet guide vane use as it has good flow guidance over a large range
of output turning angle and is relatively simple to implement [24, §4.7]. Along with this, in
the technical report that gives the details of the camber line the author, Dunavant, includes
the results from an extensive experimental investigation into its effectiveness [25].
Because of this, the NACA A4K6 camber line was chosen as the basis for the vane
model to be used in evaluating the effectiveness of the StreamVane Method. During the
development of the camber line and for his experimental results, Dunavant used the NACA
63-006 thickness distribution. This thickness distribution and the camber line for a vane of
unity Cl are shown in Figure 3.4 for two different vane chords.
As the figure illustrates, the NACA 63-006 thickness profile becomes very narrow at the
leading and trailing edges. Since the thickness profile is defined as being a certain fraction of
the chord, as the chord narrows, the thickness near the leading and trailing edges will shrink
dramatically. This makes using this thickness profile particularly problematic when trying
to manufacture vanes with the Fused Filament Fabrication (FFF) technique described in
detail in Section 3.2.6. FFF operates by laying down thin layers of ABS plastic, with each
layer being a uniform thickness. The FFF machine used for the experiments in Chapter 5
24
0 0.1 0.2 0.3 0.4 0.5
−0.15
−0.1
−0.05
0
0.05
0.1
0.15
0.2
chord (in)
thic
knes
s (in
)
NACA A
4K
6 Camber Line
NACA 63−006 Thickness Distribution0.028" Flat Plate Profile
(a) chord = 0.5in
0 0.5 1 1.5
−0.4
−0.2
0
0.2
0.4
0.6
chord (in)
thic
knes
s (in
)
NACA A
4K
6 Camber Line
NACA 63−006 Thickness Distribution0.028" Flat Plate Profile
(b) chord = 1.5in
Figure 3.4: Comparison of the NACA 63-006 thickness profile and a flat plate profile for usewith NACA A4K6 camber line.
is capable of creating features no thinner than 0.028 inches. If the NACA 63-006 thickness
profile was used, when the vane had a large cord, such as illustrated in Figure 3.4b, the
leading and trailing edges would be approximated fairly well. On the other hand, when the
vane has a small chord, as in Figure 3.4a, the curvature near the leading and trailing edge
would be approximated with blunt leading and trailing edges each with a thickness of 0.028
inches. In order to maintain consistency throughout a wide range of possible vane chords, a
flat plate profile with a constant thickness of 0.028 inches was chosen. The FFF technique
is able to consistently manufacture vanes using this profile regardless of vane chord. This
is particularly useful in the present application, where setting a constant solidity results in
vanes with variable chord.
Because of this geometry modification, the correlations produced by Dunavant are no
longer applicable. Similar correlations between solidity, σ, coefficient of lift, Cl, output
turning angle, φ, and angle of attack, α, were created to take into account the effect of the
new vane thickness profile. Computational Fluid Dynamics was chosen to create these new
vane correlations to avoid the cost and time of large scale linear cascade experimentation.
25
In order to validate the numerical results, first the experimental results obtained by
Dunavant using the NACA 63-006 profile were duplicated using CFD. Figure 3.5 shows a
comparison of φ vs angle of attack, α, for a vane of σ = 1.5 and Cl = 1.2.
2 4 6 8 10 12 14 16 188
10
12
14
16
18
20
α (deg)
φ (d
eg)
Experimental ResultsCFD ResultsLinear Fit of CFD Results
Figure 3.5: Comparison between experimental results obtained via Dunavant to numericalresults obtained via CFD.
Notice that in general the CFD results match the experimental results very well. The
CFD results were obtained using ANSYS FLUENT using a mesh with prismatic boundary
layers around the vanes, a tetrahedral viscous core, and pressure and periodic boundary
conditions. During the solution, a coupled flow solver was used with the k−ω SST turbulence
model. These results provided confidence that the chosen solution, meshing strategy, and
turbulence model were sufficient to predict the output turning from these types of linear
cascades.
As described by Dunavant, the output turning from a linear cascade utilizing the NACA
A4K6 camber line can be defined by Equation 3.3.
φ = f (Cl, α, σ) (3.3)
26
In his study, Dunavant created correlations for desired output turning from a cascade by
holding constant σ and expressing α as a function of Cl. This allowed the output turning to
become a function of Cl only. This was done by choosing a design angle of attack, or αd, for
each Cl and σ. At αd a vane will produce a minimum amount of drag as well as be insulated
from positive and negative stall by a wide margin. To simplify the model, Dunavant also
chose to use a linear relationship between αd and Cl for each σ as expressed in Equation 3.4.
Dunavant used a combination of vane surface pressures, Cd data, and engineering intuition
to choose an appropriate value for Γ for each σ studied. In order to develop a vane model
for the StreamVane Method, a more systematic approach was used.
αd = Γ ∗ Cl (3.4)
In their book, Hill and Peterson define the stagnation pressure loss ratio, ξ, as in Equa-
tion 3.5 [26, p. 312]. In this equation, ∆P0 represents the total pressure loss through a
cascade and wi represents the velocity magnitude entering the cascade. Hill and Peterson
discuss that ξ can be used to determine when a cascade is in positive or negative stall [26,
p. 312-314]. Typically, profiles of ξ vs α are nearly parabolic in shape with some defined
minimum and then sloping curves toward positive and negative stall.
ξ =∆P0
1/2ρw2i
(3.5)
Many combinations of α and Cl were studied numerically to obtain values for ξ. Figure
3.6 shows a plot of ξ formulated as a function of Γ for several different values of Cl using a
flat plate thickness profile and the NACA A4K6 camber line. A constant value of σ = 2 was
used for this study as well as all other correlations and experiments presented. A relatively
high value of σ was chosen as, in general, higher values of σ yield a wider vane stall margin,
increased vane turning authority, and greater structural integrity [26, p. 312]. While the
choice of σ will not impact vane output turning as it is included in the correlation, it will
27
affect the overall losses associated with a StreamVane screen. It may also have an effect
on the variable cascade assumption discussed previously. It is recommended that further
experiments be conducted that test the effect of σ on StreamVane performance.
0 5 10 15 20 25 30 350.04
0.06
0.08
0.1
0.12
0.14
0.16
0.18
0.2ξ
Γ
C
l=0.4
Cl=0.6
Cl=0.8
Cl=1.0
Cl=1.2
Figure 3.6: Plot of ξ as a function of Γ for several different values of Cl.
Notice that each value of Cl produces the same characteristic parabolic shape. A Γ of
15 was chosen as providing a minimum of stagnation pressure loss as well as a wide stall
margin for all tested Cl.
With a defined relationship between αd and Cl the final vane model was evaluated by
testing a range of Cl and recording the values of φ for σ = 2. Figure 3.7 shows these results
along with a linear fit through the data.
28
0.4 0.5 0.6 0.7 0.8 0.9 1 1.18
10
12
14
16
18
20
22
24
26
Cl
φ (d
eg)
CFD ResultsLinear Fit φ=24.02*C
l
Figure 3.7: Output turning φ as a function of coefficient of lift, Cl, for a linear cascadeutilizing the NACA A4K6 camber line and Γ = 15.
Notice that the results follow a linear fit very well with R2 = 1.0000. The linearity of φ
vs Cl makes implementing this correlation very straight forward. The equation for the linear
fit through the CFD results in Figure 3.7 is given in Equation 3.6. Combining Equation 3.4,
3.6 and setting the solidity constant creates a clear path to calculate the vane geometry to
produce a desired output turning.
φ = 24.02 ∗ Cl (3.6)
Even though new correlations for cascade output turning using a flat plate thickness
distribution were successfully created, there are several disadvantages to using a flat plate
profile compared to a profile with rounded leading and trailing edges. Flow separation caused
by the blunt leading edge will lead to the development of a boundary layer that is thicker
and more turbulent. The flow separation in this area will also negatively affect the stall
margin of the vane. The blunt trailing edge of the vane will also create a thicker vane wake
29
than would be present with a more streamlined profile. All of these factors will contribute
to increased total pressure loss through the cascade and thus StreamVane screen.
By using a different manufacturing method, or by increasing the total size of the Stream-
Vane screen, a thickness distribution with rounded leading and trailing edges could be used
and alleviate these issues. However, the flat plate profile is adequate for the initial method
validation experiments presented in Chapter 5.
3.2.4 Add structural supports
Along with guide vanes to turn the flow in the proper direction, structural supports are
added to interconnect the vane lines and increase the rigidity of the output swirl screen. The
geometry for these supports are calculated in a similar manner as the geometry used in the
turning vanes except in this case the original vector field is seeded and integrated at a single
location per structural line. This will form lines similar to the red lines in Figure 3.1. Along
these lines, vane cross sections with zero turning are placed.
For the experiments presented in Chapter 5, no attempt was made to quantify the
structural integrity of a screen prior to testing. Structural supports were positioned in
locations that seemed logical to hold vanes in place and avoid long sections of vanes without
support. Although none of the screens tested suffered mechanical failure, structural supports
were shown to affect a screens ability to duplicate a design swirl profile. Future research
should include structural modeling to position these supports in locations only where they
are needed. Also, further experiments should be performed to more completely study the
impact of structural supports on screen performance.
3.2.5 Export geometry to a CAD package for creation of solid bodies
The vane profiles and vane lines are then exported to a CAD package for solid body creation,
flanging, and manufacture. Using the NX Open framework, an automation script is applied
to the geometry to automate the conversion of these profiles into solid bodies by sweeping
the vane profiles along their corresponding vane lines. In NX, several options are available
30
when choosing how to create the solid body in between specified vane section curves. For
all the screens made for the present research, a relatively high number of sections were used,
and a linear interpolation scheme between sections was chosen. These solid vane lines where
then joined with the support structure and flanging was added as needed. A CAD model of
a completed screen designed to recreate a generic twin vortex pattern is shown in Figure 3.8.
Notice in the figure the support structures that follow similar paths to the red lines shown
in Figure 3.1.
Figure 3.8: CAD model of solid geometry formed from vane lines and vane profiles. In thisparticular model, flanging has been added.
3.2.6 Manufacture the geometry using an additive manufacturing method
Finally, this solid geometry is submitted to be created using an additive manufacturing
technique. For the experiments presented in Chapter 5, the Fused Filament Fabrication, or
FFF, technique was used. FFF can be used to quickly and accurately make geometrically
intricate parts, such as those produced by the StreamVane Method.
31
The core principle behind the FFF process is that a three-dimensional part can be
approximated by a series of two dimensional layers or slices. These slices can then be built,
one on top of the other, to form the desired shape. To avoid the problem of overhanging
geometry, sacrificial supporting material is used during manufacturing to hold the slices in
place. One of the main advantages to the FFF process is that it is entirely digital. Three
dimensional geometry is read by the machine software directly from a file generated by the
Computer Aided Design package. This allows for a greater level of part complexity, shorter
manufacturing times, and reduced manufacturing limitations compared to traditional non
digital manufacturing processes.
The FFF process is shown in detail in Figure 3.9. Figure 3.9a illustrates the build
process which consists of an articulating print head along with a movable part table. Two
spools supply a constant stream of thermoplastic and support material to the print head
where both build material and support material are liquefied and extruded through small
nozzles. In the figure, the build material is shown in blue while the support material is shown
in green. By moving the print head, the machine can lay down a 2D slice of thermoplastic
and support material. Once a slice is created, the build platform lowers and the process is
repeated to create the next layer. Once the part is finished, the support material is removed,
leaving only the desired geometry as illustrated for this example in Figure 3.9b.
For the experiments presented in Chapter 5, a Fortus 250mc FFF machine owned by
the Virginia Tech Mechanical Engineering department was used. This machine is capable of
creating slices 0.007-inch thick and produces parts to an accuracy within ±0.0095-inch in a
build volume of 10-by-10-by-12-inch [27]. The machine uses the thermoplastic ABSplus-P430
which has a tensile strength of 5300 psi and a tensile modulus of 330,000 psi [28].
Figure 3.10 shows a swirl screen designed to produce a twin vortex swirl distortion
profile after it has been printed in ABS plastic using the FFF technique.
Appendix A contains the MATLAB source code for implementing the StreamVane De-
sign Method.
32
(a) schematic of FFF build process (b) part without supporting material
Figure 3.9: Overview of FFF process.
33
Figure 3.10: Image of twin vortex screen printed in ABS plastic.
34
Chapter 4
Experimental Setup
In order to validate the StreamVane design method presented in the previous chapter, several
swirl generating screens were created using different swirl patterns. Once the screens were
made, they were tested in a low-speed wind tunnel that is part of the Virginia Tech Turbo-
machinery and Propulsion Research Laboratory. This chapter will explain the experimental
setup along with the instrumentation used for the experimental results which are presented
in Chapter 5.
4.1 Low-speed tunnel overview
A CAD model of the low-speed tunnel used for testing is illustrated in Figure 4.1. It consists
of a large blower followed by a settling chamber, flow straightening screens, and a contraction
to a 12-by-12-inch square section. A 6-inch diameter test section was suspended into this
section. The normal clean flow without any screens or blockages through this 6-inch section
is shown in Figure 4.2. Notice that in Figure 4.2b that the flow enters the test section with
negligable swirl.
35
Figure 4.1: CAD model of low speed test tunnel.
0 0.5 1 1.5 2 2.5 334
35
36
37
38
39
40
41
r (in)
velo
city
(m
/s)
(a) flow velocity
0 0.5 1 1.5 2 2.5−3
−2
−1
0
1
2
3
r (in)
θ (d
eg)
(b) swirl angle
Figure 4.2: Flow velocity and swirl present in tunnel without any screen or blockage.
4.2 Rotator and traverse system
The test section consisted of a 5-foot section of 6-inch diameter PVC pipe. This pipe was split
into two sections and held by a T-slot extruded aluminum frame. Between the two sections
of PVC pipe, a screen holder was placed. The holder was made with an external gear so that
the screen could be rotated to any desired angle by a stepper motor. Downstream of the
screen was a 10-inch linear traverse system also controlled by a stepper motor. Combining
the screen rotator along with the traverse system allows the positioning of a probe in any two-
dimensional location in a measurement plane. Using the flexibility of the T-slot framing,
the linear traverse could be moved to any position downstream of the screen. Figure 4.3
36
shows an overview of this setup and Figure 4.4 shows detailed views of both the rotator and
traverse.
Figure 4.3: Detail image of traverse system used in the low-speed tunnel.
(a) rotator (b) linear traverse
Figure 4.4: Rotator and linear traverse systems with attached 5-hole probe
4.2.1 5-hole probe description
In order to measure flow angularity downstream of a swirl-producing screen, a 0.125-inch
diameter United Sensor 5-hole pressure probe was installed into the traverse unit. A detailed
view of the probe head is shown in Figure 4.5. Notice the five different numbered pressure
holes. Hole 1 is aligned to a reference line with the other holes positioned on all sides of
37
Figure 4.5: Detailed view of 5-hole pressure probe head
this center hole. The idea behind the five-hole probe is that pressure differences between
ports 2 and 3 will be primarily dependent on the incoming flow yaw angle, marked as β in
the figure, and the pressure difference between ports 4 and 5 will be primarily dependent on
the incoming flow pitch angle, shown as α. By measuring the five pressures and comparing
them, one can solve for the flow angularity. The measurements are not independent of each
other, however, so a two-way calibration was performed.
4.2.2 5-hole probe calibration
The non-nulling calibration method described by Treaster and Yocum was used to calibrate
the 5-hole pressure probe [29]. This method involves exposing the probe to a set of flows
with known yaw and pitch angles and then calculating a series of pressure coefficients at
each yaw and pitch combination. The equations for these pressure coefficients are found in
Equation 4.1.
Cpyaw = (P2 − P3)/(P1 − P ) (4.1a)
Cppitch = (P4 − P5)/(P1 − P ) (4.1b)
38
P = (P2 + P3 + P4 + P5)/4; (4.1c)
Once the value of these pressure coefficients at each yaw and pitch angle have been calcu-
lated, an interpolation scheme can be used to find values of these pressure coefficients at yaw
and pitch angles not explicitly tested in the calibration. Following the recommendation of
Treaster and Yocum, a spline interpolation scheme was used; in particular, the biharmonic
spline interpolation scheme used in MATLAB’s curve fitting toolbox. Figure 4.6 shows a
contour plot of yaw angle with respect to Cpyaw and Cppitch obtained via the calibration.
The white x’s in the image show actual calibration points. Notice in the image the relative
Cpyaw
Cp pi
tch
−6 −4 −2 0 2 4 6 8
−2
−1.5
−1
−0.5
0
0.5
1
1.5
−40
−30
−20
−10
0
10
20
30
40
Figure 4.6: Contours of yaw angle for the different combinations of Cpyaw and Cppitch usedin the calibration. The white x’s in the figure show calibration locations.
scales of the input Cpyaw and Cppitch values. For the same change in angle, the change in
Cpyaw is much greater than the change in Cppitch. This is consistent with the geometry of
the probe, which has the yaw ports spaced further apart and not as obscured by the probe
geometry. This makes the probe less sensitive to changes in pitch angle than it is in yaw
39
angle. For our application, the main comparison metric will be swirl angle, which is identical
to yaw angle when the probe is plunged radially.
The calibration was carried out in the low-speed wind tunnel at the Virginia Tech Tur-
bomachinery and Propulsion Research Laboratory shown in Figure 4.1. For the calibration,
a 12-by-12-inch lexan section was used in place of the suspended 6-inch circular section
described previously. An image of the calibration setup can be seen in Figure 4.1.
Figure 4.7: Calibration setup in the low-speed wind tunnel. The probe is being held in placeby two rotation stages, one for yaw and the other for pitch adjustment.
In the image, the probe is being held by two rotation stages. The yaw adjustment
stage had an accuracy of 1 while the pitch adjustment stage had an accuracy of 0.01. The
calibration was done from -40 to 40 in 10 increments in both yaw and pitch for a total
of 81 calibration points. The same data acquisition system and pressure transducer setup
described in Section 4.3 was used. After the calibration data was taken, it was formulated
into a set of interpolation functions in MATLAB to facilitate their use in post processing
future data taken with the probe.
4.3 Data acquisition
The motion of the traverse systems along with the screen rotation is controlled by a LabView
program that also handles the data collection. During each test, the program begins by
40
measuring the five pressures near the wall of the tunnel opposite the probe entrance. This
is done to avoid the influence of the probe hole on the pressure readings. Since the pressure
ports in the 5-hole probe are not at the bottom of the probe, the probe is unable to interrogate
within 0.25 inches of the wall of the tunnel. After this first set of measurements are taken, the
probe moves radially inward toward the center of the tunnel stopping at certain predefined
increments to take measurements. The Labview program allows for arbitrary collect and
settle times to be chosen by the user. After all the collections are taken for a single radial
plunge, the screen then rotates, the probe returns to the tunnel wall, and the process repeats
until a fully measured profile is obtained.
Varying levels of spacial accuracy were used in the experiments described in Chapter 5,
but a common setting was 72, 5 rotations with 28 one-tenth-inch radial steps on even plunges
and 14 radial steps on odd plunges. This provides for 1,512 total measurement points. This
spatial resolution is displayed in 4.8. In the figure, the black x’s mark measurement locations
and the solid black line marks the relative location of the tunnel wall. Factory calibrated
Dwyer 616-3 10-inch water column pressure transducers was used in all experiments.
4.4 Experimental uncertainty
The calculation of measurement uncertainty associated with 5-hole probe measurements is
very involved due to the complicated nature of the equations as well as the interpolation
scheme used. Paul et al. calculated the measurement uncertainty for several different meth-
ods of 5-hole probe non-nulling calibration along with different interpolation techniques [30].
In their study, they list the procedure developed by Treaster and Yocum as having a mea-
surement uncertainty of ±0.332 when using a spline interpolation scheme which is what was
used in the present calibration.
According to Paul et al. this uncertainty arises from the computational error associated
with both the calibration scheme as well as the spline interpolation but it does not include
uncertainty from other sources of error such as the uncertainty inherent to the pressure
41
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
Figure 4.8: Spatial resolution using rotator and traverse system. In this image, the black x’smark measurement locations and the solid black line marks the tunnel wall.
transducers used, or the measurement uncertainty when measuring the known angles for the
probe calibration.
The calibration was carried out using known angles measured to an uncertainty of±0.5.
The pressure transducers used have a measurement uncertainty of ±0.25% which, using the
statistical method used by Paul et al., translates to an uncertainty of approximately ±0.1 of
swirl angle. Combining these sources of uncertainty, there is a total measurement uncertainty
in swirl angle of ±0.932. This is the measurement uncertainty that will be reported in the
swirl angle plots in Chapter 5.
4.5 Inherent problems with experimental setup
Although the aforementioned experimental setup is versatile and has many advantages, there
are some inherent weaknesses in the experimental setup that should be noted.
42
4.5.1 Vane deformation
The FFF technique discussed in detail in Section 3.2.6 was chosen for the included exper-
iments as it provided a relatively straightforward way to manufacture StreamVane screens
for low speed experimentation. One main disadvantage with the FFF technique is that it
uses ABS plastic as opposed to a stiffer, metal build material. The use of ABS plastic along
with the relatively thin vane thickness chosen produced vanes that have the potential to be
deformed when under load in the wind tunnel. This will have the effect of straightening the
vanes and changing vane performance, especially in areas with high turning and large vane
chords.
4.5.2 Profile mixing
Even though the interrogation plane is adjustable, it is not possible to measure directly
downstream of a swirl screen as the flow near the screen will be dominated by individual
vane wakes. It is desirable to measure the swirl profile after individual wakes have diffused.
As these vane wakes are diffusing however, the created vortices are also convecting and
attenuating. It is beyond the scope of present research to attempt to predict how a swirl
profile will change as it convects downstream from the screen plane.
In one of the experiments in Chapter 5, numerical simulation data is available down-
stream of the screen plane. In this cases, the experimental data will be compared to the
corresponding plane taken from the numerical simulation. In the experiments where down-
stream mixing is not included, the experimental data will be compared directly to the velocity
vector field used to create the screen. This neglects the effects of downstream profile mixing
and will contribute to large differences between anticipated and experimentally measured
swirl profiles. Because of the highly dynamic nature of swirling flow, it is recommended that
when possible all profiles used to make StreamVane screens include downstream mixing to
the desired measurement plane.
43
4.5.3 Validity of numerical results on which screens are based
One of the main advantages of the StreamVane Method is the ability to create a swirl
screen directly from a desired vector field. This vector field usually comes from a numerical
simulation of a purposed engine/inlet system. The advantage to this approach is that it will
allow engine and airframe designers to test the effects of a particular inlet concept on fan
operability and performance.
The underlying assumption in these tests is that the numerical results used to generate
the profile for use by the StreamVane method are valid, physical results. If the CFD results
contain an unrealistic swirl profile the screen will then be created with vanes designed to
duplicate this unrealistic profile. This will cause the profile downstream of the screen at the
measurement plane to be very different from the anticipated swirl pattern.
44
Chapter 5
Results
Using the experimental apparatus discussed in Chapter 4, several swirl distortion genera-
tion screens of varying complexity were tested in order to evaluate the effectiveness of the
StreamVane Design Method. The tested screens included two generic patterns, bulk and
twin swirl, as well as two patterns from simulations of real engine airframe combinations.
Since the present method hinges on the ability to recreate a given velocity vector field, a
method for comparing design and experimental vector fields was established prior to testing.
5.1 Comparison metric
Following the advice of a proposed industry standard for evaluating swirl distortion, swirl
angle will be used as the primary means of comparing reference and experimental swirl
profiles [7]. Swirl angle, θ, is formulated using Equation 5.1 with the terms in the equation
being defined in Figure 5.1.
θ = tan−1
(
Uθ
Ux
)
(5.1)
In essence, swirl angle is the angle that the tangential component of velocity, Uθ, makes
with the axial component of velocity, Ux, when the velocity has been expressed in a cylindrical
coordinate system. Since swirl angle is the angle of deviation from axial in the direction of
fan motion only, it will be highly correlated to fan performance.
45
Figure 5.1: Description of variables used in Equation 5.1, the calculation of swirl angle.
The five-hole probe used is capable of directly measuring both swirl and radial velocity
angles. Due to the probe geometry, it is much more sensitive to swirl angle than it is to
radial angle. While the radial angle will be used in construction of velocity vector plots,
it will not be used in the detailed swirl angle plots which are the primary means of profile
comparison.
In order to distill the differences present in two profiles of swirl angle into a single value,
the root mean square error, RMSE, was used calculated for each set of experimental results.
RMSE is defined in Equation 5.2.
RMSE =
√
√
√
√
1
N
N∑
n=1
(
θexperimentaln − θdesignn
)2
(5.2)
In this equation, θ represents the design or experimental swirl angle with θn representing a
measurement of swirl angle at the nth location with a total of N comparison locations.
5.2 Bulk swirl
5.2.1 Profile description
In order to evaluate the effectiveness of the vane correlations presented in section 3.2.3 with-
out introducing the complexity of vane to vane variation in turning, a bulk swirl-generating
screen was created. The profile chosen was a forced vortex, or solid body vortex, with linear
variation in swirl angle from 0 at the center of the profile to 18 near the outer edge. Figure
46
5.2a shows design velocity vectors before the application of the StreamVane Method and
Figure 5.2b shows radial variation in swirl angle for the given profile.
−1 −0.5 0 0.5 1−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
x
y
(a) velocity vectors
0 0.2 0.4 0.6 0.8 10
2
4
6
8
10
12
14
16
18
20
r
θ (d
eg)
(b) radial variation in swirl angle
Figure 5.2: Bulk swirl profile velocity vectors and radial variation in swirl angle.
5.2.2 Screen description
Using the methodology discussed in Chapter 3, a screen was made from the bulk swirl profile.
Figure 5.3a shows velocity vectors from the profile along with lines indicating vane locations
(red) along with locations of structural supports (green). Figure 5.3b shows an image of the
bulk swirl screen printed using the fused deposition modeling technique.
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
y (in
)
x (in)
(a) vane lines (red) and structural lines (green) (b) printed screen
Figure 5.3: Vane locations laid over the bulk swirl velocity vector field and an image of thefinal printed bulk swirl screen.
47
5.2.3 Results and discussion
Using the low-speed tunnel, rotating traverse system, and five-hole probe, the swirl angle
profile was measured one diameter downstream of the screen. This distance was chosen to
allow the individual wakes from the screen to attenuate and combine. For the experiment,
three plunges separated by 5 each were made consisting of 28 radial steps at one-tenth of
an inch. The results from these three plunges were averaged to obtain the data in Figure
5.4, which presents radial variation in swirl angle from the design as well as the experiment.
0 0.5 1 1.5 2 2.5
0
2
4
6
8
10
12
14
16
r (in)
θ (d
eg)
ExperimentDesign
Figure 5.4: Radial variation in swirl angle taken one diameter downstream of the bulk swirlscreen.
As can be seen in the figure, in general, the experimental results show good agreement
with the reference swirl angle profile. In the area between r = 0 and r ≈ 0.6 inches the
experimental profile shows a marked negative deviation from the design swirl angle. As
is illustrated in Figure 5.3, this region of the screen did not include vanes. This accounts
for the decreased swirl measured in that area. That there was swirl measured behind this
region of the screen is indicative of the profile mixing that will occur between the screen
48
and measurement planes. Also near the structural support located at r = 2 there is a local
reduction in swirl angle as well as near the wall where viscous boundary layer effects will
be present. Using Equation 5.2, the RMSE for the bulk swirl screen was calculated to be
0.73.
The results of the bulk swirl screen show that the vane correlations are able to accurately
generate vane geometry to accomplish a desired degree of turning. The unique factor with
the bulk swirl screen is the absence of vane-to-vane variation in output turning. For the
StreamVane Design Method to be useful for recreating a swirl angle profile from a real
engine/airframe system, it must be able to recreate profiles which are much more complicated
than the bulk swirl case. These profiles will inevitably require a screen with vane-to-vane
variation.
5.3 Generic twin swirl
One of the underlying assumptions of the StreamVane Design Method is that the flow around
each vane in a row of dissimilar vanes will be close to what it would be if the vane were in a
row of vanes like itself. In order to validate this assumption, as well as provide some insight
into the acceptable level of vane to vane variation, a test profile was chosen that incorporated
vane-to-vane variation in output turning. To this end, a counter-rotating twin swirl pattern
was chosen. Such a profile requires rows of dissimilar vanes, and also is similar to real swirl
profiles present in certain engine/airframe combinations.
5.3.1 Profile description
The equations for the velocity vector field for a generic twin swirl pattern are defined in
Equations 5.3 through 5.5. These equations are similar to the equations for a single Lamb-
Oseen vortex and come from analytical solutions to the Navier-Stokes equations and were
adapted from a derivation by Brandt [31].
Ω0 =Γ0
πa20(5.3)
49
u(x, y) =1
2
(
a20Ω0,1(y − y1)
(x− x1)2 + (y − y1)2
)
(
1− e−((x−x1)2+(y−y1)2)/a20
)
−1
2
(
a20Ω0,2(y − y2)
(x− x2)2 + (y − y2)2
)
(
1− e−((x−x2)2+(y−y2)2)/a20
)
(5.4)
v(x, y) =1
2
(
a20Ω0,1(x− x1)
(x− x1)2 + (y − y1)2
)
(
1− e−((x−x1)2+(y−y1)2)/a20
)
−1
2
(
a20Ω0,2(x− x2)
(x− x2)2 + (y − y2)2
)
(
1− e−((x−x2)2+(y−y2)2)/a20
)
(5.5)
In order to complete the equations, the values found in Table 5.1 were used.
Term Value
a0 0.10Γ0 1x1 −1.25y1 0x2 1.25y2 0
Table 5.1: Parameters used in the creation of the generic twin vortex pattern.
These parameters, along with a uniform axial component of velocity, were chosen to
create an equally spaced vortex pattern with a maximum swirl angle of 16. The resulting
velocity vector field as well as contours of swirl angle are shown in Figure 5.5. The structure
of this vortex pair is very similar to a pair of counterrotating wing-tip vortices as studied
experimentally by Devenport [32]
5.3.2 Screen description
Using the StreamVane Design Method, four screens using the twin vortex pattern were
designed with different levels of vane-to-vane variation present in each. This variation was
controlled using the variable seeding approach as discussed in Section 3.2.2. The value of
prescribed ǫ, resulting ǫ′, and the total number of vanes for each screen is given in Table 5.2.
50
−3 −2 −1 0 1 2 3
−3
−2
−1
0
1
2
3
x (in)
y (in
)
(a) velocity vectors
x (in)
y (in
)
−3 −2 −1 0 1 2 3
−3
−2
−1
0
1
2
3
−15
−10
−5
0
5
10
15
(b) contours of swirl angle
Figure 5.5: Velocity vectors and swirl angle contours for generic twin swirl pattern.
Vane spacing ǫ Effective vane spacing ǫ′ Total number of vanes
2 1.87 193 2.67 154 3.27 135 4.36 11
Table 5.2: Description of different screens designed to test the effect of vane-to-vane vari-ability on the reproduction of a generic twin swirl pattern.
Figure 5.6 shows the vane seeding pattern used to create the ǫ = 3 screen. In the figure,
the red circle represents the initial point for the seed line, shown in red. Once this line was
created, vane seeds were placed along it at intervals corresponding to the desired level of ǫ.
The resulting vane lines are shown in blue. Along with these lines, additional seeds were
added to create vanes on the right side of the profile. Structural supports, shown in green,
were then added around each vortex core as well as vertically through the entire profile to
hold the vanes in place.
This same seeding pattern was used for the other screens except ǫ, and thus the total
number of vanes, was varied for each screen. This is illustrated in Figure 5.7. In each of
the figures, the red line indicates the prescribed output turning along the seed line shown
in Figure 5.6. In each case, vane seeds are placed at the extrema indicated by green circles,
51
−4 −3 −2 −1 0 1 2 3 4
−3
−2
−1
0
1
2
3
x (in)
y (in
)
Figure 5.6: Seed line (red), vane seeds (blue circles), vane lines(blue), and structural supportsfor the ǫ = 3 case.
as well as elsewhere in the profile depicted as blue circles. Notice that as ǫ is increased, the
number of seed points between extrema decreases; this is indicative of the higher allowed
vane-to-vane variation in output turning.
Solid models of the four screens were created; Figure 5.8 shows final CAD images of the
screens including support structures as well as flanging.
52
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 12
4
6
8
10
12
14
16
Tur
ning
Ang
le (
deg)
Distance Along Seed Line
Seed LineVane Seed LocationsExtrema
(a) ǫ = 2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 12
4
6
8
10
12
14
16
Tur
ning
Ang
le (
deg)
Distance Along Seed Line
Seed LineVane Seed LocationsExtrema
(b) ǫ = 3
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 12
4
6
8
10
12
14
16
Tur
ning
Ang
le (
deg)
Distance Along Seed Line
Seed LineVane Seed LocationsExtrema
(c) ǫ = 4
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 12
4
6
8
10
12
14
16
Tur
ning
Ang
le (
deg)
Distance Along Seed Line
Seed LineVane Seed LocationsExtrema
(d) ǫ = 5
Figure 5.7: Spacing of vane seeds along the seed line shown in figure 5.6 for the four screenstested.
53
(a) ǫ = 2 (b) ǫ = 3
(c) ǫ = 4 (d) ǫ = 5
Figure 5.8: CAD images of screens designed to create a counter-rotating twin swirl patterneach with a different level of allowed vane-to-vane variation.
54
5.3.3 Results and discussion
After these screens were printed using the FFF technique in ABS plastic, they were tested
in the low-speed wind tunnel. Using the rotator and traverse system, the flow one diameter
downstream of each of the screens described in Table 5.2 was measured. For these studies,
72 radial plunges were made in 5 increments. Each plunge consisted of either 28 steps of
one-tenth of an inch for even plunges or 14 steps of one-tenth of an inch for odd numbered
plunges. This was done to reduce experimental run time while still maintaining a high level
of spatial accuracy.
The results for ǫ = 2, ǫ = 3, ǫ = 4, and ǫ = 5 are presented in Figures 5.9, 5.10, 5.11,
and 5.12 respectively. Each of these figures presents the design and experimental velocity
and swirl profiles. In order to provide an overall assessment of profile match, the RMSE
was calculated for each case using Equation 5.2. These results are presented in Table 5.3.
Vane spacing ǫ Effective vane spacing ǫ′ Total number of vanes RMSE2 1.87 19 1.69
3 2.67 15 1.71
4 3.27 13 1.65
5 4.36 11 1.51
Table 5.3: Description of twin vortex screens.
Due to the difficulty of knowing the relative position of the screen and probe during
testing, in the calculation of RMSE, each experimental profile was rotated and moved
vertically and horizontally relative to the design profile to find a minimum value of RMSE.
These minimum values are presented in Table 5.3.
55
−3 −2 −1 0 1 2 3
−3
−2
−1
0
1
2
3
x (in)
y (in
)
(a) design vector field
−2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 2.5
−2.5
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
2.5
x (in)
y (in
)
(b) experimental vector field
x (in)
y (in
)
−3 −2 −1 0 1 2 3
−3
−2
−1
0
1
2
3
−15
−10
−5
0
5
10
15
(c) contours of design swirl angle
x (in)
y (in
)
−2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 2.5
−2.5
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
2.5
−15
−10
−5
0
5
10
15
(d) contours of experimental swirl angle
Figure 5.9: Results for ǫ = 2,ǫ′ = 1.87
56
−3 −2 −1 0 1 2 3
−3
−2
−1
0
1
2
3
x (in)
y (in
)
(a) design vector field
−2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 2.5
−2.5
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
2.5
x (in)
y (in
)
(b) experimental vector field
x (in)
y (in
)
−3 −2 −1 0 1 2 3
−3
−2
−1
0
1
2
3
−15
−10
−5
0
5
10
15
(c) contours of design swirl angle
x (in)
y (in
)
−2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 2.5
−2.5
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
2.5
−15
−10
−5
0
5
10
15
(d) contours of experimental swirl angle
Figure 5.10: Results for ǫ = 3,ǫ′ = 2.67
57
−3 −2 −1 0 1 2 3
−3
−2
−1
0
1
2
3
x (in)
y (in
)
(a) design vector field
−2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 2.5
−2.5
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
2.5
x (in)
y (in
)
(b) experimental vector field
x (in)
y (in
)
−3 −2 −1 0 1 2 3
−3
−2
−1
0
1
2
3
−15
−10
−5
0
5
10
15
(c) contours of design swirl angle
x (in)
y (in
)
−2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 2.5
−2.5
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
2.5
−15
−10
−5
0
5
10
15
(d) contours of experimental swirl angle
Figure 5.11: Results for ǫ = 4,ǫ′ = 3.27
58
−3 −2 −1 0 1 2 3
−3
−2
−1
0
1
2
3
x (in)
y (in
)
(a) design vector field
−2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 2.5
−2.5
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
2.5
x (in)
y (in
)
(b) experimental vector field
x (in)
y (in
)
−3 −2 −1 0 1 2 3
−3
−2
−1
0
1
2
3
−15
−10
−5
0
5
10
15
(c) contours of design swirl angle
x (in)
y (in
)
−2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 2.5
−2.5
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
2.5
−15
−10
−5
0
5
10
15
(d) contours of experimental swirl angle
Figure 5.12: Results for ǫ = 5,ǫ′ = 4.36
59
In each of the four figures presenting the results of the generic twin vortex study, a twin
vortex pattern similar to what was prescribed in the design vector field was created. This is
evident in both the velocity vector fields as well as the contours of swirl angle. In each case,
however, the experimental vortex pattern presents itself as having moved below the y = 0
line where the vortex cores are centered in the design profile. This type of vortex motion is
to be anticipated for a counter rotating twin vortex pair according to the Biot-Savart law
[33]. Using this law, the velocity induced by a vortex line is given by Equation 5.6.
v =Γ
2πr(5.6)
In this equation v is the induced velocity at some point away from the vortex line, Γ is
the circulation, and r is the distance from the vortex line. By using the right hand rule, it
can be shown that each vortex will induce a velocity on the other. Because they each have
opposite circulations, this will have the effect of causing both vortices to move downward.
Along with this effect, there are several other possible explanations for deviations be-
tween the design and the experimental results. The design vector field was obtained from
an exact solution to the Navier-Stokes equations, which used certain approximations such
as incompressibility and wholly laminar flow. Also, the vector field was derived for a vortex
pair in an open fluid whereas the present experiments were done in an area confined by
tunnel walls. This will cause differences in the flow pattern. Such differences are clearly seen
in the presence of secondary recirculation near the top of each of the presented vector fields.
The StreamVane Method also makes certain assumptions to simplify the design of a swirl-
generating screen such as linearity of turning angle between vanes. Along with this, there
are regions in each screen without vanes as well as structural supports. Even with all these
limitations the StreamVane Method is able to create a twin vortex pair in approximately the
correct location with roughly the correct swirl angle magnitude.
60
In order to compare the examine the effect of varying ǫ, RMSE was calculated for each
screen. These results are presented in Table 5.3. Notice that there is no apparent trend in
RMSE, in fact, all values presented are within the range of experimental uncertainty of the
five-hole probe.
SAE AIR-5686, a proposed industry standard for quantifying swirl distortion, recom-
mends examining swirl angle taken at different radii in the flow field [7]. Doing this allows
for a clearer comparison between multiple swirl profiles. This was done for each screen using
three representative radii; the results are presented in Figure 5.13.
For each of the radii examined, the different levels of ǫ do not produce results that are
discernible from each other or follow any apparent trend. In order make these figures more
readable, the experimental uncertainty was not plotted. As discussed in Section 4.4, the
uncertainty of the measurements of swirl angle is ±0.932.
The data suggest that the underlying assumption of the StreamVane Design Method
is valid. In a cascade of dissimilar vanes, each vane will produce local turning like what it
would in a cascade of vanes like itself. The data also suggest that this is a robust assumption:
relatively large values of ǫ can be used without any noticeable degradation in vane turning.
The choice of ǫ also influences other factors beyond vane turning ability. In choosing
ǫ, the screen designer is, in effect, choosing how to linearize the velocity vector field. For
example, Figure 5.14 shows vane lines for ǫ = 2 and ǫ = 5 with corresponding created
velocity vectors in blue and the design vector field plotted in gray.
Using a greater ǫ has the effect of relying on fewer vanes to recreate the same vector
field. In both screens, there are areas between vanes where the flow will be uncontrolled. In
the ǫ = 5 case these areas are much larger than they are in the ǫ = 2 case which will result
in less fine control of flow angle in these areas. More experiments need to be preformed that
further examine the effect of ǫ on screen performance and spatial fidelity, especially using
more complicated swirl profiles.
61
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
r=0.5r=1.25r=2.0
(a) location of radii
0 45 90 135 180 225 270 315 360
−15
−10
−5
0
5
10
15
angular position (deg)
θ (d
eg)
Designε=2ε=3ε=4ε=5
(b) r = 0.5
0 45 90 135 180 225 270 315 360
−15
−10
−5
0
5
10
15
angular position (deg)
θ (d
eg)
Designε=2ε=3ε=4ε=5
(c) r = 1.25
0 45 90 135 180 225 270 315 360
−15
−10
−5
0
5
10
15
angular position (deg)
θ (d
eg)
Designε=2ε=3ε=4ε=5
(d) r = 2.0
Figure 5.13: Profiles of swirl angle taken at different radii. Figure 5.13a shows the loca-tion of the three radii tested. In these figures, each radii is unwrapped and plotted in thecounterclockwise direction starting at the locations marked by the circles shown in Figure5.13a.
62
−4 −3 −2 −1 0 1 2 3 4
−3
−2
−1
0
1
2
3
x (in)
y (in
)
(a) ǫ = 2
−4 −3 −2 −1 0 1 2 3 4
−3
−2
−1
0
1
2
3
x (in)
y (in
)
(b) ǫ = 5
Figure 5.14: Vane lines with velocity vectors created by vanes shown in blue and designvelocity vectors in gray
63
5.4 Representative profile for serpentine inlet applications
Engines embedded into the body of an airframe are used in military applications in order
to hide the face of the fan from enemy radar. One major disadvantage of embedded inlets
is that they deliver air to the engine by way of a serpentine inlet duct. These ducts, as
discussed previously with the Tornado fighter example, can lead to large amounts of swirl
distortion, which in turn can cause engine operability and performance issues. This makes
the study of the flow through serpentine ducts and the effect of this flow on fan performance
important to designing modern military aircraft.
In cooperation with the Virginia Tech Turbomachinery and Propulsion Research Labora-
tory, the Air Force Research Laboratory (AFRL) has performed numerical and experimental
investigations on the flow through a modern serpentine inlet. An overview of the numerical
study was published by Sanders and List [34]. In their study, the authors used CFD to com-
pute the flow through the inlet, an overview of which is shown in Figure 5.15. In this figure,
Figure 5.15: Serpentine duct with streamlines colored by Mach number
streamlines colored by Mach number are shown. Notice near the top of the circular portion
of the inlet a distinct pair of vortices which have formed due to the serpentine shape. Figure
64
5.16 shows velocity vectors along with contours of swirl angle taken from the simulation at
the entrance to the circular portion of the duct. Notice in both Figure 5.16a and Figure
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
(a) velocity vectors
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)y
(in)
−30
−20
−10
0
10
20
30
(b) contours of swirl angle
Figure 5.16: Velocity vectors and contours of swirl angle present in the serpentine inletdistortion profile.
5.16b the distinct counterrotating vortex pair near the top of the profile. The details of
the computed flow through the duct were obtained from AFRL and used to create a swirl
distortion screen designed to reproduce the swirl profile made by the serpentine inlet. This
section will present the details of the screen design along with experimental results of the
swirl profile produced by the screen.
5.4.1 Screen description
Using the StreamVane Method, a seed line and corresponding vane lines were created as
illistrated in Figure 5.17. Beginning at an initial location indicated by the red circle in
5.17a, a seed line (shown in red) was created. Using an ǫ = 3, ǫ′ = 2.66, seeds were placed
along this line as indicated by the blue circles shown in both Figure 5.17a and Figure 5.17b.
In this particular case, extra vane seeds were also added manually between the second and
third extrema in order to maintain consistent vane spacing. The resulting vane lines are
shown in blue in Figure 5.17a.
65
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
(a) seed line (red) and resulting vane lines (blue)
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 15
10
15
20
25
30
Tur
ning
Ang
le (
deg)
Distance Along Seed Line
Seed LineVane Seed LocationsExtrema
(b) turning angle along seed line
Figure 5.17: Seed line and vane lines for serpentine inlet profile.
Taking advantage of symmetry, seed points from this seed line were mirrored about the
x = 0 axis to add the additional seed points and vane lines needed to complete the screen.
The final set of vane lines along with structural supports is shown in Figure 5.18. Figure
5.19 shows a CAD image of the final screen with flanging added along with an image of the
screen after it had been printed in ABS plastic.
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
Figure 5.18: Vane lines (blue) and structural supports (green) for serpentine inlet profile.
66
(a) CAD model (b) printed screen
Figure 5.19: CAD model and final printed screen designed to reproduce the serpentine inletprofile.
As discussed previously, one challenge in comparing experimental results from a swirl
screen to the design vector field used to create the screen is that the swirl profile will develop
and change between the screen plane and the measurement plane. Fortunately in the case of
the serpentine inlet, extra downstream profiles of swirl angle were available from the CFD
results of the flow through the inlet. By comparing the experimental results to a downstream
plane from CFD, some of the error associated with downstream mixing is avoided.
To illustrate the effect of downstream mixing, Figure 5.20 shows how the maximum
swirl angle present in the CFD result changes as the profile develops downstream of the
screen. Moving away from the screen plane, the maximum observed swirl angle decreases
as the profile mixes and diffuses. The CFD results included a plane at +0.46 diameters
downstream of the screen plane. In order to avoid individual vane wakes, the experimental
profile was measured at +1.00 diameters downstream of the screen. When presenting the
results for the serpentine inlet screen, the CFD result taken at +0.46 diameters will be used
as a reference as it most closely matches the experimental measurement location.
67
0 0.1 0.2 0.3 0.4 0.50
5
10
15
20
25
30
35
40
distance downstream of screen (diameters)
θmax
(de
g)
Figure 5.20: CFD computed maximum swirl angle vs. distance downstream of the screenplane for the serpentine inlet.
Figure 5.21 shows velocity vectors from the CFD results at the screen plane as well as
at the reference plane. Notice that the vortex pair expands as well as moves downward as
it develops downstream of the screen plane. Figure 5.22 shows contours of swirl angle at
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
(a) screen plane
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
(b) reference plane (+0.46 diameters)
Figure 5.21: Velocity vectors from CFD results showing the effect of downstream mixing.
the screen plane as well as the reference plane; notice the marked decrease in swirl angle
magnitude between the two profiles.
68
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
−30
−20
−10
0
10
20
30
(a) screen plane
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
−30
−20
−10
0
10
20
30
(b) reference plane (+0.46 diameters)
Figure 5.22: Contours of swirl angle from CFD results showing the effect of downstreammixing.
69
5.4.2 Results and discussion
After the serpentine inlet screen was manufactured, it was tested in the low-speed wind
tunnel. Using the rotator and traverse system, the flow one diameter downstream of the
screen was measured. For this study, 72 radial plunges were made in 5 increments. Each
plunge consisted of either 28 steps of one-tenth of an inch for even plunges or 14 steps of
one-tenth of an inch for odd numbered plunges.
Figure 5.23 shows reference and experimental velocity vectors for the serpentine inlet
screen while Figure 5.24 shows the experimental and reference contours of swirl angle.
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
(a) reference (+0.46 diameters)
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
(b) experiment (+1.00 diameters)
Figure 5.23: Reference and experimental velocity vectors
Notice that in both Figure 5.23 and Figure 5.24 that the general pattern of the desired
swirl profile was matched. The screen was able to create a counterrotating twin vortex
pair in the correct location with roughly the correct magnitude. There are some visible
differences, however, especially when comparing the contours of swirl angle. The reference
profile has areas of high and low swirl angle that are noticeably larger and more pronounced
that those present in the experimental profile. Also, the vortices present in the experimental
results have drifted apart in comparison with the vortices present in the reference profile.
70
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
−15
−10
−5
0
5
10
15
(a) reference (+0.46 diameters)
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
−15
−10
−5
0
5
10
15
(b) experiment (+1.00 diameters)
Figure 5.24: Reference and experimental contours of swirl angle
This is consistent with the continued downstream mixing that would take place between
the reference and measurement planes. Using Equation 5.2, the mean square error for the
serpentine inlet screen was calculated to be 2.56.
In order to compare the details of the swirl angle profiles in the areas of greatest interest,
radii of swirl angle were plotted near the twin vortex pair. These results are presented
in Figure 5.25. Figure 5.25a shows the location of the comparison radii relative to the
experimental velocity vector profile. In this figure, the circular markers and arrows show
the beginning and direction of the plotted radii. These particular radii were chosen in order
to examine the differences in swirl angle along a radii that would intersect the vortex core
locations: Figure 5.25d and then at several other radii adjacent to it. For each radii, the
computed RMSE is also given.
71
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
r=1.40r=1.65r=1.90r=2.15r=2.40
(a) location of radii
0 45 90 135 180 225 270 315 360−15
−10
−5
0
5
10
15
angular position (deg)
θ (d
eg)
ReferenceExperiment
(b) r = 1.40, RMSE = 1.80
0 45 90 135 180 225 270 315 360−15
−10
−5
0
5
10
15
angular position (deg)
θ (d
eg)
ReferenceExperiment
(c) r = 1.65, RMSE = 1.91
0 45 90 135 180 225 270 315 360−15
−10
−5
0
5
10
15
angular position (deg)
θ (d
eg)
ReferenceExperiment
(d) r = 1.90, RMSE = 2.03
0 45 90 135 180 225 270 315 360−15
−10
−5
0
5
10
15
angular position (deg)
θ (d
eg)
ReferenceExperiment
(e) r = 2.15, RMSE = 2.13
0 45 90 135 180 225 270 315 360−15
−10
−5
0
5
10
15
angular position (deg)
θ (d
eg)
ReferenceExperiment
(f) r = 2.40, RMSE = 2.65
Figure 5.25: Swirl angle comparisons between reference and experimental results along sev-eral radii
72
In each of these figures, the experimental results along with the experimental uncertainty
are presented in black. While the screen was able to duplicate the large change in swirl
angle that occurs at the 90 mark in each profile, some of the details in the profile in other
locations were not as accurately reproduced. These differences could be due to many factors,
such as validity of the CFD profile from which the screen was designed, scaling effects, the
location and extent of support structures, vane deformation, the level of allowed vane to vane
variability, the effect of individual vane wakes, or downstream diffusion of the swirl profile
between the screen and measurement planes.
Future screens could be made to test the effect of support structure location, level of ǫ,
as well as other screen design parameters. In the future, AFRL will experimentally measure
the swirling flow through the serpentine inlet and then the validity of the CFD results from
which the present screen was designed can be assessed. It would also be possible to use
experimental velocity vector profiles to create a new screen that could potentially recreate
the profile more accurately.
Even with the differences between the reference profile and the experimental profiles,
the results demonstrate that the StreamVane Design Method is able to produce complicated
swirl distortion profiles directly from a description of the flow in a real inlet system. This
represents a marked advance over other purposed methods of creating swirl distortion for jet
engine research, which are limited to the generation of generic swirl patterns.
73
5.5 Representative profile for HWB applications
Hybrid wing body (HWB) aircraft have been given attention recently as a potential avenue
to pursue in order to increase fuel economy for civilian transport aircraft [35]. An image
from a CAD model of a typical HWB is shown in Figure 5.26. The premise behind an HWB
is that if the wing and body of an aircraft are blended, they can both act as lifting surfaces.
This highly integrated design can decrease the resulting structure, weight, and drag of the
airframe.
Figure 5.26: Typical hybrid wing body aircraft without boundary layer ingestion.
This type of configuration promises large increases in fuel efficiency over traditional tube
and wing designs. In one study performed in cooperation with Boeing, a 27% reduction in
fuel burn per seat mile was achieved using an HWB instead of a traditional configuration
[36]. One problem with this concept, however, is that it has the potential for large amounts
of inlet swirl distortion in the associated propulsion system.
Similar to the delta wing discussed previously, the body of an HWB will produce vortices
that have the potential to be ingested by the engines. In one recent study by Gatlin et al., the
authors measured the surface flows around a scale model of the HWB shown in Figure 5.26.
The authors found evidence of significant vortex formation by the airframe that would lead
to swirl distortion [37]. Along with the potential for swirling flow created by the airframe
itself, some HWB concepts also include boundary layer ingestion.
74
The addition of a boundary layer ingesting inlet has been shown to reduce fuel burn even
further by reenergizing the boundary layer that develops along the length of the airframe.
This adds further complexity to the problem, however, as boundary layer ingesting engines
are usually embedded into the airframe by way of a serpentine duct. These ducts have
been consistently shown to produce swirl distortion which would be combined with the total
pressure distortion that is inherent in an ingested boundary layer. In order for HWBs to
become a realistic choice for future aircraft, the effect of the produced swirl distortion on
fan performance and operability needs to be explored. Using the StreamVane Method, the
designers of HWB aircraft could test the effect of potential airframes and inlets on engine
performance and operability without the cost and time required to perform direct connect
testing.
5.5.1 Profile description
In order to examine in more detail the potential for HWB aircraft, Boeing Research and
Technology has performed many computational studies of the flow produced by an HWB.
This section will present the results from a screen designed to duplicate a swirl profile at the
nacelle inlet in an advanced HWB configuration in simulated flight conditions representative
of a possible extreme case. The profile provides a good test case for the StreamVane Method
as it is much more complicated and extreme than previously tested patterns and should
be representative of the swirl distortion present in a real inlet system. Figure 5.27 shows
velocity vectors and contours of swirl angle from the HWB profile provided by Boeing.
Notice the distinct pair of vortices present on the left hand side of each figure. It should
be noted that although the simulation was of an HWB in flight, it did not include the effects
of a rotating fan. Also, the simulation did not include prediction of the downstream mixing
of the swirl profile that would be useful for comparison. As has already been shown in the
presentation of the results from the serpentine inlet, mixing can account for large changes in
the swirl profile. Also, the CFD results for the HWB profile have not been validated in any
75
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
(a) velocity vectors
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
−50
−40
−30
−20
−10
0
10
20
30
(b) contours of swirl angle
Figure 5.27: Velocity vectors and contours of swirl angle present in the HWB swirl profile.
way and only represent a first step toward understanding the flow around an HWB aircraft.
With this in mind, the experimental results from the HWB screen cannot be expected to
closely match the input profile, but a qualitative match will still provide some evidence of
what the StreamVane Method is capable of.
5.5.2 Screen description
Using the StreamVane Method, seed lines and corresponding vane lines were created from
the HWB profile. Figure 5.28 shows the details from the first of these seed lines. Beginning
at an initial location indicated by the red circle in 5.28a, a seed line (shown in red) was
created. Using an ǫ = 3, ǫ′ = 2.66, seeds were placed along this line as indicated by the
blue circles shown in Figure 5.28a and 5.28b. The resulting vane lines are shown in blue in
Figure 5.28a.
Following a similar procedure, a second seed line was created and used to generate vane
lines. This is illustrated in Figure 5.29. For this seed line a value of ǫ = 10 was used. This
resulted in ǫ′ values of 7.38, 6.77, 8.99, 8.59 for each area between extrema.
Combining the vane lines shown in Figure 5.28a with those shown in Figure 5.29a along
with several structural supports results in the vane lines and support lines as shown in Figure
76
−2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 2.5
−2.5
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
2.5
x (in)
y (in
)
(a) seed line (red) and resulting vane lines (blue)
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 110
12
14
16
18
20
22
24
26
28
30
Tur
ning
Ang
le (
deg)
Distance Along Seed Line
Seed LineVane Seed LocationsExtrema
(b) turning angle along seed line
Figure 5.28: First set of seed line and vane lines for HWB profile.
−2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 2.5
−2.5
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
2.5
x (in)
y (in
)
(a) seed line (red) and resulting vane lines (blue)
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 110
15
20
25
30
35
40
45
50T
urni
ng A
ngle
(de
g)
Distance Along Seed Line
Seed LineVane Seed LocationsExtrema
(b) turning angle along seed line
Figure 5.29: Second set of seed line and vane lines for HWB profile
5.30. In this figure, the green lines represent structural supports while the vane lines are
shown in blue. Figure 5.31 shows a CAD image of the screen after flanging has been added
along with an image of the final manufactured screen.
77
−3 −2 −1 0 1 2 3
−2.5
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
2.5
x (in)
y (in
)
Figure 5.30: Vane lines (blue) and structural supports (green) for HWB profile.
(a) CAD model (b) printed screen
Figure 5.31: CAD model and final printed screen designed to reproduce HWB profile.
78
5.5.3 Results and discussion
After the HWB screen was manufactured, it was tested in the low-speed wind tunnel. Using
the rotator and traverse system, the flow one diameter downstream of the screen was mea-
sured. For this study, 72 radial plunges were made in 5 increments. Each plunge consisted
of either 28 steps of one-tenth of an inch for even plunges or 14 steps of one-tenth of an inch
for odd numbered plunges.
Figure 5.32 shows reference and experimental velocity vectors for the HWB screen while
Figure 5.33 shows the reference and experimental contours of swirl angle. Notice that in
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
(a) reference
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
(b) experiment
Figure 5.32: Velocity vectors
both Figure 5.32 and Figure 5.33 that the general character of the desired swirl profile was
recreated experimentally. The screen was able to create a counterrotating offset twin vortex
pattern in the correct location. There are some visible differences however, especially when
comparing the contours of swirl angle.
Notice that the region of largely negative swirl angle, although present in the exper-
imental results, has a greatly reduced magnitude when compared to the reference profile.
Along with this, the orientation of vortices themselves has shifted, with the region of high
79
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
−50
−40
−30
−20
−10
0
10
20
30
(a) reference
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
−50
−40
−30
−20
−10
0
10
20
30
(b) experiment
Figure 5.33: Contours of swirl angle
swirl angle being rotated clockwise and elongated. In general, the flow in the majority of the
experimental swirl profile has taken on a roughly counterclockwise bulk swirl characteristic
which is not seen with such a wide extent in the reference profile. Using Equation 5.2, the
RMSE for the HWB screen was calculated to be 6.20.
In order to compare the details of the swirl angle profiles in the areas of greatest inter-
est, radii of swirl angle were plotted near the twin vortex pair. These results are presented
in Figure 5.34. Figure 5.34a gives the location of the comparison radii relative to the ex-
perimental velocity vector profile. In this figure, the circular markers and arrows show the
beginning and direction of the plotted radii. These particular locations were chosen in order
to examine the differences in swirl angle along a radii that traverse areas inside both of the
main vortices. For each radii a value of RMSE is also presented as calculated by Equation
5.2.
80
−3 −2 −1 0 1 2 3−3
−2
−1
0
1
2
3
x (in)
y (in
)
r=1.40r=1.70r=2.00r=2.30r=2.60
(a) comparison radii
0 45 90 135 180 225 270 315 360−30
−25
−20
−15
−10
−5
0
5
10
15
20
25
30
35
40
angular position (deg)
θ (d
eg)
ReferenceExperiment
(b) r = 1.40, RMSE = 5.65
0 45 90 135 180 225 270 315 360−30
−25
−20
−15
−10
−5
0
5
10
15
20
25
30
35
40
angular position (deg)
θ (d
eg)
ReferenceExperiment
(c) r = 1.70, RMSE = 6.43
0 45 90 135 180 225 270 315 360−30
−25
−20
−15
−10
−5
0
5
10
15
20
25
30
35
40
angular position (deg)
θ (d
eg)
ReferenceExperiment
(d) r = 2.0, RMSE = 7.97
0 45 90 135 180 225 270 315 360−30
−25
−20
−15
−10
−5
0
5
10
15
20
25
30
35
40
angular position (deg)
θ (d
eg)
ReferenceExperiment
(e) r = 2.30, RMSE = 8.25
0 45 90 135 180 225 270 315 360−30
−25
−20
−15
−10
−5
0
5
10
15
20
25
30
35
40
angular position (deg)
θ (d
eg)
ReferenceExperiment
(f) r = 2.60, RMSE = 9.86
Figure 5.34: Swirl angle comparisons between reference and experimental results along sev-eral radii
81
Notice that in all of the radii plotted, that the general shape of the reference swirl angle
is duplicated by the experimental results. Much of the difference between the reference and
experimental plots of swirl angle can be attributed to the problems inherent in the HWB
profile itself discussed previously as well as downstream mixing of the profile between the
screen and measurement planes and vane deformation. It is interesting to note, however, that
the vanes between the vortices created large values of swirl, up to 35, which corresponds
closely to the design swirl in this area. The large error associated with the outer radii may
be due to tunnel wall effects, as well as closely packed vanes and structural supports in this
region as shown in Figure 5.31.
Even though the profile is not matched perfectly, the results from the HWB screen
demonstrate that the StreamVane Method is able to create very extreme and complicated
profiles that would otherwise not be possible using any other method. In order to create a
screen with higher accuracy, a validated CFD study that included downstream mixing would
be needed. Along with this, several screens could be created that would test the effect of
varying ǫ as well as location and number of structural supports.
82
Chapter 6
Conclusion and Recommendations
Inlet flow distortion is the major contributor to engine/airframe incompatibilities, and ex-
perience has shown that testing for compatibility with respect to total pressure distortion
alone is not sufficient. The effects of swirl distortion on the engine in a particular engine/air-
frame configuration must be accounted for to accurately certify operability and performance.
There has yet to be a published method that allows for the recreation of an arbitrary swirl
profile in a testing environment. The material in this thesis has presented such a method.
Through experimentation, the StreamVane Method has been shown to be capable of
reproducing complicated and extreme swirl profiles from real engine/airframe systems. No
other swirl distortion generation method in the reviewed literature has this capability which is
critical to accurately predicting the fan response due to a particular airframe/engine system.
This makes the StreamVane Design Method a first step toward what could be considered
an ideal swirl distortion generation method. Even with this experimentally demonstrated
advancement, much research still needs to be done on the method in order to scale a Stream-
Vane screen to a size applicable to real jet engine testing.
Critical to this effort will be the development of a method to model a StreamVane screen
structurally. Ideally, this type of analysis could be automated; the same MATLAB function
that generates the script for automatic 3D solid geometry creation could also be modified to
83
generate a script for a Finite Element Analysis package as well. Computing the structural
loading on the vanes in a StreamVane screen would allow for the intelligent placement of
structural supports as well as the ability to certify the structural integrity of the screen to
avoid ingestion.
Along with structural modeling, a StreamVane screen designed for placement in front of
a jet engine operated at high speed would also need a vane model which takes into account
the effects of high speed, compressible flow. In his book, Aungier states that moving beyond
profiles such as the NACA A4K6 camber line to more modern airfoils such as a Controlled
Diffusion Airfoil allows for better performance over a wider range of Mach numbers [24,
§4.8]. Due to the modular nature of the StreamVane method, once a new vane model has
been developed, its implementation to replace the NACA A4K6 based vane model would
be trivial. This would allow for the creation of StreamVane screens which have lower total
pressure loss as well as increased performance in the type of flow that would be present in a
real jet engine test.
The experiments discussed in this thesis were performed in a wind tunnel which forced
air through the StreamVane screen. During a real jet engine test, the flow would instead be
draw through the screen by way of a downstream fan. The upstream effect of this fan on
the performance of a StreamVane screen should also be a major area of research.
The Virginia Tech Turbomachinery and Propulsion Research Laboratory is in a unique
position to study fan screen interaction as its main distortion rig has the ability to vary
the distance between the distortion generating device and the fan. This would allow a
StreamVane screen to be tested with and without fan interaction. Such an experimental
setup has been suggested by Aulehla in his discussion of shortcomings in distortion testing
and the need for a new swirl distortion testing methodology [38]. By using this distortion test
rig, the effect of a fan on screen performance could be quantified and a correction method
could be developed. Because the StreamVane Method allows for the creation of any arbitrary
profile, a screen using a profile corrected for fan screen interaction could be created.
84
More research should also be done to further investigate the effect of allowed vane-to-
vane variability, vane solidity, as well as the impact of structural supports on output swirl
profile. The use of different manufacturing methods such as CNC machining or Direct Metal
Laser Sintering could be also be studied as an alternative to Fused Filament Fabrication for
full sized StreamVane screen manufacture.
The criteria for selecting a manufacturing method should include results from a struc-
tural analysis so that the selection of build material can meet the requirements of the
computed vane stresses and deflections. Along with selecting a manufacturing process for
strength, the manufacturing tolerances should also be considered in order to accurately re-
produce the desired vane cross sections. By choosing a manufacturing method that is able
to create smaller features, more accurate vane cross sections which include rounded leading
and trailing edges could be made which would increase vane performance as well reduce total
pressure loss. Finally, the chosen manufacturing method should be inexpensive and have a
fast enough turn around time to enable rapid design iteration.
Along with flow profiles derived from real engine/airframe systems, the StreamVane
Method can also be used to make generic swirl patterns for fundamental research on the
effect of swirling flow on fan performance. These types of studies would be very useful in
creating correlations for the effect of different types of swirl distortion on engine operability
and performance, as well as the design of a fan that is distortion tolerant.
As a general method to control flow direction, the StreamVane Method could also be
adapted to wide variety of other applications. For example, it could be used to create inlet-
specific, low-loss, inlet guide vanes. In this way, a deswirl screen could be created that would
take as an input the anticipated swirl profile and reshape it to remove areas of flow angle
nonuniformity. Since the screen would be tuned to the inlet/engine system, it could avoid
the large losses associated with traditional inlet guide vanes when they are traditionally used
to straighten swirling flow.
85
In order to fully duplicate the flow profile from a real engine/airframe system, the total
pressure profile must be duplicated at the AIP as well. The StreamVane Method lends
itself to being coupled with a total pressure distortion generating device by placing the
device in front of the StreamVane screen. This flow-conditioning device could take the form
of a traditional wire mesh screen or a more modern, adaptable, total pressure distortion
generator. The latter would allow for adjustments to the total pressure profile in real time
and account for the inevitable total pressure loss associated with the StreamVane screen
itself. A combination total pressure and swirl screen could also be created by changing the
vane model to allow for total pressure loss control by adjusting vane characteristics to create
more losses in the desired regions.
By reproducing profiles of both total pressure as well as swirl distortion, a comparison
could be made between the effects on a fan of simulated and real inlet distortion. This would
add confidence that fan performance and operability for future inlet concepts that include
large amounts of distortion could be quantified while these concepts are still in the initial
design phase.
The StreamVane Design Method makes the replication of swirl profiles specific to a
particular airframe/inlet system possible. Designers of future aircraft will now be able to
test engine response to their designs with respect to swirl distortion without expensive and
time consuming direct-connect testing. This facilitates the study of engine response due to
advanced designs such as serpentine inlet systems or airframe concepts such as hybrid wing
body aircraft.
86
Bibliography
[1] J. Seddon and E.L. Goldsmith. Intake aerodynamics. AIAA, Inc., 1985.
[2] Inlet Total-Pressure-Distortion Considerations for Gas-Turbine Engines AIR1419, 2001.
[3] Gas Turbine Engine Inlet Flow Distortion Guidelines: ARP1420, 2001.
[4] Anthony Ferrar, William Schneck, Justin Bailey, Kevin Hoopes, and Walter O’Brien.Application of Additive Manufacturing to Rapidly Produce High-Resolution Total Pres-sure Distortion Screens. In Aerospace Sciences Meetings. American Institute of Aero-nautics and Astronautics, 2012.
[5] William Schneck, Anthony Ferrar, Justin Bailey, Kevin Hoopes, and Walter O’Brien.Improved Prediction Method for the Design of High-Resolution Total Pressure Distor-tion Screens. In Aerospace Sciences Meetings. American Institute of Aeronautics andAstronautics, 2013.
[6] M. Davis, A. Hale, and D. Beale. An argument for enhancement of the current inlet dis-tortion ground test practice for aircraft gas turbine engines. Journal of turbomachinery,124(2):235–241, 2002.
[7] A Methodology for Assessing Inlet Swirl Distortion: AIR-5686, 2010.
[8] CP Stocks and NC Bissinger. The design and development of the Tornado engineair intake. AGARD Aerodynamics of Power Plant Installation 21 p(SEE N 82-1306504-01), 1981.
[9] RG Hercock and DD Williams. Distortion-induced engine instability; Aerodynamicresponse. AGARD, LS72-Paper, (3), 1974.
[10] JE Flitcroft, J. Dunham, and WA Abbott. Transmission of inlet distortion through afan. Technical report, DTIC Document, 1987.
[11] W. Pazur and L. Fottner. The influence of inlet swirl distortions on the performance ofa jet propulsion two-stage axial compressor. 1991.
[12] N.R. Schmid, D.C. Leinhos, and L. Fottner. Steady performance measurements of aturbofan engine with inlet distortions containing co-and counterrotating swirl from anintake diffuser for hypersonic flight. Journal of turbomachinery, 123(2):379–385, 2001.
87
[13] Yogi Sheoran, Bruce Bouldin, and P Murali Krishnan. Compressor Performance andOperability in Swirl Distortion. Journal of turbomachinery, 134(4), 2012.
[14] Awatef Hamed and Keith Numbers. Inlet Distortion Considerations for High CycleFatigue in Gas Turbine Engines. AIAA Paper, (97-3364), 1997.
[15] KW Lotter and J Jorg. The effect of intake flow disturbances on APU compressorblade high cycle fatigue in the Airbus A300. In Proceedings of the 13th Congress ofICAS/AIAA. Seattle: ICAS-82-4.6, volume 2, 1982.
[16] HP Genssler, W. Meyer, and L. Fottner. Development of intake swirl generators forturbo jet engine testing. Technical report, DTIC Document, 1987.
[17] M. Govardhan and K. Viswanath. Investigations on an axial flow fan stage subjected tocircumferential inlet flow distortion and swirl. Journal of Thermal Science, 6(4):241–250, 1997.
[18] Y. Sheoran and B. Bouldin. A Versatile Design of a Controlled Swirl Distortion Gener-ator for Testing Gas Turbine Engines. ASME, 2008.
[19] Y. Sheoran, B. Bouldin, and P.M. Krishnan. Advancements in the Design of an Adapt-able Swirl Distortion Generator for Testing Gas Turbine Engines. ASME, 2009.
[20] M. Davis, D. Beale, and Y. Sheoran. Integrated Test and Evaluation Techniques asApplied to an Inlet Swirl Investigation Using the F109 Gas Turbine Engine. ASME,2008.
[21] Personal Correspondence with Milton W. Davis, Arnold Engineering Development Cen-ter, March 2013.
[22] Alex C Hoffmann and Louis E Stein. Gas cyclones and swirl tubes: principles, designand operation. Springer Verlag, 2002.
[23] MathWorks Inc. MATLAB R2012a Documentation: stream2, 2012.
[24] R Aungier. Axial-Flow Compressors-A Strategy for Aerodynamic Design and Analysis.New York: ASME Press, 2003.
[25] J.C. Dunavant. Cascade investigation of a related series of 6-percent-thick guide-vaneprofiles and design charts: NACA TN 3959. National Advisory Committee for Aero-nautics, 1957.
[26] Philip G Hill and Carl R Peterson. Mechanics and thermodynamics of propulsion. 1992.
[27] Stratasys. Fortus 250mc Specifications, 2012.
[28] Stratasys. ABSplus-P430 Specifications, 2012.
[29] Allen L Treaster and Adam M Yocum. The calibration and application of five-holeprobes. Technical report, DTIC Document, 1978.
88
[30] Akshoy Ranjan Paul, Ravi Ranjan Upadhyay, and Anuj Jain. A novel calibrationalgorithm for five-hole pressure probe. International Journal of Engineering, Scienceand Technology, 3(2), 2011.
[31] Laura Katherine Brandt. Numerical and analytical studies of two-dimensional vortexpair dynamics in unstratified and stratified environments. PhD thesis, UC San Diego,2009.
[32] William J Devenport, Jeffrey S Zsoldos, and Christine M Vogel. The structure anddevelopment of a counter-rotating wing-tip vortex pair. Journal of Fluid Mechanics,332:71–104, 1997.
[33] Philip G Saffman. Vortex dynamics. Cambridge university press, 1992.
[34] D.D. Sanders and M.G. List. CFD Performance Predictions of a Serpentine DiffuserConfiguration in an Annular Cascade Facility. AIAA Paper, 2013-0220, 2013.
[35] Walter O’Brien and Anthony Ferrar. Progress in Boundary Layer Ingesting EmbeddedEngine Research. In Joint Propulsion Conferences. American Institute of Aeronauticsand Astronautics, 2012.
[36] Robert H Liebeck. Design of the blended wing body subsonic transport. Journal ofAircraft, 41(1):10–25, 2004.
[37] Gregory M Gatlin, Dan D Vicroy, and Melissa B Carter. Experimental Investigation ofthe Low-Speed Aerodynamic Characteristics of a 5.8-Percent Scale Hybrid Wing BodyConfiguration. AIAA Paper, 2669:25–28, 2012.
[38] F Aulehla. Intake swirl - a major disturbance parameter in engine/intake compatibility.ICAS Proceedings, 1982.
89
Appendix A
Source Code
This appendix lists the source code used in the application of the StreamVane Method.Table A.1 lists the filenames of the attached MATLAB files along with a description of each.Figure A.1 shows a block diagram of the source code to illustrate how the different functionsinteract with each other.
Filename Description
inleta variable vanes.m Script to read a desired swirl profile and callother functions for StreamVane creation.
super seed path maker.m Function to create seed lines and vane seedpoints.
blade and path maker single.m Function to create vane lines from vane seedpoints.
flat plate gen simple orth square cl.m Function to create coordinates for flat platevanes with NACA A4K6 camber line.
structure blade and path maker.m Function to create structural members.sweep journal multi.m Function to create an NX automation script
to create solid geometry.sweep journal maker multi sub.m Subfunction to create vane and structural
lines in NX script format.
Table A.1: Descriptions and filenames of attached source code.
90
inleta_variable_vanes.m
super_seed_path_maker.m
blade_and_path_maker_single.m
flat_plate_gen_simple_orth_square_cl.m
structure_blade_and_path_maker.m
sweep_journal_multi.m
sweep_journal_maker_multi_sub.m
input profile
CAD script
Figure A.1: Block diagram of interaction between source code files.
91
A.1 inleta variable vanes.m
1 clear
2 clc
3 close all
4
5 %load up the profile , this is in the sandard form
6 load(’ inleta_standard.mat ’)
7
8 %scale the profile to the desired dimensions
9 input.X = input.X*2.9640;
10 input.Y = input.Y*2.9640;
11
12 %quiver_plot (input.X,input.Y,input.U,input.V);
13 %break
14
15 %% Create Seed Points
16
17 %setup options for seed path maker
18 ss_options .figures = 1;
19 ss_options .blade_figure = 1;
20 ss_options .positive = 1;
21 ss_options .use_variable_spacing = 1;
22 ss_options . variable_spacing_size = 5.0;
23 ss_options .skip = 2400;
24 ss_options .x_point = -1.0*2.9640/3;
25 ss_options .y_point = 2.0*2.9640/3;
26 ss_options .extent = floor (0.307*200000);
27 ss_options .chunk_override 1 = 5;
28 %execute seed path maker , whcih outputs x,y coordinates of
seeds
29 seed_points1 = super_seed_path_maker (input ,ss_options );
30
31
32
33 %duplcate some of the seeds taking advantage of profile symetry
34 seed_points1_orig = seed_points1 ;
35 for n = 2:6
36 seed_points1 (end+1,:) = [-seed_points1_orig(n,1),
seed_points1_orig(n,2)];
37
38 end
39
40 %manualy add seeds for structure
41
92
42 seed_points1 (end +1,:) = [0 2.5];
43 %seed_points1 (end+1,:) = [0 2.15];
44 seed_points1 (end +1,:) = [0 1.25];
45 %seed_points1 (end+1,:) = [0 1.10];
46 seed_points1 (end +1,:) = [0 0.65];
47 seed_points1 (end +1,:) = [0 0.0];
48 %seed_points1 (end+1,:) = [0 -0.25];
49 %seed_points1 (end+1,:) = [0 -2.8];
50
51 %set the final output seed_points variable , potentially , mutple
52 %super_seed_path_maker runs could be made and their results
could be
53 %concatinated . the seed_points variable simply contains ordered
x,y data of
54 %seed points
55 seed_points = seed_points1 ;
56
57 figure
58 hold on
59 draw_circle (0 ,0 ,5.928/2) ;
60 scatter (seed_points (:,1) ,seed_points (:,2))
61 x = input.X;
62 y = input.Y;
63 u = input.U;
64 v = input.V;
65 w = input.W;
66
67 %setup the interpolation functions
68 u_interp = TriScatteredInterp(x,y,u);
69 v_interp = TriScatteredInterp(x,y,v);
70 w_interp = TriScatteredInterp(x,y,w);
71
72
73 %put it on a normal grid
74 x_graph_value = 0.1;
75 y_graph_value = 0.1;
76 %create the meshgrid
77 expansion_coef = 1.25;
78 [qx ,qy] = meshgrid (min(x)*expansion_coef:x_graph_value:max(x)*
expansion_coef ,min(y)*expansion_coef:y_graph_value:max(y)*
expansion_coef);
79 u_erped = u_interp (qx ,qy);
80 v_erped = v_interp (qx ,qy);
81 for j = 1: length(seed_points (:,1))
82
93
83 path_line_x = seed_points (j,1);
84 path_line_y = seed_points (j,2);
85 a_stream = stream2 (qx ,qy ,-v_erped ,u_erped ,path_line_x ,
path_line_y ,[1/1000 50000]) ;
86 b_stream = stream2 (qx ,qy ,v_erped ,-u_erped ,path_line_x ,
path_line_y ,[1/1000 50000]) ;
87
88 plot(a_stream 1(: ,1) ,a_stream 1(: ,2) ,’b’,’LineWidth ’,2)
89 plot(b_stream 1(: ,1) ,b_stream 1(: ,2) ,’b’,’LineWidth ’,2)
90
91 end
92
93 axis equal
94
95
96 %% Create Blade and Path Curves
97
98 %set options
99 bapoptions .figures = 1;
100 bapoptions .make_blades = 1;
101 bapoptions .blade_skip = 300;
102 bapoptions .profile_skip = 3;
103 bapoptions .bl_strip = 0.9*2.9640;
104 bapoptions .max_blockage = 0.4;
105
106 %execute blade and path function , this returns cells with path
alines and
107 %blade curve lines. All ordered x,y data. The bap_results
returns misc.
108 %results for examining how the blade were made
109 [path_lines , blade_curves , bap_results ] =
blade_and_path_maker_single (seed_points ,input ,bapoptions );
110
111
112 %% Find points to map the support structures
113
114 %set options
115 ss_options .structural = 1;
116 ss_options .figures = 1;
117 ss_options .blade_figure = 0;
118 ss_options .positive = 1;
119 ss_options .use_variable_spacing = 0;
120 ss_options .skip = 500;
121 ss_options .x_point = -0.7211;
122 ss_options .y_point = 2.6085;
94
123 ss_options .extent = floor (0.39*200000);
124
125 %execture support path line maker , this returns a simple x,y
list of points
126 %that will make up the support path
127 structure_blade_points1 = super_seed_path_maker (input ,
ss_options );
128 %take advantage of symetry and make a second support path
mirrored about
129 %the x-axis
130 structure_blade_points2 = [-structure_blade_points1 (:,1) ,
structure_blade_points1 (:,2) ];
131
132 %% Create support blades from previously computed support path ,
this acutally creates the cross sections for the structural
line
133 sbapoptions .figures = 0;
134 sbapoptions .blade_skip = 2;
135 sbapoptions .profile_skip = 2;
136 sbapoptions .min_spacing = 0.1;
137
138 %the spacing map allows a non uniform spacing for the support
structure ,
139 %setting a spacing_map as follows will create support vanes of
uniform
140 %thickness , in this case 0.25 inches
141 spacing_map = [100 100 0.25; -100 100 0.25; -100 -100 0.25; 100
-100 0.25];
142 [structure_path_lines , structure_blade_curves , sbap_results ] =
structure_blade_and_path_maker (structure_blade_points1 ,
spacing_map ,sbapoptions );
143
144 %add resulting curves to path_lines and blade_curves
145 path_lines end +1 = structure_path_lines ;
146 blade_curves end +1 = structure_blade_curves ;
147
148
149 %do the same for the second support structure
150 sbapoptions .figures = 0;
151 sbapoptions .blade_skip = 2;
152 sbapoptions .profile_skip = 2;
153 sbapoptions .min_spacing = 0.1;
154 spacing_map = [100 100 0.25; -100 100 0.25; -100 -100 0.25; 100
-100 0.25];
95
155 [structure_path_lines , structure_blade_curves , sbap_results ] =
structure_blade_and_path_maker (structure_blade_points2 ,
spacing_map ,sbapoptions );
156 path_lines end +1 = structure_path_lines ;
157 blade_curves end +1 = structure_blade_curves ;
158
159
160 %% Create journal file to make the solid geometry
161
162 sweep_journal_multi(path_lines ,blade_curves ,’output.vb ’);
96
A.2 super seed path maker.m
1 function [ seed_points_out ] = super_seed_path_maker (input ,
options )
2 %super_seed_path_maker output seed points for a vector field
3
4 %Options
5
6 %display figures
7 if isfield(options , ’figures ’) == 0
8 options .figures = 0;
9 end
10
11 %display figure of turning along a blade
12 if isfield(options , ’blade_figure ’) == 0
13 options .blade_figure = 0;
14 end
15
16 %direction of seed line
17 if isfield(options , ’positive ’) == 0
18 options .positive = 1;
19 end
20
21 %if using uniform spacing , skip amount
22 if isfield(options , ’skip ’) == 0
23 options .skip = 10;
24 end
25
26 %x and y point of seed line seed
27 if isfield(options , ’x_point ’) == 0 || isfield (options , ’
y_point ’) == 0
28 error(’You must supply a superseed point ’);
29 end
30
31 %etent that you want to integrate for
32 if isfield(options , ’extent ’) == 0
33 options .extent = 1e5;
34 end
35
36 %are these points for a structural support ?
37 if isfield(options , ’structural ’) == 0
38 options .structural = 0;
39 end
40
41 %use variable seed spacing ?
97
42 if isfield(options , ’use_variable_spacing ’) == 0
43 options .use_variable_spacing = 0;
44 else
45 %if you are using variable seed spacing , set the variable
seed spacing
46 %amount , epsilon
47 if isfield(options , ’variable_spacing_size ’) == 0
48 options .variable_spacing_size = 2;
49 end
50 end
51
52 %The vector field needs to come instandar form , column vectors
53 x = input.X;
54 y = input.Y;
55 u = input.U;
56 v = input.V;
57 w = input.W;
58
59
60 %setup the interpolation functions so we can evaluate u,v,w
wherever we
61 %want
62 u_interp = TriScatteredInterp(x,y,u);
63 v_interp = TriScatteredInterp(x,y,v);
64 w_interp = TriScatteredInterp(x,y,w);
65
66
67 %put it on a normal grid
68 x_graph_value = 0.1;
69 y_graph_value = 0.1;
70 expansion_coef = 1.25;
71 [qx ,qy] = meshgrid (min(x)*expansion_coef:x_graph_value:max(x)*
expansion_coef ,min(y)*expansion_coef:y_graph_value:max(y)*
expansion_coef);
72 u_erped = u_interp (qx ,qy);
73 v_erped = v_interp (qx ,qy);
74
75 %set super seed point
76 n = 1;
77 sx = options.x_point ;
78 sy = options.y_point ;
79
80 %calcualte seed line using stream2
81 if options.positive
98
82 seed_stream = stream2 (qx ,qy ,u_erped ,v_erped ,sx ,sy ,[1/1000
options .extent ]);
83 else
84 seed_stream = stream2 (qx ,qy ,-u_erped ,-v_erped ,sx ,sy ,[1/1000
options.extent ]);
85 end
86
87 %extract x,y points from stream2 output
88 seed_line n.x = [seed_stream 1( isfinite (seed_stream 1(: ,1) )
,1)];
89 seed_line n.y = [seed_stream 1( isfinite (seed_stream 1(: ,1) )
,2)];
90
91 seed_points = [seed_line 1.x,seed_line 1.y];
92
93 seed_u = u_interp (seed_points (:,1) ,seed_points (:,2));
94 seed_v = v_interp (seed_points (:,1) ,seed_points (:,2));
95 seed_w = w_interp (seed_points (:,1) ,seed_points (:,2));
96
97 %calculate turning angle along seed line
98 turning_angle_along_seed_points = acosd(seed_w ./sqrt(seed_u .^2+
seed_v .^2+ seed_w .^2));
99
100
101 %Variable spacing
102 if options.use_variable_spacing
103
104 x_coords = (1: length(turning_angle_along_seed_points ))/
length( turning_angle_along_seed_points );
105 y_coords = turning_angle_along_seed_points ;
106
107 %calculate extrema of turning angle along seed line
108 [max_vals , max_ind , min_vals , min_ind ] = extrema (smooth(
turning_angle_along_seed_points ,1000));
109
110
111 %determine which extrema to keep
112 %it always keeps the first and last (which should be the
first and last
113 %value along the seed line , and then it uses a magic number
to
114 %specify how far apart two adjacent extrema need to be.
This is good
115 %becouse sometimes the extrema finder will return two
extrema that are
99
116 %just really close to eachother and are not true extrema
117 extremes = sortrows ([ vertcat (max_vals ,min_vals ), vertcat(
max_ind ,min_ind )],2);
118 %add the first extema to keep
119 extremes_keep(1,:) = [turning_angle_along_seed_points (1)
,1];
120 extreme_keepcount = 2;
121 for extreme_count = 2: length(extremes )
122 %critera for extrema being to close
123 if abs(extremes (extreme_count ,1) - extremes (
extreme_count -1,1)) > 0.5
124 extremes_keep(extreme_keepcount ,:) = extremes (
extreme_count ,:);
125 extreme_keepcount = extreme_keepcount +1;
126 end
127 end
128 extremes_keep(end ,:) = [turning_angle_along_seed_points (end
),length( turning_angle_along_seed_points )];
129
130
131
132 %now move trhought the extrema , starting at the first one
and placing
133 %vanes nead the desired variable spacing size
134 min_vane_angle_spacing = options .variable_spacing_size ;
135 seed_out_count = 1;
136 for extreme_count = 1: length(extremes_keep)
137
138 seed_distance_along_path (seed_out_count) =
extremes_keep(extreme_count ,2);
139 seed_out_count = seed_out_count+1;
140
141 %if we are not at the last extrema
142 if extreme_count~= length(extremes_keep)
143 difference_to_next_extrema = extremes_keep(
extreme_count+1,1) -extremes_keep(extreme_count
,1);
144 number_of_chunks = ceil(abs(
difference_to_next_extrema /
min_vane_angle_spacing ));
145
146 %allow option to overide setting and manually set a
number of
147 %chunks between extrema
148 if isfield (options , ’chunk_override ’) == 1
100
149 if extreme_count <= length(options .
chunk_override) && ~isempty (options .
chunk_overrideextreme_count)
150 number_of_chunks = options .chunk_override
extreme_count;
151 end
152 end
153 number_of_chunks;
154 size_of_chunk = difference_to_next_extrema /
number_of_chunks;
155
156 %place seeds
157 for vane_num = 1: number_of_chunks -1
158
159 closeness_matrix = sortrows (abs([( extremes_keep
(extreme_count ,1)+size_of_chunk*vane_num )-
turning_angle_along_seed_points (
extremes_keep(extreme_count ,2):extremes_keep
(extreme_count+1,2)) ,(extremes_keep(
extreme_count ,2):extremes_keep(extreme_count
+1,2)) ’]) ,1);
160 seed_distance_along_path (seed_out_count) =
closeness_matrix (1,2);
161 seed_out_count = seed_out_count+1;
162
163 end
164
165 end
166
167 end
168
169 variable_blade_figure_points = [x_coords (sort(
seed_distance_along_path ))’,y_coords (sort(
seed_distance_along_path ))];
170 seed_points_out = [seed_points (sort(
seed_distance_along_path ) ,1),seed_points (sort(
seed_distance_along_path ) ,2)];
171
172
173 %or use uniform spacing , and just set a skip amount
174 else
175 seed_points_out = seed_points (1: options.skip:end ,:);
176 end
177
178 %display figures for turning output
101
179 if options.figures
180 figure
181 quiver_plot (x(1:20: end),y(1:20: end),u(1:20: end),v(1:20: end)
)
182 hold on
183
184
185 %streamline (seed_stream )
186 %seed_points_out(end ,:) = [];
187 %seed_points_out(end+1,:) = [-seed_points_out (2,1) ,
seed_points_out(2,2) ];
188 %seed_points_out(end+1,:) = [-seed_points_out (2,1) ,-
seed_points_out(2,2) ];
189 %seed_points_out(end+1,:) = [3,0];
190
191 plot(seed_stream 1(1: end ,1),seed_stream 1(1:end ,2) ,’r’,’
LineWidth ’,2)
192 axis equal
193 scatter (seed_points_out (2:end -1,1) ,seed_points_out (2:end
-1,2) ,100,’ob ’,’LineWidth ’,2);
194 scatter (seed_points_out(1,1) ,seed_points_out(1,2) ,100,’or
’,’LineWidth ’,2);
195 %plot(seed_points_out (1:end ,1),seed_points_out (1:end ,2) ,’r
’,’LineWidth ’,2)
196 %quiver(seed_points_out (1:end -1,1) ,seed_points_out (1:end
-1,2) ,u_interp (seed_points_out(1:end -1,1) ,
seed_points_out (1:end -1,2)),v_interp (seed_points_out (1:
end -1,1) ,seed_points_out (1:end -1,2)) ,1.0,’b’,’LineWidth
’,2);
197 %
198 draw_circle (0 ,0 ,5.928/2)
199 xlabel(’x (in) ’);
200 ylabel(’y (in) ’);
201
202 if ~options .structural
203 for j = 1: length(seed_points_out(:,1))-1
204
205 path_line_x = seed_points_out(j,1);
206 path_line_y = seed_points_out(j,2);
207 a_stream = stream2 (qx ,qy ,-v_erped ,u_erped ,
path_line_x ,path_line_y ,[1/1000 90000]) ;
208 b_stream = stream2 (qx ,qy ,v_erped ,-u_erped ,
path_line_x ,path_line_y ,[1/1000 90000]) ;
209 for n = 1: length(b_stream 1)
102
210 if sqrt(b_stream 1(n,1)^2+ b_stream 1(n,2)^2)
> 5.928/2
211 b_stream 1(n,:) = [NaN NaN];
212 end
213 end
214
215 for n = 1: length(a_stream 1)
216 if sqrt(a_stream 1(n,1)^2+ a_stream 1(n,2)^2)
> 5.928/2
217 %n
218 a_stream 1(n,:) = [NaN NaN];
219
220 end
221 end
222 plot(a_stream 1(: ,1) ,a_stream 1(: ,2) ,’b’,’
LineWidth ’,2)
223 plot(b_stream 1(: ,1) ,b_stream 1(: ,2) ,’b’,’
LineWidth ’,2)
224
225 a_x = a_stream 1(1:1000: end ,1);
226 a_y = a_stream 1(1:1000: end ,2);
227 b_x = b_stream 1(1:1000: end ,1);
228 b_y = b_stream 1(1:1000: end ,2);
229
230 combined_stream_x = [a_x;b_x];
231 combined_stream_y = [a_y;b_y];
232
233 %quiver(combined_stream_x ,combined_stream_y ,
u_interp (combined_stream_x ,combined_stream_y),
v_interp (combined_stream_x ,combined_stream_y)
,0.5,’b’);%,’LineWidth ’,2);
234 %quiver(b_x ,b_y ,u_interp (b_x ,b_y),v_interp (b_x ,b_y)
,0.5,’b’);%,’LineWidth ’,2);
235 end
236 end
237 %plot(zeros(length (( -5.928/2) :0.01:(5.928/2)) ,1) ,( -5.928/2)
:0.01:(5.928/2) ,’g’,’LineWidth ’,2)
238 %print(’-depsc ’,’C:\ Dropbox \school\Research \Thesis\figures\
aleph_3_vector_seed_line .eps ’);
239 if options.blade_figure
240 figure
241 hold on
242 h1 = plot ((1: length(turning_angle_along_seed_points ))/
length( turning_angle_along_seed_points ),
turning_angle_along_seed_points ,’r’,’LineWidth ’,2);
103
243 ylabel(’Turning Angle (deg)’);
244 xlabel(’Distance Along Seed Line ’);
245 %title(’Vane Locations Along Seed Line ’);
246 if options. use_variable_spacing
247
248 h3 = plot(variable_blade_figure_points (:,1) ,
variable_blade_figure_points (:,2) ,’-ob ’,’
LineWidth ’,2,’ MarkerSize ’,10);
249 %h2 = plot(variable_blade_figure_points (:,1) ,
variable_blade_figure_points (:,2) ,’b’,’LineWidth
’,2);
250 %h3 = scatter (variable_blade_figure_points (:,1) ,
variable_blade_figure_points (:,2) ,100,’ob ’,’
LineWidth ’,2);
251 h4 = scatter (extremes_keep(:,2)/length(
turning_angle_along_seed_points ),extremes_keep
(:,1) ,100,’og ’,’LineWidth ’,2);
252 extreme_count = 1: length(extremes_keep);
253 legend ([h1 ,h3 ,h4],’Seed Line ’,’Vane Seed Locations
’,’Extrema ’,’Location ’,’Best ’);
254 else
255 h5 = scatter ((1: options.skip:length(
turning_angle_along_seed_points ))/length(
turning_angle_along_seed_points ),
turning_angle_along_seed_points (1: options .skip:
end) ,100,’ob ’,’LineWidth ’,2);
256 legend ([h1 ,h5],’Seed Line ’,’Vane Seed Locations ’,’
Location ’,’NorthEast ’);
257 end
258 end
259 end
260
261
262 end
104
A.3 blade and path maker single.m
1 function [path_lines , blade_curves , other_results] =
blade_and_path_maker (seed_points ,input_profile ,options )
2
3 %This function takes seed points and from those points creates
lines that
4 %are everywhere perpendicular to a certain vectorfield , it then
, querying
5 %the vector field , gets the required turning angles needed at
each point
6 %along these lines. It then returns the coordinates of these
path lines
7 %and blade profiles for use in the NX journal generator
8
9 %options
10 if isfield(options , ’figures ’) == 0
11 options .figures = 0;
12 end
13 if isfield(options , ’blade_skip ’) == 0
14 options .blade_skip = 10;
15 end
16 if isfield(options , ’profile_skip ’) == 0
17 options .profile_skip = 10;
18 end
19
20 if isfield(options , ’min_spacing ’) == 0
21 options .min_spacing = 0.10;
22 end
23 if isfield(options , ’make_blades ’) == 0
24 options .figures = 1;
25 end
26 if isfield(options , ’bl_strip ’) == 0
27 options .bl_strip = 5.928/2;
28 end
29 if isfield(options , ’max_blockage ’) == 0
30 options .max_blockage = 0.4;
31 end
32
33
34 %Strip boundary layer
35 for j=1: length(input_profile.X)
36 if sqrt(input_profile.X(j)^2+ input_profile.Y(j)^2)<options.
bl_strip
37 x(j) = input_profile.X(j);
105
38 y(j) = input_profile.Y(j);
39 u(j) = input_profile.U(j);
40 v(j) = input_profile.V(j);
41 w(j) = input_profile.W(j);
42 end
43 end
44
45 %Radomly pull from field if size of vecotr field if too large
46 if length(x) > 5000
47 select_range = randsample (length(x) ,5000);
48 x = x(select_range );
49 y = y(select_range );
50 u = u(select_range );
51 v = v(select_range );
52 w = w(select_range );
53 end
54
55
56 %create a biharmonic interpolation which can extrapolate beyond
the normal
57 %bounds of the field. This allows the vanes to connect to the
supports
58
59 [xData , yData , zData] = prepareSurfaceData( x, y, u );
60 ft = fittype( ’biharmonicinterp ’ );
61 opts = fitoptions ( ft );
62 opts.Normalize = ’on ’;
63 [fitresult_u , gof] = fit( [xData , yData], zData , ft , opts );
64
65 [xData , yData , zData] = prepareSurfaceData( x, y, v );
66 ft = fittype( ’biharmonicinterp ’ );
67 opts = fitoptions ( ft );
68 opts.Normalize = ’on ’;
69 [fitresult_v , gof] = fit( [xData , yData], zData , ft , opts );
70
71
72 [xData , yData , zData] = prepareSurfaceData( x, y, w );
73 ft = fittype( ’biharmonicinterp ’ );
74 opts = fitoptions ( ft );
75 opts.Normalize = ’on ’;
76 [fitresult_w , gof] = fit( [xData , yData], zData , ft , opts );
77
78 %setup the linear interpolation functions to be used throught
the code when we
79 %query the profile
106
80 expansion_factor = 1.2;
81 x_graph_value = 0.05*3;
82 y_graph_value = 0.05*3;
83 [qx ,qy] = meshgrid ((min(x)*expansion_factor):x_graph_value:(max
(x)*expansion_factor),(min(y)*expansion_factor):
y_graph_value:(max(y)*expansion_factor));
84
85 fitresult_u_single = fitresult_u (qx ,qy);
86 fitresult_v_single = fitresult_v (qx ,qy);
87 fitresult_w_single = fitresult_w (qx ,qy);
88
89 %now using this biharmonic interpolated data , setup a linear
90 %interpolation function . Linear is used becouse it is much
91 %faster than the biharmonic
92 u_interp = TriScatteredInterp(qx(1: end)’,qy(1: end)’,
fitresult_u_single (1: end)’);
93 v_interp = TriScatteredInterp(qx(1: end)’,qy(1: end)’,
fitresult_v_single (1: end)’);
94 w_interp = TriScatteredInterp(qx(1: end)’,qy(1: end)’,
fitresult_w_single (1: end)’);
95
96 %put it on a normal grid for use with stream2
97 u_erped = u_interp (qx ,qy);
98 v_erped = v_interp (qx ,qy);
99 w_erped = w_interp (qx ,qy);
100
101 %plot a quiver plot of the velocity feild
102 if options.figures
103 fig1 = figure;
104 hold on
105 quiver(qx ,qy ,u_erped ,v_erped ,1.3,’k’)
106 axis equal
107 end
108
109
110 %% Go through seed point list and create vane lines in a
posative and negative direction from each seed_point
111 k = 1;
112 for j = 1:size(seed_points ,1)
113
114 path_line_x = seed_points (j,1);
115 path_line_y = seed_points (j,2);
116 a_stream = stream2 (qx ,qy ,-v_erped ,u_erped ,path_line_x ,
path_line_y ,[1/1000 50000]) ;
107
117 b_stream = stream2 (qx ,qy ,v_erped ,-u_erped ,path_line_x ,
path_line_y ,[1/1000 50000]) ;
118
119 %plot vane lines if desired
120 if options.figures
121 streamline (a_stream );
122 streamline (b_stream );
123 end
124
125 blade_line k.x = [flipud(b_stream 1(~ isnan(b_stream
1(: ,1) ) ,1));a_stream 1(~ isnan(a_stream 1(: ,1) ) ,1)];
126 blade_line k.y = [flipud(b_stream 1(~ isnan(b_stream
1(: ,1) ) ,2));a_stream 1(~ isnan(a_stream 1(: ,1) ) ,2)];
127
128 blade_xdata k = [flipud(b_stream 1(~ isnan(b_stream
1(: ,1) ) ,1));a_stream 1(~ isnan(a_stream 1(: ,1) ) ,1)];
129 blade_ydata k = [flipud(b_stream 1(~ isnan(b_stream
1(: ,1) ) ,2));a_stream 1(~ isnan(a_stream 1(: ,1) ) ,2)];
130
131 k = k+1;
132 end
133
134 q = k-1;
135
136
137
138 %move through each vane line and calculate geometry for vane
cross sections
139 path_line_count = 1;
140 u = 1;
141 block_index = 1;
142 for k = 1:1:k-1
143
144 %move along bladerow
145 p = 1;
146 clear path_points ;
147
148 %move through all the blade locations along each blade path
149 blade_curve_count = 1;
150 for g = 2: options .blade_skip :length(blade_line k.x)-1
151 %get local x and y locations at point of intrest
152 local_x = blade_line k.x(g);
153 local_y = blade_line k.y(g);
154
108
155 %find velocity values at this location using linear
interpolation
156 %functions
157 local_u = u_interp (local_x ,local_y );
158 local_v = v_interp (local_x ,local_y );
159 local_w = w_interp (local_x ,local_y );
160
161 %find nearest point in all other blade lines for
calculation of
162 %solidity
163 for blade_line_number =1:1:q
164 if blade_line_number ~=k
165 [spacing1 res1] = min(sqrt (( blade_xdata
blade_line_number-local_x ).^2 + (
blade_ydata blade_line_number-local_y ).^2))
;
166 blade_spacing_list(blade_line_number ,:) = [
blade_line_number ,spacing1 ,blade_xdata
blade_line_number (res1),blade_ydata
blade_line_number (res1)];
167 else
168 blade_spacing_list(blade_line_number ,:) = [
blade_line_number ,0,0,0];
169 end
170 end
171 blade_spacing_list = sortrows (blade_spacing_list ,2);
172
173 %blade spacing is average distance to nearest 2 vanes
174 blade_spacingk( blade_curve_count) = 0.5*(
blade_spacing_list (2,2)+blade_spacing_list (3,2));
175
176 %calculate blockage , this assumes a 0.028" thick
profile
177 local_blockage = 0.028/( blade_spacingk(
blade_curve_count));
178
179 %actually place blades along lines if under max
blockage
180 if local_blockage < options.max_blockage
181
182
183
184 %save a variable that holds the spacing map so we
can view it
185 %later
109
186 spacing_map (u,:) = [local_x , local_y , blade_spacing
k( blade_curve_count)];
187 u = u+1;
188
189 %determine needed blade angle
190 local_mag = sqrt(local_u ^2+ local_v ^2+ local_w ^2);
191 blade_angle k(g) = acosd(local_w /local_mag );
192 local_blade_angle = blade_angle k(g);
193
194 %save a variable that holds the turning map so we
can view it
195 %later
196 theta_map (u,:) = [local_x , local_y ,
local_blade_angle ];
197
198 %calculate rotation angle
199 dx = blade_line k.x(g+1) - blade_line k.x(g);
200 dy = blade_line k.y(g+1) - blade_line k.y(g);
201 if dx == 0
202 dx = blade_line k.x(g+2) - blade_line k.x(g);
203 end
204 if dy == 0
205 dy = blade_line k.y(g+2) - blade_line k.y(g);
206 end
207 rotation_angle = atan2(dy ,dx);
208 rotation_angle = rotation_angle *180/pi+90 -180;
209 if rotation_angle < 0
210 rotation_angle = rotation_angle +360;
211 end
212
213 %correct for blockage , this correction comes from
CFD studies
214 %that corelation the impact of blockage on turning
performance .
215 blockage_factor = 2.1533* local_blockage^2 + 0.6772*
local_blockage + 0.9548;
216
217 %create a map of blockage factor
218 blockage_factor_map(block_index ,:) = [local_x ,
local_y , blockage_factor];
219 block_index = block_index + 1;
220
221 %correct local blade angle for blockage factor
222 local_blade_angle = local_blade_angle/
blockage_factor;
110
223
224 %compute needed cl and aoa from blade corelation
225 half_thickness = 0.028/2;
226 desired_solidity = 2;
227
228 %Calculate cl and aoa from CFD corelation
229 if local_blade_angle > 0
230 cl = local_blade_angle /24.019;
231 aoa = cl *15.0;
232 else
233 cl = 0;
234 aoa = 0;
235 end
236
237 %Get profile data from airfoil function
238 local_blade_spacing = blade_spacingk(
blade_curve_count);
239 [profx profy] =
flat_plate_gen_simple_orth_square_cl (cl ,aoa ,
half_thickness ,local_blade_spacing*
desired_solidity);
240 profx = profx (1: options.profile_skip :end -1);
241 profy = profy (1: options.profile_skip :end -1);
242
243 %rotate the profile to align with vane line
244 blade_x = -profy*cosd(rotation_angle)-zeros(length(
profx) ,1)*sind(rotation_angle);
245 blade_y = -profy*sind(rotation_angle)+zeros(length(
profx) ,1)*cosd(rotation_angle);
246 blade_z = -profx;
247
248 %store blade coordinates and path line coordinates
249 new_blade_coords = [blade_x ,blade_y ,blade_z ];
250 spline_points = [new_blade_coords (:,1)+local_x
new_blade_coords (:,2)+local_y new_blade_coords
(:,3) ];
251 blade_curves path_line_count blade_curve_count =
spline_points;
252 blade_curve_count = blade_curve_count + 1;
253 path_points (p,:) = [local_x , local_y , 0];
254 %path_points (p,:) = [new_blade_coords (1,1)+local_x
new_blade_coords (1,2)+local_y new_blade_coords
(1,3) ];
255 p = p + 1;
256 end
111
257
258
259 end
260
261 spline_points = [path_points (:,1) , path_points (:,2) ,
path_points (:,3) ];
262 path_lines path_line_count = spline_points;
263
264 path_line_count = path_line_count +1;
265
266 end
267
268 %save some results for more detailed analysis later
269 other_results.spacing_map = spacing_map ;
270 other_results.turning_angle_map = theta_map ;
271 other_results.blockage_factor_map = blockage_factor_map ;
112
A.4 flat plate gen simple orth square cl.m
1 function [x,y] = flat_plate_gen_simple_orth_square (cl ,aoa ,
half_thickness ,chord)
2
3 %load A4K6 data
4 load naca63_book .mat
5
6 %load chamber line and scale by cl
7 chamber_x = naca63_book (:,1);
8 chamber_y = naca63_book (:,2)*cl;
9
10 %define resample amount
11 small_step = 0.005/2;
12 large_step = 0.05/3;
13
14 %resample the data using a spline
15 small_half_fraction = 2.0;
16 new_x = [0: small_step :half_thickness*small_half_fraction ,
half_thickness* small_half_fraction+large_step :large_step :(1-
half_thickness* small_half_fraction) ,(1- half_thickness*
small_half_fraction):small_step :1];
17 new_chamber_y = interp1 (chamber_x ,chamber_y ,new_x ’,’spline ’);
18 new_chamber_x = new_x;
19
20 %scale by chord
21 new_chamber_y = chord*new_chamber_y;
22 new_chamber_x = chord*new_chamber_x;
23
24 %define Thickness for entire profile
25 p = 1;
26 for n = new_chamber_x;
27 thick(p) = half_thickness;
28 p=p+1;
29 end
30
31 k = 1;
32 %place curve lines above and below the chamber line
33 for q = -8:8
34 vector_to_next_point = [( new_chamber_x(2) - new_chamber_x
(1)),( new_chamber_y(2) - new_chamber_y(1))];
35 vector_to_next_point = vector_to_next_point /norm(
vector_to_next_point );
36 rotation_matrix = [0 -1;1 0];
113
37 vector_to_above_point = rotation_matrix*
vector_to_next_point ’;
38 above_point = [new_chamber_x(1) new_chamber_y(1)]+ thick(1)*
q/10* vector_to_above_point ’;
39 curve_lines_x(k) = above_point (1);
40 curve_lines_y(k) = above_point (2);
41 k = k+1;
42 end
43
44 for n=2: length(new_chamber_x)-1
45 vector_to_next_point = [( new_chamber_x(n+1) - new_chamber_x
(n-1)),( new_chamber_y(n+1) - new_chamber_y(n-1))];
46 vector_to_next_point = vector_to_next_point /norm(
vector_to_next_point );
47 rotation_matrix = [0 -1;1 0];
48 vector_to_above_point = rotation_matrix*
vector_to_next_point ’;
49 above_point = [new_chamber_x(n) new_chamber_y(n)]+ thick(n)*
vector_to_above_point ’;
50 curve_lines_x(k) = above_point (1);
51 curve_lines_y(k) = above_point (2);
52 k = k+1;
53 end
54
55 for q = fliplr (-8:8)
56 vector_to_next_point = [( new_chamber_x(end) - new_chamber_x
(end -1)) ,(new_chamber_y(end) - new_chamber_y(end -1))];
57 vector_to_next_point = vector_to_next_point /norm(
vector_to_next_point );
58 rotation_matrix = [0 -1;1 0];
59 vector_to_above_point = rotation_matrix*
vector_to_next_point ’;
60 above_point = [new_chamber_x(end) new_chamber_y(end)]+ thick
(1)*q/10* vector_to_above_point ’;
61 curve_lines_x(k) = above_point (1);
62 curve_lines_y(k) = above_point (2);
63 k = k+1;
64 end
65
66
67
68 for n=fliplr (3: length(new_chamber_x) -2)
69 vector_to_next_point = [( new_chamber_x(n+1) - new_chamber_x
(n-1)),( new_chamber_y(n+1) - new_chamber_y(n-1))];
114
70 vector_to_next_point = vector_to_next_point /norm(
vector_to_next_point );
71 rotation_matrix = [0 -1;1 0];
72 vector_to_above_point = rotation_matrix*
vector_to_next_point ’;
73 above_point = [new_chamber_x(n) new_chamber_y(n)]-thick(n)*
vector_to_above_point ’;
74 curve_lines_x(k) = above_point (1);
75 curve_lines_y(k) = above_point (2);
76 k = k+1;
77 end
78
79
80
81 %rotation by aoa
82 aoa = -aoa;
83 R = [cosd(aoa) -sind(aoa);sind(aoa) cosd(aoa)];
84 rot_result = R*[ curve_lines_x;curve_lines_y];
85 curve_lines_x = rot_result (1,:);
86 curve_lines_y = rot_result (2,:);
87
88 x = curve_lines_x ’;
89 y = curve_lines_y ’;
90
91 x = circshift (x,[50 ,0]) ;
92 y = circshift (y,[50 ,0]) ;
93
94 end
115
A.5 structure blade and path maker.m
1 function [path_lines , blade_curves , results] =
structure_blade_and_path_maker (blade_points ,spacing_map ,
options )
2
3 spacing_interp = TriScatteredInterp(spacing_map (:,1) ,
spacing_map (:,2) ,spacing_map (:,3));
4
5 path_lines = [blade_points (:,1) ,blade_points (:,2) ,zeros(length(
blade_points ) ,1)];
6
7 if isfield(options , ’figures ’) == 0
8 options .figures = 0;
9 end
10 if isfield(options , ’blade_skip ’) == 0
11 options .blade_skip = 10;
12 end
13 if isfield(options , ’profile_skip ’) == 0
14 options .profile_skip = 10;
15 end
16
17 h = 1;
18
19 figure
20 plot(blade_points (:,1) ,blade_points (:,2) ,’-xb ’)
21 hold on
22
23 for j=2: options .blade_skip :length(path_lines ) -1
24
25 path_cords = path_lines (j,:);
26
27 dx=path_lines (j+1,1) -path_lines (j-1,1);
28 dy=path_lines (j+1,2) -path_lines (j-1,2);
29 dxn = dx/sqrt(dx^2+dy^2);
30 dyn = dy/sqrt(dx^2+dy^2);
31 rotation_matrix = [dyn , -dxn , 0;dxn , dyn , 0;0,0,1];
32
33 %rotation_matrix = [1, 0, 0;0, 1, 0;0,0,1];
34
35 vane_chord = spacing_interp(path_cords (1),path_cords (2))*2;
36
37 if isnan(vane_chord )
38 vane_chord = 0.05;
39 disp(’asdfasdf ’)
116
40 end
41
42 if sqrt(path_cords (1) ^2+ path_cords (2) ^2) > 2.964
43 vane_chord = 1.0;
44 end
45
46 %vane_chord = 0.5;
47
48 [vane_x ,vane_y] = flat_plate_gen_simple_orth_square_cl
(0 ,0 ,0.028/2 , vane_chord );
49
50 skip = options.profile_skip ;
51 blade_curves h = [vane_y (1: skip:end -1),zeros(length(vane_x
(1: skip:end -1)) ,1) ,-vane_x (1: skip:end -1)]*
rotation_matrix+repmat(path_cords ,length(vane_x (1: skip:
end -1)) ,1);
52 %blade_curves last_real_path +2h = [[0.01 0 0.1];[0.01 0
-0.1];[ -0.01 0 -0.1];[ -0.01 0 0.1]]* rotation_matrix+
repmat(path_cords ,4,1);
53 plot3(blade_curves h(:,1),blade_curves h(:,2),
blade_curves h(:,3) ,’-xr ’)
54 h = h + 1;
55
56 end
57
58 %path_lines = path_lines (2:end -1,:);
59 %plot3(path_lines (:,1) ,path_lines (:,2) ,path_lines (:,3))
60 results = 0;
61
62 end
117
A.6 sweep journal multi.m
1 function [] = sweep_journal_multi(path_lines ,blade_curves ,
filename )
2
3 %open file for writing
4 fileID = fopen(filename ,’w’);
5
6 %write some preamble things
7 fprintf (fileID ,’Option Strict Off\n’);
8 fprintf (fileID ,’Imports System\n’);
9 fprintf (fileID ,’Imports NXOpen\n’);
10
11 fprintf (fileID ,’Module NXJournal \n’);
12 fclose(fileID);
13 running_spline_count = 1;
14 %create a sub function for each vane
15 for p = 1: length(path_lines )
16 if p ~= 1
17 running_spline_count = running_spline_count + length(
blade_curves p -1) +2;
18 end
19 sweep_journal_maker_multi_sub (path_lines p,blade_curves p
,running_spline_count ,p,filename );
20 end
21
22 fileID = fopen(filename ,’a’);
23
24 %add the main function which will call the sub functions . This
is done as
25 %the main function will clear the memory used by the journal
after each sub
26 %function is called. If you do not do this , you will end up
running out of
27 %memory. There may be a better way to do it , but this works.
28 fprintf (fileID ,’Sub Main\n’);
29 for p = 1: length(path_lines )
30 fprintf (fileID ,’Blade_%g()\n’,p);
31 end
32 fprintf (fileID ,’End Sub\n’);
33 fprintf (fileID ,’End Module\n’);
34 fclose(fileID);
35 end
118
A.7 sweep journal maker multi sub.m
1 function [] = sweep_journal_maker_multi_sub (path_line ,
blade_curves ,spline_count_start ,module_count ,filename )
2 %this function takes several inputs and creates a vb script to
make a
3 %sweep in NX
4 %this function only makes the submodule
5 %variables are set as per the following example
6 %
7 path_line = [0 0 0;1 0 0; 2 0 0; 3 0 0; 4 0 0];
8 blade_curves 1 = [0 -1 -1;0 -1 1;0 1 1;0 1 -1];
9 blade_curves 2 = [1 -1 -1;1 -1 1;1 1 1;1 1 -1];
10 blade_curves 3 = [2 -1 -1;2 -1 1;2 1 1;2 1 -1];
11 blade_curves 4 = [3 -1 -1;3 -1 1;3 1 1;3 1 -1];
12 blade_curves 5 = [4 -1 -1;4 -1 1;4 1 1;4 1 -1];
13 spline_count_start =1
14 the spline_count_start parameter is to be used in order to make
multiple
15 sweeps loadable into the same NX part file as to not reuse the
names of
16 splines
17 %
18
19 %open file fo writing
20 fileID = fopen(filename ,’a’);
21
22 %write some preamble things , notice it starting a sub function
23 fprintf (fileID ,’Sub Blade_%g\n’,module_count );
24 fprintf (fileID ,’Dim theSession As Session = Session .GetSession
()\n’);
25 fprintf (fileID ,’Dim workPart As Part = theSession .Parts.Work\n
’);
26 fprintf (fileID ,’Dim displayPart As Part = theSession .Parts.
Display \n’);
27 fprintf (fileID ,’Dim nullNXObject As NXObject = Nothing \n’);
28 fprintf (fileID ,’Dim nullCurve As Curve = Nothing \n’);
29 fprintf (fileID ,’Dim nullFeatures_Swept As Features .Swept =
Nothing \n’);
30
31
32 %setup some counters
33 point_used = zeros (5000 ,1) ;
34 spline_count = spline_count_start;
35 sweep_count = 1;
119
36
37 section_used = zeros (5000 ,1) ;
38 blade_spline_number = zeros (5000 ,1) ;
39 guide_spline_number = 0;
40
41 sweep_vane_count = 1;
42
43
44 %% Create the Guide line
45 %Make the builder
46 fprintf (fileID ,’Dim studioSplineBuilderEx %g As Features .
StudioSplineBuilderEx \n’, spline_count );
47 fprintf (fileID ,’ studioSplineBuilderEx %g = workPart .Features .
CreateStudioSplineBuilderEx (nullNXObject )\n’,spline_count );
48
49 %Set Builder Options
50 %this makes sure the spline is not a closed spline
51 fprintf (fileID ,’ studioSplineBuilderEx %g.IsPeriodic = False\n’,
spline_count );
52 %this option sets the order of the spline
53 fprintf (fileID ,’ studioSplineBuilderEx %g.Degree = 2\n’,
spline_count );
54
55 point_count = 1;
56 for n = 1: length(path_line )
57
58 %Add points to the spline % check to see if this point has
been
59 %used before , if it has then create the container variables
for it ,
60 %if not used the ones previous . THe goal of this is to cut
down on
61 %memory usage
62 if point_used (point_count ) == 0
63 fprintf (fileID ,’\n’);
64 fprintf (fileID ,’Dim coordinates %g As Point3d = New
Point3d (%0.12f, %0.12f, %0.12f)\n’,n,path_line (n,1),
path_line (n,2),path_line (n,3));
65 fprintf (fileID ,’Dim point%g As Point\n’,n);
66 fprintf (fileID ,’point%g = workPart .Points.CreatePoint (
coordinates %g)\n’,n,n);
67 fprintf (fileID ,’Dim geometricConstraintData %g As
Features . GeometricConstraintData \n’,n);
120
68 fprintf (fileID ,’geometricConstraintData %g =
studioSplineBuilderEx %g.ConstraintManager.
CreateGeometricConstraintData ()\n’,n,spline_count );
69 fprintf (fileID ,’geometricConstraintData %g.Point = point
%g\n’,n,n);
70 fprintf (fileID ,’studioSplineBuilderEx %g.
ConstraintManager.Append(geometricConstraintData %g)\
n’,spline_count ,n);
71 fprintf (fileID ,’\n’);
72 point_used (point_count ) = 1;
73 else
74 fprintf (fileID ,’\n’);
75 fprintf (fileID ,’coordinates %g = New Point3d (%0.12f,
%0.12f, %0.12f)\n’,n,path_line (n,1),path_line (n,2),
path_line (n,3));
76 fprintf (fileID ,’point%g = workPart .Points.CreatePoint (
coordinates %g)\n’,n,n);
77 fprintf (fileID ,’geometricConstraintData %g =
studioSplineBuilderEx %g.ConstraintManager.
CreateGeometricConstraintData ()\n’,n,spline_count );
78 fprintf (fileID ,’geometricConstraintData %g.Point = point
%g\n’,n,n);
79 fprintf (fileID ,’studioSplineBuilderEx %g.
ConstraintManager.Append(geometricConstraintData %g)\
n’,spline_count ,n);
80 fprintf (fileID ,’\n’);
81 end
82 point_count = point_count + 1;
83 end
84
85 %Commit the spline
86 fprintf (fileID ,’ studioSplineBuilderEx %g.Commit ()\n’,
spline_count );
87
88 %Destroy the spline builder
89 fprintf (fileID ,’ studioSplineBuilderEx %g.Destroy ()\n’,
spline_count );
90
91 guide_spline_number = spline_count ;
92 spline_count = spline_count +1;
93
94 %% go through each blade in the blade row and add blade curves
95 for blade_curve_count = 1: length(blade_curves )
96
97 %create blade curves along guide
121
98 fprintf (fileID ,’Dim studioSplineBuilderEx %g As Features .
StudioSplineBuilderEx \n’, spline_count );
99 fprintf (fileID ,’ studioSplineBuilderEx %g = workPart .Features
. CreateStudioSplineBuilderEx (nullNXObject )\n’,
spline_count );
100
101 %Set Builder Options
102 %this makes sure the spline is a closed spline
103 fprintf (fileID ,’ studioSplineBuilderEx %g.IsPeriodic = True\n
’, spline_count );
104 %this option sets the order of the spline
105 fprintf (fileID ,’ studioSplineBuilderEx %g.Degree = 2\n’,
spline_count );
106
107 point_count = 1;
108 %go through each point along each blade
109 for n = 1: length(blade_curves blade_curve_count )
110
111 %Add points to the spline % check to see if this point
has been
112 %used before , if it has then create the container
variables for it ,
113 %if not used the ones previous . The goal of this is to
cut down on
114 %memory usage
115 if point_used (point_count ) == 0
116 fprintf (fileID ,’\n’);
117 fprintf (fileID ,’Dim coordinates %g As Point3d = New
Point3d (%0.12f, %0.12f, %0.12f)\n’,n,
blade_curves blade_curve_count (n,1),
blade_curves blade_curve_count (n,2),
blade_curves blade_curve_count (n,3));
118 fprintf (fileID ,’Dim point%g As Point\n’,n);
119 fprintf (fileID ,’point%g = workPart .Points.
CreatePoint (coordinates %g)\n’,n,n);
120 fprintf (fileID ,’Dim geometricConstraintData %g As
Features .GeometricConstraintData \n’,n);
121 fprintf (fileID ,’geometricConstraintData %g =
studioSplineBuilderEx %g.ConstraintManager.
CreateGeometricConstraintData ()\n’,n,
spline_count );
122 fprintf (fileID ,’geometricConstraintData %g.Point =
point%g\n’,n,n);
122
123 fprintf (fileID ,’studioSplineBuilderEx %g.
ConstraintManager.Append(geometricConstraintData
%g)\n’,spline_count ,n);
124 fprintf (fileID ,’\n’);
125 point_used (point_count ) = 1;
126 else
127 fprintf (fileID ,’\n’);
128 fprintf (fileID ,’coordinates %g = New Point3d (%0.12f,
%0.12f, %0.12f)\n’,n,blade_curves
blade_curve_count (n,1),blade_curves
blade_curve_count (n,2),blade_curves
blade_curve_count (n,3));
129 fprintf (fileID ,’point%g = workPart .Points.
CreatePoint (coordinates %g)\n’,n,n);
130 fprintf (fileID ,’geometricConstraintData %g =
studioSplineBuilderEx %g.ConstraintManager.
CreateGeometricConstraintData ()\n’,n,
spline_count );
131 fprintf (fileID ,’geometricConstraintData %g.Point =
point%g\n’,n,n);
132 fprintf (fileID ,’studioSplineBuilderEx %g.
ConstraintManager.Append(geometricConstraintData
%g)\n’,spline_count ,n);
133 fprintf (fileID ,’\n’);
134 end
135 point_count = point_count + 1;
136 end
137
138 %Commit the spline
139 fprintf (fileID ,’ studioSplineBuilderEx %g.Commit ()\n’,
spline_count );
140
141 %Destroy the spline builder
142 fprintf (fileID ,’ studioSplineBuilderEx %g.Destroy ()\n’,
spline_count );
143 blade_spline_number(blade_curve_count) = spline_count ;
144 spline_count = spline_count +1;
145 end
146
147
148
149
150
151
152 %% Using guide line and vane lines , setup the sweep
123
153 %set builder options
154 fprintf (fileID ,’Dim sweptBuilder1 As Features .SweptBuilder \n’);
155 fprintf (fileID ,’ sweptBuilder1 = workPart .Features .
CreateSweptBuilder(nullFeatures_Swept)\n’);
156
157 %sweep options
158 fprintf (fileID ,’ sweptBuilder1.G0Tolerance = 0.001\n’);
159 fprintf (fileID ,’ sweptBuilder1.G1Tolerance = 0.5\n’);
160 fprintf (fileID ,’ sweptBuilder1.Spine.DistanceTolerance = 0.001\n
’);
161 fprintf (fileID ,’ sweptBuilder1.Spine.ChainingTolerance =
0.00095\ n’);
162 fprintf (fileID ,’ sweptBuilder1.AlignmentMethod.AlignCurve .
DistanceTolerance = 0.001\n’);
163 fprintf (fileID ,’ sweptBuilder1.AlignmentMethod.AlignCurve .
ChainingTolerance = 0.00095\n’);
164 fprintf (fileID ,’ sweptBuilder1.OrientationMethod.
OrientationCurve. DistanceTolerance = 0.001\n’);
165 fprintf (fileID ,’ sweptBuilder1.OrientationMethod.
OrientationCurve. ChainingTolerance = 0.00095\ n’);
166 fprintf (fileID ,’ sweptBuilder1.OrientationMethod.AngularLaw .
AlongSpineData.Spine.DistanceTolerance = 0.001\n’);
167 fprintf (fileID ,’ sweptBuilder1.OrientationMethod.AngularLaw .
AlongSpineData.Spine.ChainingTolerance = 0.00095\ n’);
168 fprintf (fileID ,’ sweptBuilder1.OrientationMethod.AngularLaw .
LawCurve .DistanceTolerance = 0.001\n’);
169 fprintf (fileID ,’ sweptBuilder1.OrientationMethod.AngularLaw .
LawCurve .ChainingTolerance = 0.00095\ n’);
170 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.ScalingCurve .
DistanceTolerance = 0.001\n’);
171 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.ScalingCurve .
ChainingTolerance = 0.00095\n’);
172 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.AreaLaw .
AlongSpineData.Spine.DistanceTolerance = 0.001\n’);
173 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.AreaLaw .
AlongSpineData.Spine.ChainingTolerance = 0.00095\ n’);
174 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.AreaLaw .LawCurve .
DistanceTolerance = 0.001\n’);
175 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.AreaLaw .LawCurve .
ChainingTolerance = 0.00095\n’);
176 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.PerimeterLaw .
AlongSpineData.Spine.DistanceTolerance = 0.001\n’);
177 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.PerimeterLaw .
AlongSpineData.Spine.ChainingTolerance = 0.00095\ n’);
124
178 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.PerimeterLaw .
LawCurve .DistanceTolerance = 0.001\n’);
179 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.PerimeterLaw .
LawCurve .ChainingTolerance = 0.00095\ n’);
180 fprintf (fileID ,’ sweptBuilder1.Spine.AngleTolerance = 0.5\n’);
181 fprintf (fileID ,’ sweptBuilder1.AlignmentMethod.AlignCurve .
AngleTolerance = 0.5\n’);
182 fprintf (fileID ,’ sweptBuilder1.OrientationMethod.
OrientationCurve.AngleTolerance = 0.5\n’);
183 fprintf (fileID ,’ sweptBuilder1.OrientationMethod.AngularLaw .
AlongSpineData.Spine.AngleTolerance = 0.5\n’);
184 fprintf (fileID ,’ sweptBuilder1.OrientationMethod.AngularLaw .
LawCurve .AngleTolerance = 0.5\n’);
185 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.ScalingCurve .
AngleTolerance = 0.5\n’);
186 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.AreaLaw .
AlongSpineData.Spine.AngleTolerance = 0.5\n’);
187 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.AreaLaw .LawCurve .
AngleTolerance = 0.5\n’);
188 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.PerimeterLaw .
AlongSpineData.Spine.AngleTolerance = 0.5\n’);
189 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.PerimeterLaw .
LawCurve .AngleTolerance = 0.5\n’);
190
191 %Blend the sweep?
192 %fprintf (fileID ,’sweptBuilder1.InterpolationOption = Features .
SweptBuilder . InterpolationOptions.Blend\n’);
193
194 %create sections this is adding curves we previously defined
195 sweep_vane_count = 1;
196 for blade_curve_count =1: length(blade_curves )
197
198 if section_used (sweep_vane_count) == 0
199 fprintf (fileID ,’Dim section%g As Section \n’,
blade_curve_count);
200 end
201
202 fprintf (fileID ,’section %g = workPart .Sections .CreateSection
(0.00095 , 0.001, 0.5)\n’, blade_curve_count);
203 fprintf (fileID ,’ sweptBuilder1.SectionList .Append(section%g)
\n’, blade_curve_count);
204 fprintf (fileID ,’section %g.SetAllowedEntityTypes (Section .
AllowTypes .OnlyCurves )\n’,blade_curve_count);
205
206 if section_used (sweep_vane_count) == 0
125
207 fprintf (fileID ,’Dim features %g(0) As Features .Feature \n
’, blade_curve_count);
208 end
209
210 if section_used (sweep_vane_count) == 0
211 fprintf (fileID ,’Dim studioSpline %g As Features .
StudioSpline = CType(workPart .Features .FindObject ("
SPLINE (%g)"), Features .StudioSpline )\n’,
blade_curve_count ,blade_spline_number (
blade_curve_count));
212 else
213 fprintf (fileID ,’studioSpline %g = CType(workPart .
Features .FindObject (" SPLINE (%g)"), Features .
StudioSpline )\n’,blade_curve_count ,
blade_spline_number(blade_curve_count));
214 end
215
216 fprintf (fileID ,’ features %g(0) = studioSpline %g\n’,
blade_curve_count ,blade_curve_count);
217
218 if section_used (sweep_vane_count) == 0
219 fprintf (fileID ,’Dim spline%g As Spline = CType(
studioSpline %g.FindObject (" CURVE 1"), Spline)\n’,
blade_curve_count ,blade_curve_count);
220 else
221 fprintf (fileID ,’spline%g = CType(studioSpline %g.
FindObject (" CURVE 1"), Spline)\n’,blade_curve_count ,
blade_curve_count);
222 end
223
224 if section_used (sweep_vane_count) == 0
225 fprintf (fileID ,’Dim curveFeatureTangentRule %g As
CurveFeatureTangentRule \n’, blade_curve_count);
226 end
227
228 fprintf (fileID ,’ curveFeatureTangentRule %g = workPart .
ScRuleFactory.CreateRuleCurveFeatureTangent (features %g,
spline%g, nullCurve , True , 0.00095 , 0.5)\n’,
blade_curve_count ,blade_curve_count , blade_curve_count);
229 fprintf (fileID ,’section %g.AllowSelfIntersection (True)\n’,
blade_curve_count);
230
231 if section_used (sweep_vane_count) == 0
232 fprintf (fileID ,’Dim rules%g(0) As SelectionIntentRule\n
’, blade_curve_count);
126
233 end
234
235 fprintf (fileID ,’rules%g(0) = curveFeatureTangentRule %g\n’,
blade_curve_count ,blade_curve_count);
236
237 if section_used (sweep_vane_count) == 0
238 fprintf (fileID ,’Dim helpPoint %g As Point3d = New
Point3d (0, 0, 0)\n’,blade_curve_count);
239 end
240
241 fprintf (fileID ,’section %g.AddToSection (rules%g, spline%g,
nullNXObject , nullNXObject , helpPoint %g, Section .Mode.
Create , False)\n’,blade_curve_count ,blade_curve_count ,
blade_curve_count ,blade_curve_count);
242 section_used (sweep_vane_count) = 1;
243 sweep_vane_count = sweep_vane_count + 1;
244
245
246 end
247
248 section_count = sweep_vane_count;
249 %setup guide line
250 if section_used (section_count) == 0
251 fprintf (fileID ,’Dim section %g As Section \n’,section_count);
252 end
253
254 fprintf (fileID ,’section %g = workPart .Sections .CreateSection
(0.00095 , 0.001, 0.5)\n’, section_count);
255 fprintf (fileID ,’ sweptBuilder1.GuideList .Append(section %g)\n’,
section_count);
256 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.AreaLaw .
AlongSpineData.SetFeatureSpine(section %g)\n’,section_count);
257 fprintf (fileID ,’ sweptBuilder1.ScalingMethod.PerimeterLaw .
AlongSpineData.SetFeatureSpine(section %g)\n’,section_count);
258 fprintf (fileID ,’section %g.SetAllowedEntityTypes (Section .
AllowTypes .OnlyCurves )\n’,section_count);
259
260 if section_used (section_count) == 0
261 fprintf (fileID ,’Dim features %g(0) As Features .Feature \n’,
section_count);
262 end
263
264 if section_used (section_count) == 0
265 fprintf (fileID ,’Dim studioSpline %g As Features .StudioSpline
= CType(workPart .Features .FindObject (" SPLINE (%g)"),
127
Features .StudioSpline )\n’,section_count ,
guide_spline_number);
266 else
267 fprintf (fileID ,’ studioSpline %g = CType(workPart .Features .
FindObject (" SPLINE (%g)"), Features .StudioSpline )\n’,
section_count ,guide_spline_number);
268 end
269 fprintf (fileID ,’features %g(0) = studioSpline %g\n’,section_count
,section_count);
270
271 if section_used (section_count) == 0
272 fprintf (fileID ,’Dim spline%g As Spline = CType(studioSpline
%g.FindObject ("CURVE 1"), Spline)\n’,section_count ,
section_count);
273 else
274 fprintf (fileID ,’spline%g = CType(studioSpline %g.FindObject
(" CURVE 1"), Spline)\n’,section_count ,section_count);
275 end
276
277 if section_used (section_count) == 0
278 fprintf (fileID ,’Dim curveFeatureTangentRule %g As
CurveFeatureTangentRule \n’, section_count);
279 end
280
281 fprintf (fileID ,’ curveFeatureTangentRule %g = workPart .
ScRuleFactory.CreateRuleCurveFeatureTangent (features %g,
spline%g, nullCurve , False , 0.00095 , 0.5)\n’,section_count ,
section_count ,section_count);
282
283 if section_used (section_count) == 0
284 fprintf (fileID ,’Dim rules%g(0) As SelectionIntentRule \n’,
section_count);
285 end
286
287 fprintf (fileID ,’rules%g(0) = curveFeatureTangentRule %g\n’,
section_count ,section_count);
288
289 if section_used (section_count) == 0
290 fprintf (fileID ,’Dim helpPoint %g As Point3d = New Point3d (0,
0, 0)\n’, section_count);
291 end
292
293 fprintf (fileID ,’section %g.AddToSection (rules%g, spline%g,
nullNXObject , nullNXObject , helpPoint %g, Section .Mode.Create
128
, False)\n’,section_count ,section_count ,section_count ,
section_count);
294
295 %Commit the Sweep
296 fprintf (fileID ,’ sweptBuilder1.Commit ()\n’);
297
298 fprintf (fileID ,’ sweptBuilder1.SectionList .Clear()\n’);
299 fprintf (fileID ,’ sweptBuilder1.Destroy ()\n’);
300
301 sweep_count = sweep_count +1;
302 spline_count = spline_count +1;
303
304 %end the subfunction
305 fprintf (fileID ,’End Sub\n’);
306
307 fclose(fileID);
129