Nasa TN D-8431
Nasa TN D-8431
Nasa TN D-8431
¢v3
¢:O
!
Z
I--
CASE FILE
COpy
II - Programmer's Manual
NASA TN D-8431
4. Title
and S'ubtitle
REVISED FORTRAN PROGRAM FOR CALCULATING 5, Report Date
July 1977
VELOCITIES AND STREAMLINE}_ ON THE HUB-SHROUD MIDCHANNEL
STREAM SURFACE OF AN AXIAL-, RADIAL-, OR MIXED-FLOW 6. Performing Organization Code
TURBOMACHINE OR ANNULAR DUCT. II- PROGRAMMER'S MANUAL
A FORTRAN-IV computer program has been developed that obtains a detailed subsonic or
shock-free transonic flow solution on the hub-shroud midchannel stream surface of a turbo-
machine. The blade row may be fixed or rotating, and the blades may be twisted and leaned.
Flow may be axial, mixed, or radial. This program is a revision of a previous program and
this report supersedes NASA TN D-7344. Upstream and downstream flow variables may vary
from hub to shroud, and provision is made to correct for loss of stagnation pressure. The
results include velocities, streamlines, and flow angles on the stream surface and approxi-
mate blade surface velocities. Subsonic solution_ :tre obtained by a finite-difference stream-
function solution. Transonic solutions are obtained by a velocity-gradient method, using
information from a finite-difference stream-function solution at a reduced mass flow.
19, Security Classlf, (of this report) 20. Security Classif. (of this page) 21. NO. of Pages 22. Price"
' For sale by the National Technical Information Service, Sprinsfielcf, Virsinia 22161
CONTENTS
Page
S_M_Y ...................................... I
INTROD UC TION
iii
Page
Subroutine SPLINE ............................... 59
Subroutine SPLINT .............................. 60
Subroutine SLOPES ............................... 60
Subroutines SPLISL and SPINSL ...................... 61
Plotting Subroutines ............................. 61
APPENDIXES
A - FINITE-DIFFERENCE FORM OF STREAM-FUNCTION EQUATION .... 201
iV
REVISED FORTRAN PROGRAM FOR CALCULATING VELOCITIES AND STREAMLINES
ON THE HUB-SHROUD MIDCHANNEL STREAM SURFACE OF AN AXIAL-,
RADIAL-, OR MIXED-FLOW TURBOMACHINE OR ANNULAR DUCT
II - PROGRAMMER'S MANUAL*
SUMMARY
A FORTRAN-IV computer program has been developed that obtains a detailed sub-
sonic or transonic flow solution on the hub-shroud midchannel stream surface of a
single blade row of a turbomachine. A solution can also be obtained for an annular duct
without blades. The flow must be essentially subsonic, but there may be locally super-
sonic flow. The solution is for two-dimensional, adiabatic shock-free flow. The blade
row may be fixed or rotating, and the blades may be twisted and leaned. The flow may
be axial, mixed, or radial. Upstream and downstream flow conditions can vary from
hub to shroud, and provision is made for an approximate correction for loss of stagna-
tion pressure. Viscous forces are neglected along solution mesh lines running from
hub to shroud.
The present program is a revision of a previous program and this report super-
sedes NASA TN D-7344. The primary revisions are to extend the program to handle
nonaxial flows without restriction, to handle annular ducts without blades, to allow for
any specified streamwise loss distribution, and to make numerous detailed improve-
ments for more accurate and efficient calculations.
The basic analysis is based on the stream function and consists of the solution of
the simultaneous, nonlinear, finite-difference equations of the stream function. This
basic solution, however, is limited to strictly subsonic flow. When there is locally
supersonic flow, a transonic solution must be obtained. The transonic solution is ob-
tained by a combination of a finite-difference stream-function solution and a velocity-
gradient solution. The finite-difference solution at a reduced mass flow provides in-
formation that is used to obtain a velocity-gradient solution at the full mass flow.
The program is reported in two volumes, with part I as the user's manual and
part II as the programmer's manual. This report, part II, contains all the information
necessary to understand the operation of the program. It explains the overall program
procedure and gives a detailed description of all the subroutines. There is also a
dictionary of variable names and a complete program listing.
The design of blades for compressors and turbines ideally requires analytical
methods for unsteady, three-dimensional, turbulent, viscous flow through a turboma-
chine. Clearly, such solutions are impossible at the present time, even on the largest
and fastest computers. The usual approach at present is to analyze only steady flows
and to separate inviscid solutions from viscous solutions. Three-dimensional inviscid
s61utions are just beginning to be used with the present generation of computers. How-
ever, they use excessive computer time. So at present, inviscid analyses usually in-
volve a combination of several two-dimensional solutions on intersecting families of
stream surfaces to obtain what is called a quasi-three-dimensional solution.
Since there are several choices of two-dimensional surfaces to analyze, and many
ways of combining them, there are many approaches to obtaining a quasi-three-
dimensional solution. Most two-dimensional solutions are either on a blade-to-blade
Blade-,
Flow
\ _- Midchan nel
/ surface S2
Orihogonal
channel
surface -_
I
L Blade-to-blade
surface S1
CO-11362--01
The program described in this report uses both the finite-difference and the quasi-
orthogonal (velocity gradient) methods, combined in a way that takes maximum advantage
of both. The finite-difference method is used to obtain a subsonic-flow solution. The
velocity-gradient method is then used, if necessary, to extend the range of solutions into
the transonic regime.
A computer program called MERIDL has been written to perform these calculations.
This program is written for an axial-, mixed-, or radial-flow turbomachine blade row,
either a compressor or turbine, or for an annular duct. Upstream and downstream flow
conditions can vary from hub to shroud. The solution is for compressible, shock-free
flow or incompressible flow. Provision is made for an approximate correction for loss
of stagnation pressure through the blade row. The blade row may be either fixed or ro-
tating, and the blades may be twisted and leaned. The blades can have a high aspect ra-
tio and arbitrary thickness distribution. The solution obtained by this program also pro-
vides the information necessary for a more-detailed blade shape analysis on blade-to-
blade surfaces (fig. 1). A useful program for this purpose is TSONIC (ref. 3).
Information needed to prepare all the input for TSONIC is calculated and printed by
MERIDL.
This section gives an overall view of the program calculational procedure. The
next section should be consulted for the detailed program procedure. Reference will be
made to the proper section or appendix for the equations and their derivation or for the
numerical techniques used.
The main program guides the overall flow of the program. All the principal sub-
routines are called by it. Figure 2 is a flow chart of the main program. The first step
is to read and print out all the input data. This is done by the subroutine INPUT. Up-
stream and downstream flow conditions can be given either as a function of the stream-
line or as a function of radius. For program calculations, both the stream function and
the radius are needed. Subroutine INPUT estimates values of either stream function or
radius, whichever was not given as input, based on the area distribution. These values
are later adjusted with e-ch iteration. INPUT also calculates tangential blade thickness,
if it is not given directly as input. The next step is to call subroutine INPLOT, which
plots all the upstream and downstream input flow variables as well as the input blade
sections from hub to shroud.
The next subroutine is MESHO, which calculates the coordinates of the orthogonal
mesh in the solution region. After this, subroutine PRECAL is called to calculate those
quantities that remain fixed throughout the calculations. These quantities include the
s and t mesh coordinates, hub and shroud wall curvatures, and leading- and trailing-
edge z- and r-coordinates at horizontal mesh lines. Subroutine PRECAL also calls
THETOM and THIKOM. Subroutine THETOM calculates _0/_s and ao/at at the orthog-
onal mesh points. (All symbols are defined in appendix H. ) These partials are used
later to calculate the biade flow angle /3 and the tangential velocity W 0 after the me-
ridional velocity Wm has been calculated. Subroutine THIKOM calculates the tangen-
tial blade thickness t O at the orthogonal mesh points. Finally, PRECAL makes cor-
rections in mass flow, wheel speed, and whirl for the reduced-mass-flow solution if
the full-mass-flow solution cannot be obtained directly (i. e., when REDFAC < 1.0).
Next subroutine MEPLOT is called to plot the meridional plane view of the blade
and passage and to plot the orthogonal mesh. Then subroutine INIT is called to initialize
array variables as required for the first iteration. Most variables are set either to
zero or to some value that will avoid division by zero later on.
®
Calculate finite-
differenceequation
__ COEF
coefficients
Readand print
INPUT
inputdata l t
TVELCY /
l Solve finite-difference TransonC SOutionr
/
equationfor stream
I function SOR t
Plot input geometry
Iand _NPLOT
variables I l
TOUTPT
Calculate andprint
t transonic output
Calculate totalpressure
r
I loss at each
LOSSOM
mesh point
Generateor thogonal
I solution
MESHO Yes
mesh
t
l NEWRHO I
Calculate velocityand No
PRECAL
Print incidenceand
Calculate program density at eachmesh point
deviation angles
constants
1 t
t
MEPLOT
Plot blade and mesh
in meridional plane
OUTPUT
Calculate and print
output as requested J SLPLOT
JCalcuate
TSONIN
TSONIC nput
Plot streamlines
1 Yes
TSONIN I
Plot velocities
SVPLOT I
6
pare for the next outer iteration: OUTPUT, INDEV, SLPLOT, and SVPLOT. Calls to
these eight subroutines are repeated until convergence is obtained.
Subroutine COEF calculates the coefficients of the finite-difference equations.
These coefficients are derived in appendix A. Because of the sensitivity of the calcula-
tions to the value of a(rV0)/at , this value is damped from iteration to iteration. Thus,
only a portion of the predicted change in value is actually used. This portion is speci-
fied by the input value of DNEW.
Subroutine SOR solves the finite-difference equations for the stream function u
by successive overrelaxation using an optimum overrelaxation factor (ORF). This is
the inner iteration. The optimum overrelaxation factor is calculated by subroutine SOR
on the first iteration.
Subroutine LOSSOM calculates the ratio of actual to ideal relative stagnation pres-
sure downstream of the blade and then distributes the loss linearly, or as specified by
the input, through the blade row from the leading to the trailing edge, or through the
annular passage if no blades are present. The method of making loss corrections is
discussed in appendix D of part I (ref. 6).
Subroutine NEWRHO Calculates velocity components at each mesh point by differ-
entiating the stream function numerically along the orthogonal mesh lines. These values
are used to calculate new densities at each mesh point. When whirl is not given as in-
put, NEWRHO also makes reinitialization calls to readjust the estimated values of
stream function to go with the input temperature, density, and tangential velocity (ap-
pendix B). Subroutine NEWRHO also calculates values of _ and _ (eqs. (A1) to (A3)),
at the mesh points, to be used in COEF on the next iteration. And NEWRHO checks the
relative change in velocity from the previous iteration at each mesh point. The maxi-
mum relative change in velocity is checked to see if the solution is converged.
Now that a solution (converged or not) has been obtained, OUTPUT is called. Sub-
routine OUTPUT first calculates other velocity components and flow angles at all mesh
points. Then OUTPUT calculates streamline curvature and critical velocity ratio at
each mesh point. If there are blades, subroutine BLDVEL is called to calculate the
blade surface velocities, as explained in appendix G of part I (ref. 6). Also BLDVEL
calculates the average blade-to-blade density to be used in NEWRHO in the next itera-
tion. And BLDVEL calculates Ft at each point by using equation (A4). The vector
component Ft is used by COEF in calculating the coefficients of the finite-difference
equations. After returning from BLDVEL, OUTPUT will print out data at the orthogonal
mesh points, if desired. Then, if output is desired along streamlines, the necessary
interpolation will be done and data will be printed for all streamlines. Similarly, in-
terpolation will be done and data printed for hub-shroud station lines.
After OUTPUT, subroutines INDEV and TSONIN are called if there are blades.
Subroutine INDEV calculates a correction to aO/as for a short distance into the blade
V
row to match the mean surface within the blade row to the free-stream flow angles, both
upstream and downstream. The method for doing this is described in appendix F of
part I (ref. 6). INDEV also calculates and prints out incidence and deviation angles if
this is requested. Then TSONIN will calculate and print TSONIC input if desired. Also
if desired, SLPLOT will plot the streamlines and SVPLOT will plot the mean and blade
surface velocities.
At this point, the main program will start a new iteration by going back to COEF if
the solution has not converged. If the solution has converged, there are two possibil-
ities. If REDFAC is 1, the final solution has been obtained and the program is through.
If REDFAC is less than 1, the final approximate full-mass-flow solution will be calcu-
lated by TVELCY. First, the mass flow, rotational speed, and inlet and outlet whirl
are restored to their full values. This requires reinitialization calls of LAMDAF and
RVTHTA for inlet and outlet whirl. Then TVELCY calculates _Wm/am and awo/_rn
for use in the velocity-gradient equation. These quantities are first calculated from the
reduced-mass-flow solution and then are adjusted by dividing by REDFAC. Now the
velocity-gradient equation (derived in appendix C of part I (ref. 6)) is solved along each
vertical mesh line. Iteration is required to establish the correct temperature, density,
and whirl to use in the velocity-gradient equation. When TVELCY is through, TOUTPT
is called. Subroutine TOUTPT is an alternate entry point for OUTPUT. The only
difference is that the flow angles are considered to be known, and the velocity compo-
nents are calculated from the velocity magnitude and the known flow angles. After
TOUTPT, if there are blades, PINDV is called to print incidence and deviation angles.
Then the same sequence of TSONIN, SLPLOT, and SVPLOT is called as for the finite-
difference solution. Normally, only the smaller ("subsonic") of two possib_ solutions
is obtained by TVELCY (part I (ref. 6), appendix C); but if desired, both the larger
("supersonic") and smaller solutions can be obtained. If both solutions are desired,
TVELCY, TOUTPT, PINDV, TSONIN, SLPLOT, and SVPLOT are called again. This
completes the program.
This section gives the detailed program procedure for all the subroutines. The
previous section should be consulted for an overall view of the program calculational
procedure.
Most of the subroutines in MERIDL use the same set of variables. These variables
are all defined in the section MAIN DICTIONARY. All subroutines are described prior
to the main dictionary. First, the main subroutines and other subroutines that use the
main dictionary are described, and then the remaining subroutines with special diction-
!
TABLE I. - SUBROUTINE CALLS AND COMMON BLOCKS
[- ---- __.__
Subroutine name COMMON Called subroutines Culling su Subroutine name COMMOI_ { Culled subroutines Calling st_brootinee
or entry point blocks routine8 or entry point Mocks
(a) (a)
=
INDEV SPLINT
TOUTPT (OUTPUT)
LOSSTV (entry /---/ LAMDAF TVELCY
PINDV (LINDV)
point for LOSSOM /INPUTT/ RVTHTA
Pintting subroutines
ICALCON/ TIPF
INPUT /---/ SPLINE MERIDL /VARCOM/ I_IOIPF
/VARCOM/ RHOIPF
PRECAL /---/ THETOM MERIDL
SPLINE
nNPUTT/ THIKOM
SLOPES
/CALCON/ LAMNIT (LAMDAF)
SPLISL ROTATE
SPLINT
THETOM f---/ LININT _RECAL
SLOPES
IINPUTT/ ROTATE
'INDCOM/ /SLCOM/ I
---- 4
/VARCOM/I
COEF '-- None {ERIDL
/ROTATN/[
'INPUTT/ J
/INDCOM/ I
'CALL-'ON/]
'gARCOM/]
'INPUTT/ [
CA LCON/[
VARCOM/I
10
TABLE I. - Continued.
Subroutine name
COMMON
Called subroutines Calling sub- Subroutine name COMMON [ Called subroutines Calling subroutines
OUTPUT
/VARCOM/ RHOIPF /VARCOM/I
/ROTATN/ INP_CT TOUTPT (OUTPUT)
SPLINE TVELCY
SPLINT LINDV
/ROTATN 1 _
SPLISL TINDV (LINDV)
/---/
TVELCY
/INPUTT/
LOSSTV
LINDV
(LOSSOM)
..................
MERIDL RVTN1T
point for
(entry
RVTHTA
/:./ /I T
/INPUTT SPLINE
PRECAL
LOSSOM
/CALCON/ TVELCY
TINDV (LINDV) /CALCON/ [ SPLINT
/VARCOM/' LAMDAF /VARCOM/
RVTBTA /BOTATN/
TIPF
TIPF (see entry
RHOIPF /INPUTT/ ] None INIT
TrPNIT)
LAMNIT (LAMDA F) /CALCON/ LOSSOM
SLOPES OUTPUT
TOUTPT (OUTPUT)
LINDV (entry /---/ LAMDAF TVELCY
.... BLDVEL
point - TINDV; see /INPUTT/ RVTHTA
TSONIN
also entry PINDV) /CALCON/ TIPF
TVELCY
/VARCOM/ RHOIPF ] LINDV
!
/ROTATN/ LININT (LINDV)
I_DCOVl/ - 4! ......
TrPNIT (entry /INPUTT/[ SPLINE PRECAL
PINDV (entry /---/ LAMDAF MERIDL point for TIPF)
/CALCON/| LOSSOM
point for LINDV) /INPUTT/ RV TH TA
RHOIPF (see
/CALOON/ /INPUTT/|None INrr .
entry RHINIT)
/VARCOM/ /CALCON/] LOSSOM
TVELCY
CONTIH
L1NDV /-,-/. [pABC TVELCY
TINDV PABC
_on_ l _o.o co_
PINDV
IHI_CT /---/ ] SPLINT MESBO
/VARCOM/ I
/ROTATN/
__ I
II
TABLE I. - Concluded.
COMMON I Ca/led subroutines Calling sub- Subroutine name COMMON Called subroutines
Subroutine name Calling subroutines
(a) (a)
OUTPUT LOSSOM
INDEV ILETE
TSONIN u_
SLOPES None None NEWRHO
LINDV
OUTPUT
TINDV
TOUTPT (OUTPUT)
LAMNIT
BLDVEL
RVTNIT
TVELCY
ROTATE MESHO
SPL]BL /---/ None INPUT
PRECAL
PRECAL
THETOM
I None OUTPUT
TSONIN
RVTNIT (RVTHTA)
TIPNIT (TIPF)
I RHINIT (RHOIPF)
PRECAL
THETOM
THIKOM
LO_SOM
LOSSTV (LOSSOM)
OUTPUT
TOUTPT (OUTPUT)
TSONTN
ILETE
LAM]qTr (LAMDAF)
RVTNIT (RVTHTA)
INRSCT
12
aries are described.
The calling relation of all subroutines is shown in figure 3. Note that figure 3 is
not a flow chart. All subroutines called and all COMMON blocks for each subroutine
are listed in table I.
The first subsections presented herein describe the general aspects of the program,
including storage requirements, conventions used, and labeled COMMON blocks. They
are followed by a detailed description of the subroutines.
STOI_[AGE REQUIREMENTS
The MERIDL program has been implemented on the NASA Lewis time-sharing IBM-
TSS/360-67 computer. The program consists of approximately 5000 lines of code. For
the numerical example of part I (ref. 6), storage of variables required approximately
60 000 words for a 21 x 41 grid of 861 points. As dimensioned for a 100 x 101 grid,
storage of variables would require about 700 000 words. The user can reduce the stor-
age requirements for variables, as desired, by changing the dimensions. The main
dictionary indicates how each variable should be dimensioned to reduce the storage re-
quired. This is indicated by reference to certain input variables, such as MM, MHT,
NHUB, NTIP, NBLPL, NPPP, and so forth. The variables with the most significant ef-
fect on storage requirements are MM and MHT.
As an example, consider the two-dimensional array ALPHA. This variable is in
the/VARCOM/COMMON block and is dimensioned ALPHA (100, 101) in the program
listing. In the main dictionary, it is listed as ALPHA (MM, MHTP1). Suppose that the
maximum desired value for MM is 60 and that for MHT it is 40. Since MHTP1 is
MHT + 1, the maximum value for MHTP1 would be 41. Then ALPHA should be dimen-
sioned ALPHA (60, 41). :: =
Similarly, all other dimensioned variables should have their dimension changed as
required. Most dimensioned variables are in COMMON blocks, but there are a few that
are dimensioned locally only. In addition, the ca/Is to LININT must be changed to reflect
any changes in the dimensions of the first two LININT arguments, and calls to ROTATE
must be changed to reflect the dimensions of the second, third, and last two arguments.
For convenience, a number of conventions are used in naming variables and assign-
ing subscripts.
In addition to the basic orthogonal mesh, there are five special mesh schemes used,
as illustrated in figure 4. For each mesh, different conventions are used to indicate
13
r j - MHTP1 r JS = NSL
'
',- Horizontal | _-._ _ ;LSt rea mli nes
A • orthogonal /
I IS-I z
_ Z
Orthogonal mesh.
(a) (b} Streamline mesh.
r JL- NSL
JN = NBLPL
_ ',--Streamlines
_ IN = NPPP
/ IN 1
/
_Z
=-Z
r _ r
JN- NBLPL LN=NPPC_
5- Percent hub-shroud
chordwlselines
_._ 5: Percent-chord
_r 5- Percent--chord
- (211
(2])
14
mesh position. The subscripts I and J are used to denote orthogonal mesh position.
The I is used to denote the vertical mesh line number, and the J is used to denote the
horizontal mesh line number. The subscripts IS and JS are used in a similar manner
to denote streamline mesh points, and IL and JL the station-line mesh points. Like-
wise, IN and JN denote points on the input blade sections, and KN and LN denote
points on the alternate blade mesh located at 5-percent-chord and 5-percent-span inter-
vals in the THETOM subroutine. Note that I and IS take on the same values, as do
JS and JL.
Velocity components on the orthogonal mesh usually have SUB in the name, such as
WSUBZ for W z. Velocity components along streamlines end in SL (WZSL), while veloc-
ity components on station lines end in ST (WZST). The letters H or HUB in a variable
name indicate the hub, and T or TIP the tip; LE is used for leading edge and TE for
trailing edge. The letters TH indicate a variable in the 0-direction, SURF a variable
on a blade surface, and BL a variable in the blade region. In a variable name, TEM in-
dicates a temporary variable; P is used to indicate a prime superscript, and PP to indi-
cate double prime; D is used for derivative. Usually, several conventions are combined
in each variable. For example, TIP is used for TI, TPPTIP for T"/TI, and DPDR for
ap/Sr.
All subroutines used for plotting have PLOT in the name.
Most variables that are used in more than one subroutine are placed in labeled
COMMON blocks. A brief description of each labeled block is given. The same variable
names are used in different subroutines for every variable in a COMMON block. The
labeled COMMON blocks are as follows:
/INPUTT/is used for all input quantities.
/CALCON/is used for constants that are initially calculated and are usually not
changed later.
/VARCOM/is used for all orthogonal mesh-point arrays that are changed in each
iteration.
15
/PLTCOM/is used to plot data for hub, shroud, and blade leading and trailing
edges.
Table I shows which COMMON blocks are needed in each subroutine.
ROTATED COORD_ATES
Spline curves are used for most geometrical curve fitting in the MERIDL program.
Since spline curves are limited to angles somewhat less than 90 °, an option to use ro-
tated coordinates may be exercised by the user when flow angles are much over 45 ° from
axial. Rotated z- and r-coordinates are illustrated in figure 5.
Subroutine ROTATE is used by MERIDL to transfer from unrotated to rotated coor-
dinates (and vice versa). The option to work in rotated coordinates is specified through
the input variables LROT and ANGROT. If ANGROT is not given as input (LROT = 0),
there wil!be no difference between unrotated and rotated coordinates in the program,
although the ROTATE calls are still made in the subroutines.
All coordinates read into MERIDL as input are unrotated coordinates. Most of these
are never rotated by the program. Likewise, some geometrical arrays calculated by
Zrot
/
rr
w,- Z
/
Figure 5. - Rotated z- and r-coordinates.
16
the program are never rotated. On the other hand, many geometrical variables are cal-
culated in the rotated system. Some of these are later unrotated, while others are not.
The variables associated with each of these options are summarized in table iI, which
shows whether a variable was calculated or used in either rotated or unrotated z- and
r-coordinates. Table HI shows which subroutines are involved in calculating, rotating,
and unrotating these variables.
ZOMBI ROMBI
ZOMROT(MM, MHTPl) ROMROT(MM, MIITP1)
ZOMBO ROMBO
ZBLROT(NPPP, NBLPL) RBLROT(NPPP, NBLPL)
ZOMOUT ROMOUT
ZPCTI(NBLPL) RPCTI(NBLPL)
ZIIIN RHIN
ZPCT2(NBLPC) RPCT2(NBLPC)
ZTIN RTIN
ZHROT(NHUB) RHROT(NHUB)
ZHOUT RHOUT
ZTROT(NTIP) RTROT(NTIP)
ZTOUT RTOUT
ZLE(NBLPL) RLE(NBLPL)
RADIN(Nn_)
ZTE(NBLPL) RTE(NBLPL)
RADOUT(NO UT)
ZLEOMR(MHTP1) RLEOMR(MHTPl)
17
TABLE Ill - SUBROUTINES INVOLVED WITH ROTATION
PRE CA L ZHST, RHST Rotated Rotated from input values with same name
ZTE, RTE
ZLEH, RLEH
ZLET, RLET
ZTEH, RTEH
ZTET, RTET
ZLEOMR, RLEOMR
1F
ZTEOMR, RTEOMR
Z LEOM, RLEOM Unrotated Unrotated from ZLEOMR, RLEOMR
18
IN COMPRESSIBLE FLOW
Provision has been made for incompressible flow analysis by MERIDL. The main
difference is that the density at each point is constant; so the density arrays are initial-
ized to the input density value. A streamwise loss of total pressure that is uniform
from hub to shroud has no effect on the solution and is not considered for the incom-
pressible case. The present method of solution is very sensitive to a hub-shroud varia-
tion of total pressure for incompressible flow, so this variation is likewise not consid-
ered. Thus, the PERLOS, PRIP, PROP, and LOSOUT arrays are not used, and any cal-
culations involving temperature or pressure are omitted from the calculation for
incompressible flow. A derivation of the necessary changes to the stream-function equa-
tion (A1) is given in appendix D.
The subroutines with differences for an incompressible flow calculation are INPUT,
PRECAL, INIT, COEF, LOSSOM, NEWRHO, OUTPUT, BLDVEL, and TSONIN. These
differences are mainly that the variable arrays RHO and RHOAV are set to the input
density, and thereafter all calculations of density, temperature, and pressure (including
and _) are omitted.
MAIN PROGRAM
The program is segmented into several principal subroutines called by the main
program, as indicated at the top of figure 3. The subroutines are called in sequence,
except for the outer iteration and a switch to obtain a supersonic final solution. The
outer iteration is a loop consisting of calls to COEF, SOR, LOSSOM, NEWRHO, OUT-
PUT, INDEV, TSONIN, SLPLOT, and SVPLOT. This calling sequence and the outer
iteration loop are shown more clearly in the flow chart for the main program, given in
figure 2. Flow charts for some of the subroutines are also given with the subroutine
descriptions.
SUBROUTINES
Subroutine INPUT
Subroutine INPUT reads and prints all input data cards and initializes some variables
for use later in the program.
All input cards are first read and printed on the output listing in the same form and
order in which they are given. All array bounds are then checked to see if they are
within limits, and some miscellaneous constants are initialized. Estimates are made
19
of various required upstream and downstream flow conditions that were not given as in-
put because other input options were used. Finally, blade surface and/or blade thickness
coordinates are calculated when not given as input.
Subroutine MESHO
Vertical orthogonal lines are then constructed one at a time, moving from left to
right between each pair of adjacent horizontal orthogonals, proceeding from hub to
shroud, as shown in figure 8. Before this process begins, however, the input mesh
boundary points on the hub - ZOMIN, ZOMBI, ZOMBO, and ZOMOUT - are calculated
in the rotated coordinate system. Rotated orthogonal mesh points (Z_MROT) are then
calculated on the hub between these boundary points. The corresponding r-coordinates
(RObIROT) and slopes (SIX)M) are obtained by a SPLINT call.
The procedure for calculating vertical orthogonal links between the horizontal
orthogonals is then begun. This procedure, shown in figure 9, is analogous to a tech-
nique for solving ordinary differential equations known as the improved Euler method
or Heun's method (ref. 7). Beginning at known orthogonal mesh points on the lower
orthogonal_ normals are constructed (such as line (_) in fig. 9) to the upper orthogonal.
The intersection coordinates of these lines with the upper orthogonal are obtained with
INRSCT calls, and then the slopes of the upper orthogonal at the intersections are ob-
tained by a SPLINT call. Lines such as line (_) in figure 9 are then constructed in such
20
I tip coordinates
6tate Input hub and
t
Divide ZRAD,
I obtain hub and tip contours
RRAD to tip I
on hub and
J arrays from
Calculate hub and
ZRAD to tip
RRAD I
t
Rotate mesh boundary inter- I
section points on hub I
I
1
and slopes of mesh along hub
contour (ZOMROT, ROMROT,
J Calculate z- and r-coordinates
and SLOM)
t
orthogonals_ proceed row by row
t Begin construction of vertical I
J-2 I
1
I
intersections of lines normal to
I Catl INRSCTio calculate z- and r-
previous row with present row
t
sets of intersection points on present
[ Calcu late average z-ccord|nates of two I
horizontal _thogonal row (Z.OMRO'I')
1
slopes (SLOM_ and angles (PHi) at
I Calculate r-coordinates (ROMROTI I
the ZOMROT mesh points
21
,- Horizontal orthogonals
l
-- Hub-shroud lines divided
ij
into equal increments
f
ZOMIN
_Z
LIT
ZOMBO
_ ZOMBI
='-Z
22
/-- Upper "horizontal"
/ orthogonal
Final orthogonal ,,,
link
o',,\!®
b..z
a way that they are perpendicular to the tangents to the upper orthogonal at the inter-
section points and pass through the original starting points on the lower orthogonal. The
rotated z-coordinates of the intersections of both sets of lines, (_) and (_), are now
known on the upper orthogonal. The desired new orthogonal mesh point z-coordinates
(ZOMROT) are the average of these two sets of z-coordinates. The corresponding ro-
tated r-coordinates (ROMROT) and slopes are then calculated by a SPLINT call. Mesh
angles (PHI) can now be obtained.
This process of constructing vertical orthogonal links is continued until the shroud
is reached by all vertical orthogonals. This completes the generation of the orthogonal
mesh. Finally, the unrotated mesh coordinates (ZOM, ROM) are calculated from
ZOMROT, ROMROT by a call to ROTATE.
Notice in MESHO that the locations of the upstream and downstream boundaries of
the orthogonal mesh at the hub are fixed by the inputs ZOMIN and ZOMOUT (fig. 8).
The locations of these boundaries at the tip, however, Cannot be given ahead of time
and are totally dependent upon the orthogonal mesh generation procedure.
Streamwise distance between vertical orthogonals at the hub is determined by the
number of mesh lines requested in the following three regions'. MBI mesh lines up-
stream of the blade from ZOMIN to ZOMBI; MBO - MBI mesh lines from ZOMBI to
ZOMBO; and MM - MBO mesh lines downstream of the blade from ZOMBO to ZOMOUT
(fig. 8). The number of horizontal orthogonals is MHT + l, which is the same in all
three regions.
23
Subroutine PRECAL
4 ......
ILE
Storedummy
and ITE arrays
values into I
Initialize subroutines LAMDAF, RWHTA.
TIPF, andRHOIPFby calling alternate
entry points LAMNIT, RVTN]T, TLPNIT,
andRHINIT
arrays (ZBLROTand RBLROT)into
1 leading-and trailing-edge arrays
I Store from rotated input blade-section
(ZLE,RLEand ZE, RTE)
[ Initialize BTH array b pitch J
t
I Call INRSCT to calculateintersections I
of bladeedgeswith hub and shroud I
I
I in FLFR ]] streamlines
Initialize
No
IocaiionsInput / Calculaterotatedand unrotated z- and r-
coordinates,andalso s- and e-coordinates,
where orthogonal meshcrosses blade
edges; calculate ! LEand ITE arrays
Set FLFRend
points- 0.0, 1.0
Calculatearc length along input blade
1 sections,bladetangential blockage.
and slopeand secondderivativeof
blademeancamber Ilne_ print this,
with input bladegeometrydata
I
station-line z- and r-coordinates Calculate stream-channel thickness arrays
I Rotateinput hub and shroud I at bladeedges (BTHLEand B1HT_. calculate
If they wereglen as Input
BTHarray within TI_KOM I
blade
1
I and
Rotateinput
r-coordinates
blade-section
(ZBLand z-RBL) I
?
No
1- i
Prime debugoutput I
if requested I
I
If flow Is Incompressible, I
initialize density array I
25
Theta coordinates are then calculated at these same points by means of SPLINT calls.
Finally, ROTATE is used to calculate unrotated z- and r-coordinates of intersections
of horizontal mesh lines with the blade edges.
Next, arc lengths along the input blade-section mean camber lines and blade block-
age are calculated. SPLINE or SPLISL calls are then used to calculate the slope and
the second derivative of the mean camber line 8-coordinate as a function of arc length,
on the same input sections. The input blade geometry, blockage, arc length, and first
and second derivatives are printed in the output.
At this point, PRECAL calls two other subroutines, THETOM and THIKOM. The
THETOM routine calculates ao/as and ao/at at the orthogonal mesh points. The
THIKOM routine calculates the stream-channel thickness arrays at the blade edges
(BTHLE and BTHTE) and makes corrections to the BTH array to account for blade
thickness.
Then PRECAL reduces certain parameters for the case where a reduced-mass-flow
solution will have to be obtained (REDFAC (1.0). Wheel speed (OMEGA) and mass
flow (MSFL) are reduced by REDFAC, as well as whirl (LAMIN, LAMOUT) and tan-
gential velocity (VTHIN, VTHOUT). Subroutines LAMDAF and RVTHTA are then re-
initialized by LAMNIT and RVTNIT calls.
Finally, PRECAL prints several arrays of debug information, if they are called
for. Also, if the flow is incompressible (GAM = 0. ), the density array is set to the input
density given in the variable AR.
Subroutine THETOM
Subroutine THETOM calculates the gradients aO/as and a_/at at the orthogonal
mesh points that lie within the leading and trailing edges of the blade. This process is
thoroughly described in appendix C.
Theta coordinates of the mean blade surface (THBL) are given at the input blade-
section points (ZBL, RBL). Gradients of the 8-coordinate are required in the s- and
t-directions at the orthogonal mesh points within the blade for use by the NEWRHO sub-
routine.
Subroutine THETOM makes use of the technique of defining an alternate mesh on
which ao/az and aS/ar are obtained. By interpolation, aO/az and ao/ar are then
obtained at the required orthogonal mesh points. Finally, as/as and a_/at are cal-
culated from _8/az and ao/ar at these points.
26
Subroutine THIKOM
Subroutine INIT
Subroutine COEF
Subroutine COEF calculates the coefficients al, a2, a3, and a4 and the constants
k 0 for the finite-difference equations. The finite-difference equation is (AS)or (AT).
The coefficients are calculated by the procedure of equation (A8), and the constants are
calculated by equation (A9). Within the blade row, the value of the constant k0 depends
on a(rvs)/at. This gradient tends to be unstable with iteration, so that damping is
usually required between iterations. The damping rate is controlled by the input vari-
able DNEW. Suggestions for choosing proper values for DNEW are given in the INPUT
section of part I (ref. 6). For every outer iteration_ the maximum and minimum values
of a(rvo)/at and the maximum predicted change in a(rVo)/at are calculated and
printed. When it is indicated by the value of DEBUG, the coefficients ai and the con-
stants k 0 will be printed.
27
Subroutine SOR
u0 = aiui
m+l
where each ui is the most recently calculated value for the point. To start, u 0 = 1 at
the interior points and u0 = 0 alongthe hub and shroud. The maximum (LMAX) and min-
imum (LMIN) values over all the interior mesh points of the ratio u m+l.
0 /u m
0 are cal-
culated for m = 1, 2, 3, . until the LMAX and LMIN ratios are close to each other.
Then the optimum overrelaxation factor (oRF) is calculated by ORF =
2/(1. + _/1- LMAX). The theory for calculating ORF is derived in reference 8.
With an optimum value for the overrelaxation factor g_, the solution to equation (A5)
is calculated by overrelaxation by
where each u i is the most recently calculated value at an interior point or is a bound-
cry value. During each iteration, the maximum change of the stream function is cal-
culated. When this maximum change is reduced below 10 -5 , the iteration is stopped,
and the current estimate of the stream function is accepted as the solution.
28
Subroutine LOSSOM
Subroutine LOSSOM interpolates the total pressure loss at the downstream input
station and then distributes this loss on the orthogonal mesh as specified by the input.
The loss is stored in the PLOSS array at each orthogonal mesh point. The loss is as-
sumed to be zero for incompressible flow. A flow chart for LOSSOM is given in fig-
ure II.
V!
Loss = 1 - Po
,,
°]ideal
r
T ,
In one input option, loss is given directly; in the other option, Pi' Ti' k' (rVe) o' and
V
Po are given and the loss is calculated from Euler's equation by using the relations
o_[X- (rV0)o]
! !
To = Wl - (I)
Cp
and
Po Po Po P_ P
29
Entry I_OS
STV ]
__ 1 ,
.. _ I
!
TIPF, RHOIPF,
Initialize
and LAMDAF, I
RVTHTA
1
I loss at all downstreampressure
alculate mesh points I
L_.
L sOMINarray J - Yes
3O
stream value) is calculated in one of several ways. The most common situation occur_
when blades are present and there is a linear streamwise loss distribution (NLOSS = 0).
In this case, loss is distributed linearly within the blades from zero loss at the leading
edge to full loss at the trailing edge. Full loss is also used from the trailing edge to
the downstream boundary.
In other situations where there are no blades or a streamwise loss distribution is
given as input, or both, some additional arrays are calculated on the first iteration. In
these cases, the s-distances (SOMOUT array) from the upstream boundary to the down-
stream input station along each horizontal mesh line are calculated. If there are no
blades, the s-distances (SOMIN array) from the upstream boundary to the upstream in-
put station are also calculated.
For the case where blades are present and a streamwise distribution of loss within
the blade row is given as input, the loss is distributed within the blades according to the
values in the input PERLOS array. A linear distribution of loss is applied downstream
of the blade from the final value of PERLOS at the trailing edge to full loss at the down-
stream input station. Full loss is used from there to the downstream solution boundary.
In the case where no blades are present, loss is distributed between the upstream
and downstream input stations, either linearly or according to specified input distribu-
tion in the PERLOS array. Full loss is then used from the downstream input station to
the downstream solution boundary.
Subroutine NEWRHO
The first major loop calculates W t. First, SPLINE is called to calculate _u/_s
along horizontal mesh lines. Then Wt is calculated by equation (Gll) of part I.
The final major loop calculates Ws, W0, V0, W, p, _, and _ at every mesh point.
The first inner loop stores values of t-distances and the stream function u in temporary
arrays. Then SPLINE is called to calculate _u/at. The second inner loop performs
31
E
p
I
_U
Calculate _-,
Ws, WB, V B,
p._, and
_I Yes
[IEND =IEND+ 1 1
1
I conlr,
I print
I reque
I outpu
W 0 = W m tan/3
tan/3 = r dmd'-'0"O
= r m__(.a0
_s __
ds + at00d_)
ds Ws
dm Wm
32
dt m
Wt
dm Wm
we have
W 0 = r W s as
0._00
+ w t a2)
upstream of blade
W0 = _(rV0)
wr downstream of blade
L-; °
Then V 0 and W are calculated by
V 0 = W 0 + wr
(2)
,
P" = OiRTI /T,,\_/(_-I)
_-_[) (1 - ""Pineal- ""\
Videal _, Z/
where
T'---_t
= 1 - 2¢oX-(wr)2 (3)
TI 2CpT I
Equation (3) is the same as equation (D5) of part I with W = 0. The density p is cal-
culated by
33
i,idea1 _,
I!
Pideal
where T/T_ is calculated by equation (D5) of part !. This completes the second inner
loop to statement 30. Then SLOPES is called to'calculate aT"/at and ap,,/at. This
gives all the quantities necessary for the final inner loop to calculate _ and _ from
equations (A2) and (A3) of part I.
After all calculations are done, the maximum and average r'elative change in ve-
locity are printed. Also, if the solution is converged on velocity, the print control vari-
ables are set to 1 whenever a positive value is specified as input. This results in output
being printed for each item asked for after convergence.
There are also two error messages for NEWRHO in case the velocity at some point
becomes too large or if the upstream whirl is too large. Suggestions for correcting
input are given in the section Error Messages in part I.
Subroutine OUTPUT
The OUTPUT subroutine calculates and prints all the major output data from
MERIDL. A flow chart for OUTPUT is shown in figure 13. Depending upon the wishes
of the user, OUTPUT has the potential for printing output on three separate sets of
points. These points are illustrated in figure 14. Output may be obtained (1) at the
orthogonal mesh points, (2) along streamlines where they are crossed by ve,-+ical
orthogonal mesh lines, and (3) along streamlines where they are crossed by user-
designated hub-shroud station lines. A detailed description of the output in each case
is given in part I under Printed Output.
The printing of output is controlled by the iteration counter ITER and the input var-
iables IMESH, ISLINE, and ISTATL. Because of the large volumes of output possible,
it is only given at the locations requested by these variables and when ITER is an integer
multiple of any of these variables.
No matter what the values of IMESH, ISLINE, and ISTATL, data are calculated at
the orthogonal mesh points for every iteration. (Whether or not it is printed depends
upon IMESH. ) Output along streamlines and on station lines is then interpolated from
the calculated data at the orthogonal mesh points if the values of ISLINE or ISTATL in-
dicate that the user desires these outputs at the current iteration. Output along stream-
lines is also calculated if it is needed for plotting (controlled by IPLOT) or if it is
needed for calculating the input to the TSONIC program (controlled by ITSON).
The first sections of the OUTPUT routine calculate data on the orthogonal mesh.
34
Caioulate velodtiesa,xI 1
anglesat meshpoints _ Calculatevelocitiesat I
tWm. sin_ - _t, costa- _), 1
Wz. Wp a, and _t
t
j
meshpoints (Win. we.
Wz, Wr, and Vst
J
I
! _
BLDVEL
CalCulateblade Calculatez-, r-, and m- Calculate z-.r-, and m-]
surface velbcitles r coordinates ofhub- l
coordnaresof stream_
f Lshrouclstation lines J
I LINTNT
I If required
S_ce "CHOKED" messa_ J
interpolateon orthogonal
l meshtoobtain Wz. Wr, Inlerpolale on orlho_onal I
meshioo' anW z W WS.I
CaicuW:e ]/r c and W/Wcr / W6- W/Wcr, ]/r c. Wm. ¢, 15
and W on streamlines W]Wcr, ]lr c Wm 'Q _ W I
at orthogonalmesh points | % _n_wt,'alo;_s'ta!6n'!
J
lines j
]LETE
] Determine which streamline
Jpolnfstie within the blade
[(]LS and ZTS)
i
I LTN]NT --
Shroud
Streaml ' _
35
At the main entry to this routine, Ws, Wt, and W8 are known from NEWRHO; and the
other velocity components and flow angles are calculated as follows:
!
Wm--
Wt
sin(a - _) :--
W m
W
cos(a - ¢) = ____E
Wm
This coding is followed by an entry point, TOUTPT, which is used only after TVELCY
has been called to obtain transonic velocities (see the block diagram, fig. 2, when
REDFAC < 1.0). From this entry point, the velocity components are calculated some-
what differently since W has been recalculated by TVELCY, as well as fl upstream
and downstream of the blade. The angle o_ is assumed to be the same as in the final
subsonic iteration. With W, /3, and _ known, the velocity components are now calcu-
lated as follows:
W m = W cos p
W 0 = W sin/3
W z = Wm cos a
W r = W m sin a
36
V 0 = W 0 + wr
_W_W = W
Wcr 4 2_f_
_Tvt
are then made by using LININT and the orthogonal mesh data to obtain Wz, Wr, W0_
W/Wcr , and 1/r c. By using variations of the p_-eceding formulas, Win, a, {3, and W
are calculated from these values. Subroutine ILETE is called to establish which mesh
points along streamlines are between the blacle leading and trailing edges. Subroutine
LININT is then used to obtain W l and Wtr ;_at these points. Finally, this output is
printed if ITER is a multiple of ISLINE.
The next section of the OUTPUT routine calculates output on user-designated hub-
shroud station lines where they intersect the streamlines. This output is calculated
37
and printed in the hub-shroud direction, in contrast to the throughflow direction of the
previous two sets of output. It is only calculated if ITER is a multiple of ISTATL. The
z- and r-coordinates of the station lines are calculated first. All "regular" station
lines are straight lines (not necessarily radial) from the hub to the shroud. "Blade
edge" station lines are those whose hub and tip coordinates correspond to the intersec-
tions of the blade leading and trailing edges with the hub and tip. Coordinates along
these station lines will follow these edges even when the edges are curved. After the
z- and r-coordinates are established, m-coordinates are calculated from these, again
using the upstream mesh boundary as the reference for m = 0.
For a station line on the leading or trailing edge, free-stream values are extrap-
olated along mesh lines to the leading or trailing edge and then interpolated along the
leading or trailing edge at the specified output streamlines. The quantities Wz, W r,
and fl are extrapolated and interpolated in this manner, and thus Wm and W0 are
calculated. On the other hand for a station line that is not on the leading or trailing
edge, interpolations from the orthogonal mesh are made by LININT to obtain Wz, Wr,
and Wa, and then W m and fl are calculated. For all station lines, the meridional
streamline curvature and the fractional total pressure loss are then interpolated from
the orthogonal mesh by LININT. Now _ and W are calculated by using the equations
given previously. LININT is then called to interpolate Wl and Wtr for station lines
that lie within the blade. Finally, the remaining station-line output VS, V, flabs' T",
W/Wcr , p", T', p', T, p, and p is calculated at each point. The station-line output
is then printed.
The final small section of OUTPUT then restores Wl and Wtr to the proper ar-
rays if they were interchanged to correspond to suction and pressure surfaces for print-
out, and any "choked" messages are removed.
Subroutine BLDVEL
Subroutine BLDVEL calculates blade surface velocities and densities and F t. First,
a(rVo)/at and a(rvo)/as are calculated by using the SLOPES subroutine. Then,
[d(rV0)/dm]B cos/3 is calculated, and Wl and Wtr are calculated by equation (G4)
of part I (ref. 6). From this, Pl and Ptr are calculated by equations (D4) and (D5)
of part I. The average density Pav is calculated by Simpson's rule
Pl + 4Pmid + Ptr
Pav= 6
This quantity is used in NEWRHO in the next iteration. Then, the predicted value of Ft
is calculated by
38
W O0
F t ---
- DFDM (4)
B 8t
where
d(rV 0)
DFDM = -B cos/3 --
dm
Equation (4) is obtained from equations (B25) and (G2) of part I. The new value for Ft
is calculated from the old Ft and the predicted value of F t by using the input damping
factor FNEW, as explained in the section INPUT of part I.
At the end, the minimum and maximum predicted values of Ft and the maximum
change in F t are calculated and printed. If debug output is requested, the arrays that
change each iteration are printed.
Subroutine ILETE
The points where streamlines are intersected by the vertical orthogonal mesh lines
are the streamline mesh points. These are, in general, different from the orthogonal
mesh points. Subroutine ILETE calculates two integer arrays, ILS and ITS. They con-
tain the numbers of the vertical mesh lines at the first intersection of a streamline with
a vertical mesh line inside the blade region at the leading and trailing edges of the
blades. These points are illustrated in figure 15. The ILS and ITS arrays are used in
OUTPUT in the calculation of blade surface velocities along streamlines.
,=Streamlines
• I_ Vertical orthogonal
lines
39
Subroutine INDEV
Subroutine INDEV recalculates ae/as to allow for incidence and deviation. This
means that the midchannel flow surface differs from the blade mean camber line near
the leading and trailing edges, so as to match the upstream and downstream flow angles.
Figure 16 shows the procedure as applied to the leading edge. A similar correction is
made at the trailing edge. A correction for blockage is made so as to satisfy both con-
tinuity and tangential momentum at blade leading and trailing edges.
The calculation starts at the hub and proceeds to successive horizontal mesh lines
up to the tip. Both incidence and deviation corrections are calculated for each horizontal
mesh line.
First, the blade mean camber angle /3b le at the leading edge is calculated. Then
the flow angle corrected for blockage at the _eading edge _bf is calculated from equa-
tion (F1) of part !. The corrections to ae/as are made so that the difference between
_bf and _b varies linearly from the blade leading edge to the distance specified in ap-
pendix F of part I. This distance is DISTLE. The interpolation to calculate _bf
(BETAIJ) at each orthogonal mesh point near the leading edge is done next, followed by
the calculation of (as/aS)bf (DTHDS(I, J)) from equation (F2) of part I. The calculation
of blocked and unb!ocked incidence angles completes the leading-edge calculation. The
trailing-edge deviation calculation is done in the same manner as the incidence calcula-
tion. Finally, the incidence and deviation angles are printed if there was any output re-
quested for the current iteration.
No correction is made to ao/at since it is nearly normal to the flow.
ne
/ LFree-stream flow
40
Subroutine TSONIN
Subroutine TSONIN generates and prints the data required as input to the TSONIC
blade-to-blade analysis program (ref. 3). Subroutine TSONIN is only called when ITER
is a multiple of ITSON. The data generated are printed for each of the stream surfaces
from hub to shroud, using 1 percent of the mass flow about a streamline to define a
stream surface or flow channel.
A complete description of the TSONIC input is given in the TSONIC report (ref. 3).
The output generated in TSONIN can in general be directly submitted to the TSONIC
program, However, the output should be inspected before doing so, because slight
changes are sometimes required, depending upon how the user wishes to run the TSONIC
program. These changes are described in part I.
Along each output streamline, TSONIN obtains the upstream and downstream flow
conditions T_, p_, _, and (rV0) ° with calls to TIPF, RHOIPF, LAMDAF, andRVTHTA.
LININT calls are then used to obtain all the variables required to calculate blade-to-
blade streamsheet thickness b, as well as loss distribution along the streamsheet. The
thickness b is obtained from
b= W
( PWm)av rB
Then TSONIN calculates the blade surface geometry on blade-to-blade stream sur-
faces by a method described in reference 10. This process is complicated by the fact
that leading- and trailing-edge radii are not used by MERIDL and have to be generated
by TSONIN within the blade surface envelope. The origin for 0-coordinates for TSONIC
is at the center of the leading-edge radius. Since the leading-edge radius is not known
at the outset, 0-coordinates are initially calculated from the intersection of the mean
camber line with the leading edge (appendix E). After the leading-edge radius has been
determined, A0, the difference in 0 from the intersection of the mean camber line with
the leading edge to the center of the leading-edge radius, is calculated and subtracted
from all calculated blade surface 0-coordinates. The technique used to generate the
blade leading- and trailing-edge radii and calculate A0 are described in appendix E.
Subroutine TSONIN calculates the blade surface coordinates for each point where the
41
meridional streamline is intersected by a vertical orthogonal mesh line, as explained in
appendixE. If the blade envelopehas no thickness at the leading or trailing edge,
TSONINgives it a leading-edgediameter equal to one-tenth of 1 percent of meridional
chord. Any surface points too close to the leading- or trailing-edge points are then
omitted from the set of surface coordinates.
Then TSONINcalculates leading- andtrailing-edge radii within the surface envelope
as described in appendixE. The points of tangency of the radii with blade surfaces, and
the tangency angles, are also obtained. The tangencypoints are then made the first and
last points on each of the surfaces, and points outside of these or too close to these are
excluded. All 0-coordinates are then shifted to TSONIC section origin (see appendix E).
Finally, TSONIN calculates r-coordinates for each surface point, surface slopes,
second derivatives, and curvatures and prints this information for both blade surfaces.
This process is repeated for each streamline.
Subroutine TVELCY
Next, _Wm/_m and _W0/_m are calculated. These are calculated from the
partials with respect to s and t by using the angle ot - _. Since the calculations are
based on the reduced-mass-flow values of W m and WO, the result must be divided by
REDFAC to obtain the full-mass-flow values.
After statement 55, variables are initialized for the main loop on vertical mesh
lines. To start, I=0andINCR= 1.
Statement 60 is the beginning of the main loop that ends at statement 290. The main
loop starts at the upstream boundary and solves the velocity-gradient equation for each
vertical mesh line. If there are blades, the procedure is to move downstream to each
of the vertical mesh lines in sequence until the blade leading edge is reached. At this
time, LINDV is called to make incidence corrections to _ for a short distance beyond
the leading edge, as described in appendix F of part I. After all leading-edge correc-
tions to _ are made, there is a jump to the downstream boundary. Then the procedure
is to move upstream to the blade trailing edge, at which time TINDV is called to make
deviation corrections to 8. The program then proceeds upstream until a solution has
been obtained for every vertical mesh line.
42
55 |
I loop(I
Initialize
- O;
variables
INCR -for
1) outer __
Yes
JL Yes
_c'i-_ atfeting
age 1 Cfomlrrect
1_ at trailing edge
I for all affectedmesh points
I on presenthorizontal
J meshline
J r all affectedmesh points
present horizontal
esh line
43
_ %_,,_teL.. J
arrays for _), - _r)_ r
I Cveallc_t-gr_dtaenn_
fu_tri°n I
15o
._ calculatemass flow
Solvevelocily-gredient equation;
Yes ,
Yes Iterations)
O_K? No (over1000
250 _, (choked)
Checkchange in
streamfunction "=
t 23O
UpdatePloss Terminatecalculations for
meshline and setindicator
TI' Pi' _', and
for mesh-tlne output only
(rVeto tomit streamline and
station-line output)
Yes _ ®
44
(_)_ Yes ?
ResetItoMM+l J
if le_ing-edgecorr-I
ectionsto (_ have J
justbeencompleted I
No
J Print
message
final"CHOKED"
If required__._(_
Figure
17.- Concluded.
At statement 60, INCR is added to I to determine the next vertical mesh line. INCR
is 1 at the start. After all incidence corrections to /3 are made, INCR is changed to -1.
Then the solution will be found at the downstream boundary (I = MM) and I will decrease.
The initial estimate of W on the hub (WHUB) is set equal to the reduced-mass-flow
value for W divided by REDFAC. The first inner DO loop to statement 80 calculates
coefficients a, b, and d for the velocity-gradient equation (A7) of part I. These coef-
ficients are calculated by equations (AS) to (A10) of part I. The initial arrays for whirl,
temperature, and density are calculated-at the same time. In this same loop a check is
made to see if LINDV or TINDV should be calledto make incidence or deviation correc-
tions to /3. After the DO loop to statement 80, INCR will be set to -I if allthe incidence
corrections have been made.
45
The outer iteration for a given vertical mesh line beginsat statement 90. The first
inner loop here calculates coefficient c for the velocity-gradient equation from equation
(A9) or (A10) of i)art I, as well as 2w)_ - (_r) 2, 2CpTi,f and cos(_ - _o)rB at each mesh
point. The next DO loop to statement 130 calculates coefficients e and f from equa-
tion (All) of part I.
At statement 140, IND is set to 1 to indicate the beginning of the inner iteration pro-
cedure. Each inner iteration then begins at statement 150. First, initial values are set.
The numerical solution of the velocity-gradient equation and the mass-flow integration
are done in the DO 200 loop. Trial values of WHUB are used in the velocity-gradient
equation, until the solution obtained results in the input mass flow across the vertical
mesh line. The first iteration will use the value calculated by the second statement after
statement 60. Later iterations will use estimated values calculated by CONTIN. Once
WHUB is specified, the numerical solution to the velocity-gradient equation is calculated
by the Heun method (ref. 7). The equations used in the Heun method for this case are
w)*1 + w**
j+l average of two estimates for Wj+ 1
Wj+ 1 = 2
where (dW)j (eq. (A7) of part I) is evaluated at the jth mesh point fromhub with the
,
W = Wj and where (dW)_.l,. is evaluated at the j + 1 mesh point with W = Wj+ 1. At the
same time that the solution of the velocity-gradient equation is being calculated, the
mass-flow integration is also being calculated by trapezoidal integration of
The inner iteration ends when the velocity-gradient solution gives the correct mass flow
in this equation (or if the choking mass flow is less than the input mass flow). If the cor-
rect mass flow is not obtained in 100 iterations, an error message and debug informa-
tion are printed, and the program goes on to the next vertical line.
After the end of the inner iteration, at statement 250, the new stream-function
values are compared with the previous outer iteration; if there is a change of more than
0.01 percent, the inner iteration will be repeated (set REPEAT = . TRUE. ). Then the
46
PLOSS array is updated by calling LOSSTV, and arrays of TI, pl, )., and (rVo) ° are all
adjusted to new values. At this point there will be another outer iteration if the solution
has not converged and there are less than 1000 total iterations. If there are over 1000
total iterations for any vertical mesh line, the calculation for that mesh line is termi-
nated. After the termination Of the outer iteration, error messages are printed if there
is choking or if a converged solution cannot be fou;_d. If INCR = 1, the program moves
downstream to the next vertical line. At the appropriate point the procedure shifts to
the downstream boundary and moves upstream until all vertical mesh lines have had a
solution. This may involve redoing some vertical mesh lines, since the deviation re-
gion could extend to a vertical mesh line that crossed the incidence region.
After all mesh lines have been solved, a final choking message is printed if any
vertical mesh line was choked. Control is then returned to the main program.
Subroutine LINDV
These four routines are similar. Their purpose is to calculate one of the free-
stream quantities as a function of stream function. Interpolation is by means of a spline-
fit curve. All these subroutines have an alternate entry point for initialization. The
initializing call results in a SPLINE call to calculate the coefficients for the spline fit.
If the free-stream quantities are not given as input as a function of stream function (i. e.,
if LSFR = 1), the stream function is first estimated and later iterated to be adjusted to
the correct stream-function value. These adjustments to the stream function (SFIN
and SFOUT) are done in LAMDAF and RVTHTA.
The input argument for all these subroutines is SF, which is the value of the stream
function.
47
Subroutine CONTIN
When the parabolic curve is close to a straight line, equation (G13) is used instead
of the quadratic formula. The reason for this is explained in appendix G.
Figure 19 illustrates the procedure for a typical case. On the first call to CONTIN,
IND = 1 and YCALC corresponding to XEST is furnished by the calling program. Sup-
pose that YCALC is less than YGIV and that the subsonic solution is requested. Then
XEST becomes XORIG, and YCALC becomes Y(1) in figure 19. XORIG will be the origin
for the curve fitting so that X(1) = 0 in this case. Next CONTIN increases XEST by
XDEL. Then a return is made to the calling program to obtain the YCALC that corre-
sponds to this value of XEST. On the second call to CONTIN, the new value of YCALC
becomes Y(2) and XEST - XORIG becomes X(2), as indicated in figure 19. Subroutine
CONTIN increases XEST by XDEL again, and a return is made to obtain YCALC for the
third time. On the third call to CONTIN, the new value of YCALC becomes Y(3) and
XEST - XORIG becomes X(3). This gives the three points shown in figure 19. The
curve shown represents the true curve of YCALC against XEST.
At this time, a check is made to determine whether the solution is within the range
of the three points obtained. If not, additional points are calculated, and the three
points are shifted as required. For example, in figure 19 a shift to the right is re-
quired. In this case, point 2 would become point 1, point 3 would become point 2, and
XEST would be increased by XDEL. This procedure is repeated until either the solution
48
10
90t-
Parabola
.f
Nextpoint very closeto
to right [_ND = 2
straight line
call
First f 2O Usepredicted I -
Next point solution if it
to left is within range J
IND = 6
IND = 2 30
Solution --,,.--
Nextpoint
IND = 6 predicted, but
to right improvement
11o t
call
Second{
! needed
40
IND - 3,
Next point
to left Solution
predicted, but
left shift
120
required
Third
call
,oThird point
at right ] =5
130
Solution
Third point predicted, but
atleft right shift
requ ire(]
t, =4
t70 I_
Goto 120 I-
Choked; predict
or 130 if solution I ---
solution; shift
is not in range I
I if necessary
t =7
°Fit parabola;
predict solution
p =
IND = 7
Verify choking _
150 .,
IND = l0 (choked)
or choking
10Oth
call No solution
160
= 11(nosolution)
49
TABLE IV. - SIGNIFICANCE OF IND IN VARIOUS
CALLS TO CONTIN
YGIV-
Y(3)
Y(2)
S \
/
Y(li
-_"_
XDELF'-
-,"-
XDELF,,-,
I
×ORIG
5O
,--True
curve
l
YGIV
.____ YCALC
×t,2)
Y(1)-----_ '
Jl
X(I)
or the maximum Point is within the range of the three points obtained.
Since the curve represents mass flow as a function of the velocity at some point,
the curve will be of the type shown. The maximum point on the curve is the choking
mass flow. This type of curve is approximated well by a quadratic curve. After it has
been determined that a solution is within the range of the three points (i. e.,
Y(1) _< YGIV _< Y(3) for a subsonic solution), a parabola is fitted through the three
points. This situation is illustrated in figure 20. The next value of XEST is determined
by the point where the parabolic curve intersects the YGIV linel Then the return is
made to obtain YCALC. If YCALC is sufffcientiy close to YGIV, this will be the solu-
tion. Otherwise, CONTIN is called again, XEST - XORIG becomes X(2), YCALC be-
comes Y(2), and the procedure is repeated (as many as 100 times) until YCALC is suf-
ficiently close to YG1V.
The detailed operation of subroutine CONTIN is given in figure 18 and table IV.
The calling statement for CONTIN is
5!
JZ determines whether subsonic or supersonic solution will be obtained:
JZ = 1, subsonic solution
JZ = 2, supersonic solution
IND used to control next iteration in CONTIN and to indicate when a choked solution
is found or when no solution can be found (table IV)
NCALL number of times CONTIN has been called for a given case
Subroutine PABC
Subroutine INRSCT
52
plied to IN1RSCT as a funcfion of x
y = f(x)
x = g(y)
midway between the end points for f(x). This value is Xl, from which Yl and slope s1
are calculated by SPLINT. The calculated Yl is then used as input to SPLINT for g(y).
From this SPLINT call, x 2 and s 2 are calculated, as shown in figure 21. The inter-
section point of the two slopes is calculated from
SlS2(X 2 - Xl)
X c = X2 +
1 -SlS 2
Sl(X 2 - x 1)
Yc =yl +-
1 -SlS 2
x * g(y)
y - fix)
• X
53
Then x c becomes x 1 for the following iteration of this process.
To check convergence of this process, the distance is calculated between each pair
of intersection points Xc, Yc for adjacent iterations. When this distance becomes less
than the tolerance, an exit is made from INRSCT. Failing to meet the tolerance in
20 iterations causes an error message to be printed.
The calling statement for subroutine INRSCT is
Subroutine LININT
Subroutine LININT locates the point Xo, Yo in a two-dimensional mesh with coor-
dinates stored in the x- and y-arrays. Then the value of z o at Xo, Yo is interpo-
lated from the z-array values corresponding to the x- and y-arrays. Figure 22 is a
flow chart for LININT.
A typical mesh is shown in figure 23. The mesh need not be orthogonal; but it must
consist of two sets of lines, with one set running more or less horizontally (never ver-
tically) and the other set running more or less vertically (never horizontally). The
number of vertical lines is NX, and I denotes the number of the line (running from 1 at
the left to NX at the right). The number of horizontal lines is NY, and J denotes the
number of the line (running from 1 at the bottom to NY to the top). The lines between
mesh points are assumed to be straight lines.
54
Chanqe I or J
if necessary
10
alculate
diredion to move
to quadrilateral
20 Yes
IJEX o 1
Check for
Computeconstants
{Gg)
110
Error
message
-4ac<O?
'Yes
No
Computeboth
FFis setto
correct root
Yes
FX " FF
cc
tor eq. (GIO)by
Compute70
interchanging (:or
Return
55
NX: 8
At the outset, some value of I and J must be specified. Any value within the pre-
scribed limits is legal. On repeated calls to LININT, usually the value from the pre-
ceding call is used. The values of I and J desired are the numbers shown at the bottom
of figure 23. In this figure, I = 4 and J = 3. The procedure is to check to see on which
side of each of the four boundary lines the point lies. The variables ABOVE and RIGHT
are used to indicate the position. ABOVE = -1 indicates that the point is below the bot-
tom line; ABOVE = 0, that the point is between the bottom and top lines; and
ABOVE = 1, that the point is above the top line. Similarly, RIGHT = -1 indicates that
the point is to the left of the left line; RIGHT = 0, that the point is between the left and
right lines; and RIGHT = 1, that the point is to the right of the right line. Thus, when
ABOVE = RIGHT = 0, we have the correct mesh region. If not, I and/or J are incre-
mented by plus or minus 1 to move to the proper adjacent region. In this way, even-
tually the proper region will be found. If the point lies entirely outside the region de-
fined, the nearest mesh region to the point Xo, Yo will be found. In this case, extra-
polation is required, and the variable EXTRAP is used to indicate the d_ection of
extrapolation. EXTRAP is dimensioned 2. EXTRAP(1) corresponds to ABOVE, and
EXTRAP(2) to RIGHT.
After the proper mesh-point region is found, interpolation between the function
values at the four corners is used. The method is described in appendix G. First, the
quadratic coefficients are calculated by equation (GS) or (G10). Then, the quadratic
equation (GT) or (G9) is solved either by the quadratic formula or by the binomial ex-
pansion, equation (G13), as explained in appendix G.
The same coding is used to calculate both fx and fy. After these values are ob-
tained, equation (G14) is used to calculate the interpolated value of z o.
The calling statement for LININT is
56
CALL LININT(X, Y, Z, NX, NY, NDIMX, NDIMY, X0, Y0, Z0, I,J)
X0 x-coordinate of interpolationpoint
Y0 y-coordinate of interpolationpoint
I : initial guess at number of vertical mesh line to the left of (X0, Y0)
ABOVE integer, 1 indicates that (X0, Yo) is above the current I, J region, 0 within,
and - 1 below
FF
fx or fy
57
FX fx
FY fy
F1 (-b-Cb 2- 4ac)/2a
F2 (-b+ _/b2 - 4ac)/2a
IJEX indicator, first or secondpass through coding to Calculate fx or fy
IN new value for I
JN new value for J
RIGHT integer, 1 indicates that X0, Y0 is to the right of the current I, J region,
0 within, and -1 left
Y01 Y01
Subroutine ROTATE
58
The input variables for ROTATE are
Subroutine SPLINE
Subroutine SPLINE calculates the first and second derivatives of a cubic spline
curve at the spline points. SPLINE solves a tridiagonal matrix given in reference 11
to obtain the coefficients for the piecewise cubic polynomial function giving the spline-
fit curve. The SPLINE routine is based on the end-point condition that the second
derivative at either end point is one-half that of the next spline point.
The calling statement for SPLINE is
X array of ordinates
59
The output variables for SPLINE are
Subroutine SPLINT
Subroutine SLOPES
6O
The input arguments for SLOPES are
X array of ordinates
Subroutines SPLISL and SPINSL are the same as SPLINE and SPLINT, respectively,
except that the end condition is a specified end-point slope. The input and output vari-
ables are the same, but with two added input variables, Y1P and YNP, which are the
slopes at the first and last spline points.
Plotting Subroutines
There are four subroutines that do the plotting for MERIDL: INPLOT, MEPLOT,
SLPLOT, and SVPLOT. In addition, another subroutine, PTBDRY, is called by
MEPLOT to calculate hub and shroud, and leading- and trailing-edge boundaries. The
plotting routines use the NASA Lewis in-house microfilm plotting package described
in reference 12. These five routines are self-contained and can easily be removed from
MERIDL without disturbing the rest of the calculations. On the other hand, if the user
wants to obtain plots, he can code his own plotting routines by referring to the program
listing which follows and consulting reference 12 to determine the functions of the vari-
ous plotting calls.
MAIN DICTIONARY
The main dictionary for MERIDL is given in this section. It contains the definitions
of variables for all the principal subroutines (from INPUT to RHOIPF, see table of
contents) of the program. The remaining subroutines (CONTIN or SPINSL) are of a
general-purpose nature and have their own local dictionaries included in their descrip-
tions.
61
All important variables are included in the main dictionary. These include all
COMMON variables, any dimensioned variables in the subroutines, and all important
undimensioned variables. Only locally used undimensioned variables of minor impor-
tance are not included.
The names of all dimensioned variables are followed by the variables that determine
what the dimensions should be. For example, the three-dimensional array A is dimen-
sioned A(4, 100,101) in the/VARCOM/COMMON but is listed as A(4, MM, MHTP1) in
the dictionary. This enables the user to easily reduce the dimension of A (and reduce the
program's variable storage) if he knows maximum limits to MM and MHTPl for his ap-
plication. See the section STORAGE REQUIREMENTS for further explanation.
The dictionary also indicates the COMMON blocks or the subroutines in which each
variable is used. Variables in COMMON are used in many subroutines. The COMMON
blocks are listed for each subroutine in table I.
MAIN DICTIONARY
62
Variablename COMMON Subroutine Description and comments
block
63
Variablename COMMON Subroutine Description and comments
block
64
Variable name COMMON Subroutine Description and comments
block
C1 COEF
c 1 (eq. (AS))
65
Variable name COMMON Subroutine Description and comments
block
CP CALCON
Cp, J/(kg) (K)
CP TIP(MHTPI) TVELCY
2CpT] _ along vertical mesh lines,
(N) (m)/kg
CPTIP LINDV
2epTl, (N) (m)/kg
66
Variable name COMMON Subroutine Description and comments
block
67
Variable name COMMON Subroutine Description and comments
block
['7
DFDM(MM, MHTP 1) VARCOM cos _ld(rVo)/dm I at orthogonal
mesh points (eq. (4)), m/sec
68
Variable name COMMON Sttb routine Description and comments
block
69
4
Variable name COMMON Subroutine Description and comments
block
7O
Variable name COMMON Subroutine Description and comments
block
71
Variable name COMMON Subroutine Description and comments
block
72
Variable name COMMON Subroutine Description and comments
block
FCHANG BLDVEL
Maximum value of change in F t at
any mesh point between any two
outer iterations
FMAX BLDVEL
Maximum new predicted value of F t
at any mesh point during an outer
iteration
FMIN BLDVEL
Minimum new predicted value of F t
at any mesh point during an outer
iteration
73
Variable name COMMON Subroutine Description and comments
block
FTT BLDVEL
Predicted value of Ft at a mesh
point
FVERT(MHTP1) BLDVEL
Temporary storage for values of rV 0
from FST array on vertical mesh
lines, m2/sec
Ill COEF
h 1 (eq. (A8), fig. 24)
74
Variablename COMMON subroutine Description and comments
block
[
IEND = 1, during first transonic
solution with all velocities
smaller than choking-mass-flow
solution
IEND = 2, during second transonic
solution with all velocities
greater than choking-mass-flow
solution
75
Variable name COMMON Subroutine Description and comments
block
76
Variable name COMMON Subroutine Description and comments
block
KNE W COEF
Updated value of k 0 (eq. (A9)) at a
(real variable) mesh point
LAMB DO NEWRHO
(rV0) o, m2/sec
(real variable)
77
Variable name COMMON Subroutine Description and comments
block
78
Variable name COMMON Subroutine Description and comments
block
79
Variablename COMMON Subroutine Description and comments
block
8O
Variablename COMMON Subroutine Description and comments
block
81
Variablename COMMON Subroutine Description and comments
block
82
Variablename COMMON Subroutine Description and comments
block
m+l. m
RATIO SOR ui /u i for use in equations (B2)
and (B3) of reference 9
S3
Variable name COMMON Subroutine Description and comments
block
84
Variable name COMMON Subroutine Description and comments
block
85
Variable name COMMON Subroutine Description and comments
block
RILOM (]VIII
TP i) LAMDAF Radii for spline fit of stream function
against radius
86
Variable name COMMON Subroutine Description and comments
block
87
Variablename COMMON Subroutine Descriptionandcomments
block
88
Variable name COMMON Subroutine Description and comments
block
RVA TVELCY
(oW)av, j cos_j cos(_-
kg/(m) (sec) ¢p)j rjBj,
RVAS TVELCY
(PW)av, j+l cos flj+l
x co s(o_- (p)j+irj+iBj+l,
kg/(m) (sec)
89
Variable name COMMON Sub routine Description and comments
block
90
Variablename COMMON Subroutine Descriptionandcomments
block
91
Variable name COMMON Subroutine Description and comments
block
92
Variable name COMMON Subroutine Description and comments
block
93
Variablename COMMON Subroutine Descriptionandcomments
block
94
Variablename COMMON Subroutine Description m_d comments
block
95
Variable name COMMON Subroutine Description and comments
block
WAS8 TVELCY
Second estimate of Wj+ 1 at next
mesh point along vertical mesh
W_.* m/see
line (eq. (5)), j+l'
WLSST(NSL) OUTPUT
_} at points along station lines where
they cross streamlines, m/see
96
Variablename COMMON Subroutine Description and comments
block
97
Variablename COMMON Subroutine Description and comments
block
98
Variable name COMMON Subroutine Description and comments
block
99
Variable name COMMON Subroutine Description and comments
block
MHTP1)
100
Variable name COMMON Subroutine Description and comments
block
101
Variable name COMMON Subroutine Description and comments
block
102
PROGRAM LISTING
C
C--MERIDL PROGRAM -- UPDATED TO JtrLy I, 1977
C--REPORTS -- NASA TND-8;43_' AND TND-SQ31, 1977
C--PROGRAM AVAILABLE FROM COSMIC -- NUMBER LEW-12129
C--FOI_ INFORMATION CONTACT : DR. T. KATSANIS (MAIL STOP 77-2) OR
C-- DR. W. MCNALLY (MAIL STOP 5-9)
C-- NASA LEWIS RESEARCH CENTER
C-- CLEVELAND, OHIO _135
C-- PHONE : (216) --_33-4000
C
C
COMMON NREAD, NWRIT,ITER,IEND,NWRT1, NWRT2,NW_T3,NWRTa,NWRT5,NWPT6
COMMON/INPUTT/GAM,AR,MSFL,OMEGA, PEDFAC, VELTOL, FNEW,DN_W,MBI,M_O,
1 MM, MHT, NBL, NHUB, NTIP, NIN, NOUT, NBLPL, NPPP, NOSTAT, NS L, NLOS_ ,
2 LSFR, LT PL, LAMVT, LROT, LBLAD,L_TE A N, ANGROT, IMESH, ISL IN E,
3 ISTATL, IPLOT, ISUPER, ITSON, IDEBUG, ZOMIN, ZOM}3T, ZOMBO, ZOMOUT,
4 ROMIN, ROMBI, ROMBO, ROMOUT , ZHIN, ZT IN, Z HOUT, ZTOUT, RHIN, RT IN, RHOUT,
5 RTOUT,TITLEI(2_) ,ZHHB(5t) ,_HUB(5_) ,ZTIP(5 _) ,RTIP(SO) ,_FIN(5¢) ,
6 RADIN(50),TIP(5O) ,PRIP(SC),LAMIN(Sr'),VTHIN(50),SFOU"(5_),
7 RADOUT(50) ,PROP(50),LOSOUT (53) ,LAMOUT(5#) ,VTHOUT(5 _) ,
8 HETALE(50) ,BETATE(50) ,ZHST(50) ,ZTST(5O) ,PHST(5 _) ,RTST(50) ,
9 FLFR (50) ,PERCRD(50) ,PERLOS (59) ,ZBL(50,_(_) ,_BL(5_,50) ,
1 THBL (50,50) ,TNBL (5_,50) ,TTBL (Sn, 50) ,THIBL (50,50) ,TH2BL (50,5_.)
COM MON/CALCON/MMM1 , MHT P1 ,CP, EXPON, TGROG, PITCH, RLEH, RL ET , RT EH, RTET,
I ZLE (50), RLE (50), ZTE (50), RTE (5_) , ZLEOM (I0 I) ,RLEOM (I,? I),
2 SLEOM(101) ,THLEOM(101),ZTEOM(I_)I),RTEOM(Itl),STEOM(Iel) ,
3 THTEOM(ICl) ,ILE(101) ,ITE(I¢I) ,ZOM(100,101),ROM(100,101) ,
SOM (100, I0 I) ,TOM (I00, I0 1), BTH (I0_, lq I) ,DTHDS (I03,101),
5 DTHDT(100,101),PLOSS(I(.O,ICI) ,CPHI(100,101),SPHI(100,1_I)
COMMON/VARCOM/A (4,100, I_I) ,UOM (I¢0, !ti) ,K (100, 101) ,RHO(100, 10 I) ,
I WSUBS (I00, I01) ,WSUBT (I00, I01) , WSUBZ ( ICO, I(_I), WSUBI_ (10_, I01),
2 WSUBS(100,101),WTH(10¢,I01),VTH(100,101),W(100,101) ,
3 ALPHA (100, I01) ,BETA (I00, I#I) , WWCR (I00, IC I) ,CURV (I0_, I_I),
4 WLSURF (I00,10 I), WTSURF(1O_,I_ 1), CAMP (I00, I_ I) ,SAMP (100, 101),
5 RHOAV (100, I01), DELRHO (100,191), FT (100, 10 I) ,DFDM (I00, I01),
6 XIOM (I00, I 0 I) ,ZETOM (I00, I_ I) , DLDH (I00, 10 I)
COMMON/SLCOM/ILS (50) ,ITS (50) ,ZSL(100,50),RSL(10O,5_),MSL(10e,50),
1 WZSL(100,50),WRSL(10C,50),WMSL(100,5D),WTH._L(100,50) ,
2 ALPSL (I00,5C) ,BETSL (I00,5£), WSL (100,50), WWCRSL (I00,50),
3 CURVSL (I00,50) ,WLSSL (190,50) ,WTSSL(100,50)
COMMON/ROTATN/ZHROT(50) ,RHROT(50) ,ZTROT(50) ,RT_OT(50) ,
1 ZLEOMR (I01) ,RLEOMR (10 I) , ZTEOMR (19 I), RTEOMR (I0 I) ,
2 ZBLROT (53,50) , RBL_OT (50,5.n), ZOMROT (I00, I01), ROMROT (I0¢, 191)
COMMON/INDCOM/NBLPC,NPPC,ZPC(51,51) ,RPC(51,51),TTPC(51,51) ,
1 THPC (51,51), DTHDZ (51,51), DTHD_ (51,51) ,BTHLE (I0 I) ,BTHTE (I0 I),
2 BTBFLE (I01) ,BTBFTE (101)
COMMON/PLTCOM/ZLRNG,ZRRNC.,RBRNG, RTRNG,ZHPLT (100) ,RHPLT(100) ,
1 ZSPLT (100) ,RSPLT(100) ,ZLPLT(le0) ,RLPLT(100) ,ZTPLT(10 n) ,
2 RTPLT (I00)
10 IEND = -I
ITER = 0
C
C--READ AND PLOT INPUT DATA
CALL INPUT
CALL INPLOT
C
103
C--GENERATE ORTHOGONAL MESH
CALL MESHO
C
C--CALCULATE ALL PRELIMINARY FIXED CONSTANTS
CALL PRECAL
C
C--PLOT ORTHOGONAL MESH
CALL MEPLOT
C
C--CALCULATE COEFFICIENTS, SOLVE DIFFERENTIAL EQUATIONS FOR STREAM
C--FUNCTION, AND COMPUTE NEW VELOCITIES AND DENSITIES
CALL INIT
20 ITER = ITER+I
CALL COEF
CALL SOR
CALL LOSSOM
CALL NEWRHO
C
C--CALCULATE AND PRINT MAJOR OUTPUT DATA
CALL OUTPUT
IF (MBI.NE.0) CALL INDEV
IF (MBI.NE.O) CALL TSONIN
C
C--PLOT STREAMLINES AND PLOT VELOCITIES
CALL SLPLOT
CALL SVPLOT
IF (IEND.LT.0) GO TO 20
IF (REDFAC. EQ.I.0) GO TO 10
C
C--OBTAIN TRANSONIC SOLUTION WITH FULL MASS FLOW
30 CALL TVELCY
REDFAC = 1.0
CALL TOUTPT
IF (MBI.NE.0) CALL PINDV
IF (MBI.NE.0) CALL TSONIN
CALL SLPLOT
CALL SVPLOT
IF (ISUPER.EQ.0.OR.ISUPER. EQ.2) GO TO 10
ISUPER = 2
GO TO 30
END
SUBROUTINE INPUT
C
C--INPUT READS AND PRINTS ALL INPUT DATA CARDS
C
COMMON NREAD, NWRIT, ITER,IEND,NWRTI,NWRT2,NWRT3,NWRT_,NWRT5,NWRT6
COMMON/INPUTT/GAM,AR,MSFL,OMEGA,REDFAC, VELTOL, FNEW, DNEW,MBI,MBO,
I MM,MHT,NBL,NHUB,NTIP,NIN,NOUT,NBLPL, NPPP,NOSTAT,NSL,NLOSS,
2 LSFR,LTPL, LAMVT,LROT,LBLAD,LETEAN,ANGROT,IMESH,ISLINE,
3 ISTATL,IPLOT,ISUPER,ITSON,TDEBUG,ZOMIN, ZOMBI,ZOMBO,ZOMOUT,
ROMIN,ROMBI,ROMBO,ROMOUT,ZHIN,ZTIN,ZHOUT,ZTOUT,RHIN,RTIN, RHOUT,
5 RTOUT,TITLEI (20) , ZHUB (50) , RHUB (50) ,ZTIP (50) , RTIP (50) ,SF IN (50) ,
6 RADIN (50) ,TIP (50) ,PRIP(50),LAMIN (50) ,VTHIN(50) ,SFOUT(50) ,
104
7 RADOUT(50) ,PROP(5_) ,LOSOUT(5_) ,LAMOU'r(50) ,VTHOUT(53) ,
8 BETALE(50) ,BETATE(=0) ,ZHST (50) ,ZTST (50) ,HHST(5'!) ,PTST(St}) ,
9 FLFR(50) ,PERCRD(50) ,PERLOS(50) ,ZBL(50,5e) ,RBL(59,5(_) ,
I THBL(50,5¢) ,TNBL(5_;,Se) ,TTBL(%_,50) ,THIBL (T0,5_ _) ,TH2BL(50,5_)
COMMON/CALCON/MMM I, MHTPI ,CP, RXPON, TGROG, P[TCH,RLE[{, RLET, R_'EH, _TET,
1 ZLE (50) ,RLE (50) ,ZTE (50) ,RTE(50) , ZLEOM (I0 I) ,RLEOM (It, I),
2 SLEOM (I01) ,THLEOM (I nl) ,ZTFOM(I¢I) ,_TEOM(I"I) ,STEOM (I_1) ,
3 THTEOM (101) ,ILE(IOl) ,ITE (ICI) ,ZOM(100,101) ,POM (100,1_) ,
4 SOM(I_0,I01) ,TOM (190,I01) ,BrH (100,101) ,DTHDS (1C0,191),
5 DTHDT (100,101) ,PLO_S (100,1_I) ,CPHI (I0 n,1_1) ,SPHT (!n _,I _1)
DIMENSION DIST(50) ,DTDS (5'_) ,ANG(5_)
REAL MSFL , LAMI N, iAMOUT, LOSOU_
C
C--READ AND PRINT INPUT DATA
C
NREAD = 5
NWRIT = 6
NWRTI = 6
NWRT2 = 6
NWRT3 = 6
NWRT_ = 6
NWRT5 = 6
NWRT6 = 6
IP READ (NREAD,105_%) (TITLEI(I) ,I=1,2_)
WRITE(NWRIT,1000)
WRITE(NWRIT,1060) (TITLEI(1) ,I=1,2 _)
READ (NREAD, 1030) GAM, AR,MSFL,OMEGA,REDFAC,VELTOL,FNEW,DNEW
IF (GAM.NE.0.) WRITE(NWRIT,IIG_)
IF (GAM.EQ.0.) WRITE(NWRTT, 11C2)
IF (REDFAC.LE.0.) REDFAC=I.0
IF (VELTOL.LE.0.) VELTOL=.nl
IF (FNEW.LF..0.) FNEW=C.5
IF (DNEW.LE.0.) DNEW=0.5
WRITE (NWRIT,104_) GAM, AR,MSFL,OMEG A, REDFAC, VELTOL, FNEW, DNEW
VELTOL = VELTOL_AMIN1 (FNEW, DNEW)
IF (FNEW.LT.I.0.OR.DNEW.LT. 1.0) WRITE(NWRIT,1105) VELTOL
WRITE (NWRIT, 1110)
READ (NREAD,1010) MBI,MBO, MM,MHT,NBL,NHUB,NTIP,N![N,NOr]T,NBLPL,
1 NPPP, NOSTAT, NSI, NLOSS
IF (MBI.EQ.0) NBL=I
WRITE (NWRIT,1020) MBI, MBO, MM,MHT, NBL, NHH_, NTIP, NIN, NOUT, NBLPL,
1 NPPP, NOSTAT, NSL, NLOSS
WRITE (NWRIT, 1120)
READ (NREAD,1010) LSFR,LTPL,LAMVT,LROT,LBLAD,LETEAN
WRITE (NWRIT,1020) LSFR, LTPL, LAMVT, LROT, LBLAD, LETEAN
ANGROT = 0.
IF (LROT.EQ.0) GO TO 15
WRITE (NW_IT, 1125)
READ (NREAD,1030) ANGROT
WRITE (NWRIT,1040) ANGROT
ANGROT = ANGROT/57.295780
15 WRITE (NWRIT,1130)
READ (NREAD, I030) ZOMIN,ZOMBI,ZOMBO,ZOMOUT,ROMIN,_OMDI,_OMBO,
1ROMOUT
WRITE(NWRIT,10_0) ZOMIN,ZOMBI,ZOMBO,ZOMOUT,ROMIN,ROMBI,_OMBO,
IROMOUT
WRITE (NWRIT, 1140)
READ (NREAD, I030) (ZHU8 (I) ,I= !, NHUB)
WRITE (NWRIT, I0_0) (Z_B(I), I=I,NH_S)
105
WRITE (NWRIT,I 150)
PEAD (NREAD, 1030) (RHUB (I) ,I=I,NHUB)
WRITE (NWRIT,1040) (RHUB(I) ,I=I,NHUB)
WRITE(NWPIT,1160)
READ (NREAD,1030) (ZTIP (1) ,I=I,NTIP)
WRITE (NWRIT,10_0) (ZTIP(I) ,I=I,NTIP)
WRITE (NWI_IT,1170)
READ (NREAD, I030) (RTIP (I) , I=I,NTIP)
WRITE (NWRIT,1O40) (RTIP (I) ,I=I, NTIP)
WRITE (NWRIT, 1180)
READ (NRFAD,103O) ZHIN,ZTIN,RHIN,RTIN
WRITE (NWBIT, I04C) ZHIN,ZTIN,_HIN,RTIN
IF (LSFR.EQ.I) GO TO 20
WRITE (NWPIT,1190)
READ (NREAD,1039) (SFIN (!) , I=I, NIN)
WRITE (NWRIT,10_0) (SFIN(1),I=!,NIN)
GO TO 3@
2(" W_ITE (NW_IT,1200)
READ (NRFAD,1030) (RADIN (I) ,I=1, NIN)
WRITE (NWRIT,1040) (RADIN(I) ,I=I,NIN)
36 WRITE (NWRIT, 1210)
READ (NREAD, 1030) (TIP(I),I=I,NIN)
WRITE (NWRIT,lg_0) (TIP (I) ,I=I, NIN)
WRITE(NWRIT,1220)
READ (NREAD,1030) (PRIP (I) ,I=I,NIN)
WRITE (NW[_IT, 10_0) (PRIP (I) , I=I,NTN)
IF (LAMVT.EQ.I) GO TO _0
WRITE (NWPIT, 1230)
READ (NREAD,1030) (LAMIN (I) ,I=1, NIN)
WRITE (NWRIT, I0_0) (LAMIN (I) ,I=1, NIN)
GO TO 50
40 WRITE (NWR!T, 1240)
READ (NREAD, I030) (VTHIN(1) ,I=I,NIN)
WRITE (NWRIT, 1040) (VTHIN(I) ,I=I,NIN)
5@ WRITE (NWRIT,1250)
READ (NREAD, I030) ZHOUT,ZTOUT,RHOUT,RTOUT
WRITE(NWRIT,10_O) ZHOUT,ZTOUT,RHOUT,RTOUT
IF (LSFR. EQ.I) GO TO 60
WRITE (NWRIT, 1260)
READ (NREAD,IC30) (S FOUT (I) ,I=1, NOUT)
WRITE (NWRIT, I040) (SFOUT(1) ,I=I,NOUT)
GO TO 70
6@ WRITE (NWRIT,1270)
READ (NREAD, I030) (RADOUT(1) ,I:I,NOUT)
WRITE (NWRIT,10_O) (RADOUT(1) ,I=I,NOUT)
7[ IF (LTPL.EQ.I) GO TO 80
WRITE (NWRIT, 1280)
READ (NREAD, I030) (PROP(1) ,I=I,NOUT)
WRITE (NWRIT, 1040) (PROP(1),I=I,NOUT)
GO TO 90
8C WRITE (NWRIT, 1290)
READ (NREAD,1030) (LOSOUT(I) ,I=I,NOUT)
WRITE (NWgIT, 1040) (LOSOUT (I) ,I=I, NOUT)
9C IF(MBI.EQ.0) GO TO 157
IF (LAMVT. EQ. I) GO TO 100
WRITE (NWNIT, 1300)
READ (NREAD,1030) (LAMOUT(I),I:I,NOUT)
WRITE (NWRIT, I040) (LAMOUT (I) ,I=I ,NOUT)
GO TO 110
106
100 WRITE (NWRIT,1310)
BEAD (NREAD,1030) (VTHOUT(I) ,I=I,NOUT)
WRITE (NWRIT,1040) (VTHOUT (1) ,I=I, NOUT)
110 WRITE (NWPIT, I 320)
DO 120 JN=I,NBLPL
READ (NREAD,1030) (ZBI(IN,JN) ,IN=I,NPPP)
120 WRITE(NWRIT,10_0) (ZBL(IN,JN) ,IN=I, NPPP)
WRITE (NWRIT, 1330)
DO 130 JN=I,NBLPL
READ (NREAD, 1030) (RBL(IN,JN) ,IN=I,NPPP)
130 WRITE(NWRIT,1040) (RBL(IN,JN) ,IN=I,NPPP)
IF (LBLAD. EQ. 2) GO TO 150
WRITE (NWRIT, 1340)
DO 140 JN=I,NBLPL
READ (NREAD,1030) (THBL (IN, JN), I N= I, NPPP)
140 WRITE(NWRIT,!6_0) (THBL(IN,JN),fN=I,NPPP)
IF (LBLAD.EQ.1) GO TO 146
WRITE (NWRIT, 1 350)
DO 145 JN=I,NBLPL
READ (NREAD,1030) (TNBL(IN,JN),IN=I,NPPP)
145 WRITE(NWRIT,1040) (TNBL(IN,JN),IN=I,NPPP)
GO TO 156
146 WRITE (NWRIT,I 352)
DO 148 JN=I,NBLPL
READ (NREAD,1030) (TTBL (IN, JN), I N= I, NPPP)
148 WRITE(NWRIT,10_0) (TTBL(IN,JN),IN=I,NPPP)
GO TO 156
150 WRITE (NW}_IT, 1354)
DO 152 JN=I,NBLPL
READ (NREAD, I030) (THIBL (IN,JN) ,IN:I,NPPP)
152 WRITE (NWRIT, 1040) (THIBL(IN,JN) ,TN=I,NPPP)
WRITE (NWRIT,1356)
DO 154 JN=I,NBLPL
READ (NREAD, I_30) (TH2BL(IN,JN) ,IN=I,NPPP)
154 WRITE (NWRIT, I040) (TH2BL(IN,JN) ,IN=I,NPPP)
156 IF (LETEAN.EQ.0) GO TO 157
WRITE (NWRIT, 1358)
READ (NREAD,1030) (BETALE(JN) ,JN=I,NBLPL)
WRITE(NWRIT,1040) (BETALE(JN) ,JN=I,NBLPL)
WRITE (NWRIT, 1 359)
READ (NREAD,1030) (BETATE(JN),JN=I,NBLPL)
WRITE(NWRIT,1040) (BETATE(JN) ,JN=I,NBLPL)
157 IF (NOSTAT.EQ.0) GO TO 160
WRITE (NWRIT, 1360)
READ (NREAD,1030) (ZHST(I) ,I=I,NOSTAT)
WRITE(NWRIT,1040) (ZHST(I) ,I=I,NOSTAT)
IF (LROT.EQ.0) GO TO 158
WRITE (NWRIT, 1365)
READ (NREAD,1030) (RHST(I) ,I=I,NOSTAT)
WRITE(NWRIT,1040) (RHST(I) ,I=I,NOSTAT)
158 _RITE (NWRIT, I 370)
READ (NREAD,I030) (ZTST(I) ,I=I,NOSTAT)
WRITE(NWRIT,1040) {ZTST{I),I=I,NOSTAT)
IF (LROT.EQ.0) GO TO 160
WRITE (NWRIT, 1375)
READ (NREAD,1030) (RTST(1) ,I=I,NOSTAT)
WRITE(NWRIT,1040) (RTST(I) ,I=I,NOSTAT)
160 IF (NSL.EQ.0) GO TO 165
WRITE (NWRIT, 1380)
READ (NREAD,I030) (FLFR(1) ,I=I,NSL)
107
WRITE(NWRIT,1040) (FLFR(I) ,I=I,NSL)
165 IF (NLOSS.EQ.0) GO TO 170
WRITE (NWRIT, 1385)
READ (NREAD,1030) (PERCRD(I) ,I=I,NLOSS)
WRITE(NWRIT,10_O) (PERCRD(I) ,I=I,NLOSS)
WRITE(NWRIT,1386)
READ (NREAD,1030) (PERLOS(I) ,T=I,NLOSS)
WRITE(NWRIT,1040) (PERLOS(1) ,I=I,NLOSS)
170 WRITE (NWRIT, 1390)
READ (NREAD,1010) IMESH,ISLINE, ISTATL, IPLOT,ISUPER,ITSON, IDEB[JG
WRITE (NWRIT, I020) IMESH, ISL INE, ISTATL, IPLOT, ISUPER, ITSON,I DEBUG
WRITE (NWRIT, 1070)
IF (MM. LE. I00. AND. MHT. LE. 10C. AND. NHUB.LE. 50. AND. NTIP. LE. 50. AND.
1NIN.LE.50.AND.NOUT. LE.50.AND. NBLPL. LE.50.AND.NPPP.LE. 50.AND.
2 NOST AT. LE. 50. AND. NSL. LE. 50. AND. NLOS S. LE. 50. AND. LSFR. GE. 0. AND.
3LSFR.LE.I.AND.LTPL.GE.0.AND.LTPL.LE.I.AND. LAMVT.GE._'. AND.
_LAMVT. LE. I.AND.LROT. GE.0.AND.LROT.LE.I.AND. LBLAD.GE.0.AND.
5LBLAD.LE.2.AND.LETEAN.GE.0.AND. LETEAN. LE.I) GO TO 180
WRITE (NWRIT, 1400)
STOP
C
C--CALCULATE MISCELLANEOUS CONSTANTS
C
180 MMMI = MM-1
MHTPI= MHT+I
EXPON= I./(GAM-I.)
CP = AR*GAM*EXPON
TGROG= 2.*GAM*AR/(GAM+! .)
PITCH= 2..3. I_ 15927/FLOAT(NBL)
MSFL = MSFL/FLOAT(NBL)
C
C--CALCULATE VALUES POR RHIN,RTIN,RHOUT, AND RTOUT
C--IF ROTATION IS NOT USED
C
IF (LROT.NE.0) GO TO 200
CALL SPLINT(ZHUB,RHUB,NHUB,ZHIN, I,RHIN, DYDX,D2_DX2)
CALL SPLENT (ZHOUT, I,RHOUT, DYDX,D2YDX2)
CALL SPLINT(ZTIP,RTIP,NTIP,ZTIN,!,RTIN, DYDX,D2YDX2)
CALL SPLENT (ZTOUT,1,RTOUT,DYDX,D2YDX2)
C
C--CALCULATE ESTIMATED UPSTREAM AND DOWNSTREAM VALUES OF
C--STREAM FUNCTION, IF RADIUS WAS GIVEN AS INPUT
C
20¢ IF (LSFR.EQ.0.AND.LAMVT.EQ.0) GO TO 320
RINSQ = RTINi*2-RHIN**2
ROUTSQ = RTOUT**2-RHOUT*'2
IF (LSFR.EQ.0) GO TO 230
IF ( RINSQ*ROUTSQ. EQ.0. ) WRITE (NWRIT, 1410)
IF (RI NSQ*ROUTSQ. EQ. 0 .) STOP
DO 210 J=I,NIN
210 SFIN (J) = (RADIN(J)'*2-RHIN**2) /RINSQ
DO 220 J=I,NOUT
220 SFOUT(J) = (RADOUT(J)**2-RHOUT_*2) /ROUTSQ
GO TO 260
C
C--CALCULATE ESTIMATED UPSTREAM AND DOWNSTREAM VALUFS OF
C--RADIUS, IF STREAM FUNCTION WAS GIVEN AS INPUT
C
23¢ DO 2_0 J=I,NIN
108
2_0 RADIN (J) : SQRT (BHIN_2+SFIN(J) _RINSQ)
DO 250 J=I,NOUT
250 RADOUT(J) = SQRT (RHOUT_*2+SFOUT (J) _RO[JTSQ)
C
C--CALCULATE ESTIMATED UPSTREAM AND DOWNSTREAM TANGENTIAL VELOCTTIES,
C--IF WHIRL WAS GIVEN AS INPUT
C
260 IF (LAMVT. EQ. 1) GO TO 290
DO 270 J=I,NIN
270 VTHIN(J) = LAMIN(J)/_ADIN(J)
IF (LSFR.EQ.I) LAMVT=I
IF (MBI.EQ.0) RETURN
DO 280 J=I,NOUT
280 VTHOUT(J) = LAMOUT(J)/RADOUT(J)
GO TO 320
C
C--CALCUL ATE ESTIMATED UPSTREAM AND DOWNSTREAM WHIRL,
C--IF TAN GENTIAL VELOCITY WAS GIVEN AS INPUT
C
290 DO 3C0 J=I,NIN
300 LAMIN(J) = RADIN(J)_VTHIN(J)
IF (MBI.EQ.0) RETURN
DO 310 J=I,NOUT
310 LAMOUT(J) = RADOUT(J)IVTHOUT(J)
C
C--CALCULATE TANGENTIAL THICKNESS, IF NORMAL THICKNESS GIVEN AS INPUT
C
320 IF (MBI.EQ.0) RETURN
IF (LBLAD.EQ.1) GO TO 370
IF (LBLAD. EQ. 2) GO TO 390
DIST(1) = 0.
DO 360 JN=I,NBLPL
DO 330 IN=2,NPPP
330 DIST(IN) = DIST(IN-I)+SQRT((ZBL(IN,JN)-ZBL(IN-I,JN))_*2÷
1 (RBL(IN,JN)-RBL(IN-1,JN))_2)
IF (LETEAN.EQ. I) GO TO 340
CALL SPLINE(DIST,THBL(I,JN) ,NPPP,DTDS, ANG)
GO TO 350
340 DTHDSL = TAN(BETALE(JN)/57.295780)/RBL(I,JN)
DTHDST = TAN(BETATE(JN)/57.295780)/RBL(NPPP,JN)
CALL SPLISL (DIST,THBL(I,JN) ,NPPP,DTHDSL,DTHDST,DTDS,ANG)
350 DO 360 IN=I,NPPP
ANG(IN) = ATAN(RBL(IN,JN)_DTDS(IN))
360 TTBL(IN,JN) = TNBL(IN,JN)/COS(ANG(IN))/RBL(IN,JN)
C
C--CALCULATE BLADE SURFACE THETA COORDINATES, IF THEY ARE NOT
C--GIVEN AS INPUT
C
370 DO 380 JN=I,NBLPL
DO 380 IN=I,NPPP
THIBL(IN,JN) = THBL(IN,JN)÷TTBL(IN, JN)/2.
380 TH2BL(IN,JN) = THBL(IN,JN)-TTBL(IN,JN)/2.
R_TURN
C
C--CALCULATE MEAN CAMBER LINE THETA COORDINATES AND TANGENTIAL THTCKNESS
C--IF SURFACE THETA COORDINATES GIVEN AS INPUT
C
390 DO 400 JN=I,NBLPL
DO ,00 IN=I,NPPP
THBL(IN,JN) = (THIBL(IN,JN) +TH2BL(IN,JN))/2.
109
_OC TTBL(IN,JN) = TH18L(IN,JN) -TH2BL(IN,JN)
PETURN
C
C--FORMAT STATEMENTS
C
1300 FORMAT (1H1//5CX,21(1H*)/50X,1H*,7X,6HMERIDL,6X,IH*/SOX,21H* Pl_O
IGRAM INPUT */50X,21 (1H*)///)
1010 FORMAT (1615)
1020 FORMAT (2X,16(2X,I5))
103 _ FORMAT (8F10.5)
1040 FORMAT (1X,8G16.7)
1050 FORMAT (20A4)
1060 FORMAT (1X,20A4)
1070 FORMAT (IHI)
1100 FORMAT (///_X,20HGENERAL INPUT DATA/7X,3HGAM,I_X,2HAR,13X,
I_HMSFL,11K,SHOMEGA,IIX, 6HREDFAC, 1_X,6HVELTOL, 10X,4HFNEW,IIX,
2_HDNEW)
1102 FORMAT (///4X,20HGENERAL INPUT DATA/TX,3HGAM, 13X,3HRHO, 13X,
14HMSFL,11X,5HOMEGA,11X,6HREDFAC,ICX,6HVELTOL,10X,4HFNEW,11X,
2_HDNEW)
11C5 FORMAT (7X,71HVELTOL HAS BEEN REDUCED BY THE MINIMUM OF FN
IEW OR DNEW TO =, 8X, 6HVELTOL/8 IX , G16.7)
1110 FORMAT (103H MBI MBO MM MHT NBL NHUB NTIP
1 NIN NOUT NBLPL NPPP NOSTAT NSL NLOSS)
112C FORMAT (47H LSFR LTPL LAMVT LROT LBLAD LETEAN)
1125 FORMAT (6X, 6HANGROT)
113C FORMAT (///4X,29HHUB AND SHROUD INPUT DATA/7X,SHZOMIN, 11X,
I 5HZOMBI,I1X,5HZOMBO,10X,6HZOMOUT,IIX,5HROMIN,IIX,5HROMBI, 11X,
2 5HROMBO,10X,6HRCMOUT)
1140 FORMAT (7X,11HZHUB ARRAY)
1150 FORMAT (7X,11HRHUB ARRAY)
1160 FORMAT (7X,11HZTIP ARRAY)
117C FORMAT (7X,11HRTIP ARRAY)
118C FORMAT (///4X,21HUPSTREAM INPUT DATA/7X,4HZHIN, 11X,4HZTIN,
I 11X,_HRHIN,11X,4HRTIN)
1190 FORMAT (7X,IIHSFIN ARRAY)
12C0 FORMAT (7X,12HRADIN ARRAY)
1210 FORMAT (7X,10HTIP ARRAY)
1220 FORMAT (7X,IIHPRIP ARRAY)
123_ FORMAT (7X,12HLAMIN ARRAY)
12_0 FORMAT (7X, 12HVTHIN ARRAY)
1250 FORMAT (///_X,23HDOWNSTREAM INPUT DATA/7X,5HZHOUT,10X,5HZTOUT,
I 16X,SHRHOUT, 10X,5HRTOUT)
1260 FORMAT (7X,12HSFOUT ARRAY)
1270 FORMAT (7X,13HRADOUT ARRAY)
1280 FORMAT (7X,IIHPROP ARRAY)
1290 FORMAT (7X,13HLOSOUT ARRAY)
1300 FORMAT (7X,13HLAMOUT ARRAY)
1310 FORMAT (7X,13HVTHOUT ARRAY)
1320 FORMAT (///4X,54BBLADE MEAN CAMBER LINE AND THICKNESS INPUT
I DATA/7X,10HZBL ARRAY)
1330 FORMAT (7X,10HRBL ARRAY)
13LI.0 FORMAT (7X,11HTHBL ARRAY)
1350 FORMAT (7X,IIHTNBL ARRAY)
1352 FORMAT (7X,11HTTBL ARRAY)
1354 FORMAT (7X,12HTHIBL ARRAY)
1356 FORMAT (7X,12HTH2BL ARRAY)
1358 FORMAT (7X,13HBETALE ARRAY)
110
1359 FORMAT (7X,13HB_TATE ARPAY)
1360 FORMAT (///_X,31HOUTPUT STATION LOCATION D&TA/7X, i iHZHST ARRAY
I)
1365 FORMAT (7X,11HRHST ARRAY)
1370 FORMAT (7X,11HZTST ARRAY)
1375 FORMAT(7X,IIHRTST ARRAY)
1380 FORMAT(///4X,4CHOUTPHT STREAMLINE FLOW FRACTION DATA/7X,11HFL
IFR ARRAY)
1 385 FORMAT (///_X,28HDISTRIBUTION OF LOSS DATA/7X,13HPERCRD ARRAY)
1 386 FORMAT (7X,13HPERLOS AFRAY)
1390 FORMAT (///4X,28HOUTPUT PRINT CONTROL DATA/6X,_8HIMESH ISLINE
IISTATL IPLOT ISUPER ITSON IDE_UG)
140_ FORMAT (1HI,10X,9_HMM,MHT, NHUB,NTIP,NIN,NOUT,NBLPL, NPPP,NOSTAT, NSL
I,NLOSS,LSFR,LTPL,LAMVT,LROT,LBLAD,OR LETEAN/13X,25HIS TOO LARGE OR
2 TOO SMALL)
1_10 FORMAT (1H1,1_X,74HWHEN UPSTREAM AND DOWNSTREAM INPUT DATA ARE GIV
IEN AS A FUNCTION OF RADIUS,/11X,86HTHERE MUST BE A CHANGE IN VALUE
2 BETWEEN RHIN AND RTIN AND ALSO RETWEEN _HOUT AND RTOUT/I1X,57HAND
3 A CORRESPONDING CHANGE IN THE RADIN AND RADOUT ARRAYS)
END
SUBROUTINE INPLOT
C
C--INPLOT PLOTS THE UPSTREAM AND DOWNSTREAM INPUT FLOW VARIABLES
C--AS WELL AS THE INPUT BLADE SECTIONS FROM HUB TO SHROUD
C
COMMON/INPUTT/GA_,AR,MSFI,OMEGA, RED=AC,VELTOL,FNEW,DNEW,MBI,MBO,
1 MM, MHT, NBL, NHUB, NTIP, NIN, NOUT, NBLPL, NPPP, NOSTAT, NSL, NLOS'_ ,
2 LSFR, LTPL, LA_VT, LROT, LBLAD, LF,TEA N, ANGROT, IMESH, ISL INE,
3 ISTATL, I PLOT, ISUP ER , ITSON , IDEBUG, ZOMIN, ZOMBI, ZOMBO, ZOHOUT,
4 ROMIN, ROMBI , RCMBO, ROMOUT , ZHIN , ZT IN, ZHOUT, ZTOUT, R BIN, RTI N, RHOUT,
5 RTOUT,TITLEI(2O) ,ZHUB(5_) ,RHUB%_0) ,ZTIP(5n) ,PTYP(5 n) ,SFIN(50) ,
6 PADIN (50), TIP (50) ,PRIP (50) ,LAMIN (5_) , VTHIN (50) ,SFOHT (5n) '
7 RADOUT (50) ,PROP(50) ,LOSOUT (5") ,LAMOUT (50) ,VTHOUT(50) ,
8 BETALF (5C), BETATE (50) ,ZHST (50) ,ZTST (50) ,RHST (50) ,RTST (50) ,
9 FLFR (50) ,PERCRD (50) ,PERLOS (50) ,ZBL(50,50) ,RBL(5O,50) ,
1 THBL (50,50) ,TNBL(50,50) ,TTBL (50,50) ,THIBL (5_,50) ,TH2BL(50,50)
COMMON/CALCON/MMMI , MHT PI ,CP,EXPON, T GROG, PITCH, RLEH, RL ET, PT EH, RTE_',
I ZLE (50) , RLE (50) ,ZTE (5_), RTE (50), ZLEOM (I0 I) ,RLEOM (I0 I),
SLEOM (101) ,THLEOM (101) ,ZTF, OM(101_)_,RTEOM(101) ,ST_OM (101) ,
THTEOM (I01) ,ILE (I01) ,ITE (101) ,ZOM (I00, I01) ,ROM (100, I01) ,
SOM(100,101),TOM(I_0,101),BTH(10_,I01) ,DTHDS (100,101),
DTHDT(100,101) ,PLOSS (100,I01) ,CPHI (I00,I01) ,SPHI (I00,I0 1)
DIMENSION MBL (5_,59) ,RTHBL (50,50) ,RTHIBL(50,5r)) ,RTH2BL(50, 50) ,
I RRTHBL (50, 50) ,RTH3BL (50,50),RTH_BL(50,50) ,
2 PLTX(101),PLT¥(101) ,DYDX (101) ,D2YDX2 (101),
3 TITLI (9) ,TITL2(8) ,TITL3 (5) ,TITL_ (9),TITL5(8) ,TITL6 (9) ,TITLT(6) ,
TITL8(9) ,TITL19 (13) ,TITL11(6) ,TITL12 (6),TITL13(_),
5 TITLI_ (2),TITL15 (5) ,TITL16 (5) ,TITL17 (5) ,TITL18 (5) ,TITL19(5),
6 TITL20 (5) ,TITL21(5) ,TITL22(5) ,TITL2_(10) ,TITL25(9) ,TITL26 (7) ,
7 TITL27 (2),TITi28(2)
REAL MBL, LA MIN, LAMOUT, LOSOUT, LRNG
DATA TITLI/O INLg,'ET A','BSOL','UTE ',gTOTA','L TEI,v-MPERI,IATUR '
I,'E ,/
DATA TITL2/'INLE','T AB','SOLU','TE T','OTAL°, ° PREw,'SSUR', 'E '
111
/
DATA TITL3/'INLE','T AB',oSOLU','TE _','NI_L'/
DATA TITL_/'INLEm,IT AB'•tSOLU','TE T','ANGE','NTIA','L YE','LOCI'
,'T¥ '/
DATA TITL5/'OUTLV,'ET A','BSOL','UTE ','TOT_','L PN','ESSU','RE '
/
DATA TITL6/'OUTL','ET A','BSOL','UTE ','TOTA',°L PR','ESSrI','RE L'
,'OSS '/
DATA TITL7/WOUTLI,'ET A','BSOL','UTE ','WHI_V,IL '/
DATA TITLS/IOUTLI,'ET A',IBSOLI,'UTE ','TANG',_ENTI','AL V',vELOC '
,'IT¥ '/
DATA TITLI0/'INPUV,'T BL','ADE v,ISECTV,_IONS','$CI$','L2FE',
112
PLTY(ICI) = RADIN(NIN)
DEL = (RADIN(NIN)-RADIN(1))/100.
DO 30 J=2,100
30 PLTY (J) = PLTY(J-I) ÷DEL
BRNG = AMIN| (RADIN(I) ,RADOUT(1))
TRNG = AMAXI(RADIN(NIN),RADOUT(NOUT))
40 CALL LRANGE (0.,0.,BRNG,TRNG)
C
C--PLOT INLET ABSOLUTE TOTAL TEMPEI_ATURE
C
IF (LSFR.EQ.O) CALL SPLINT(SFIN,TIP,NIN,PLTY,101,PLTX,DYDX,
1D2YDX2)
IF (LSFR.EQ.I) CALL SPLINT(RADIN,TYP,N[N,PLTY, 101,PLTX, DYDX,
ID2YDX2)
CALL LRMRGN (I. 0,1.0,2.0,1. O)
CALL LRGRID (I, I, 11.0, 11.0)
CALL LRCHSZ(_)
CALL LRLEGN (TITL1,36,C,I.0,0.5,0.0)
CALL LRCHSZ(2)
CALL LRLEGN (TITL15,20,0,_.C,1.3,0.9)
IF (LSFR.EQ.0) CALL LRLEGN(TITL13,16,1,0.2,4.2,0._)
IF (LSFR.EQ.1) CALL LRLEGN (TITL14,8,1,0.2,a.7,0.0)
CALL LRCHSZ (_)
CALL LRCURV(PLTX,PLTY, 101,2,SYM,O.0)
IF (LSFR.EQ.0) CALL LRCURV(TIP, SFIN,NIN,4,SYM,1.0)
IF (LSFR.EQ.I) CALL LRCURV(TIP,RADIN, NIN,_,SYM, I.0)
C
C--PLOT INLET ABSOLUTE TOTAL PRESSURE
C
IF (LSFR.EQ .0) CALL SPLINT(SFIN,PRIP,NIN,PLTY,101,PLTX, DYDX,
ID2YDX2)
IF (LSFR. EQ .I) CALL SPLINT(RADIN,PRIP,NIN,PLTY, 101,PLTX,DYDX,
ID2YDX2)
CALL LRLEGN (TITL2,32,:_,I.6,0.5,0.0)
CALL LRCHSZ (2)
CALL LRLEGN (TITL16,20,0,_.0,1.3,O.0)
IF (LSFR.EQ.0) CALL LRLEGN(TITL13,16,1,0.2,_.2,0.0)
IF (LSFR.EQ.I) CALL LRLEGN(TITLI_,8,1,C.2,_.7,0.0)
CALL LRCHSZ (_)
CALL LRCURV(PLTX,PLTY, 101,2,SYM,0.0)
IF (LSFR.EQ.0) CALL LRCURV(PRIP,SFIN, N[N,4,SYM, I.9)
IF (LSFR. EQ.I) CALL LRCURV(PRIP,RADIN,NIN,_,SYM,I.0)
C
C--PLOT I NLET ABSOLUTE WHIRL
C
IF (LAMVT.EQ.I) GO TO 80
IF (LSFR.EQ.0) CALL SPLINT(SFTN,LAMIN, NIN,PLTY, 101,PLTX,DYDX,
ID2YDX2)
IF (LSFR.EQ.I) CALL SPLINT(RADIN,LAMIN, NIN, PLTY,_01,PLTX,DYDX,
ID2YDX2)
CALL LRLEGN (TITL3,20,_,2.5,0.5,0.0)
CALL LRCHSZ (2)
CALL LRLEGN (TITL17,20,0,4.0,1.3,0.0)
IF (LSFR. EQ.0) CALL LRLEGN(TITL13,16,1,0.2,_.2,0.0)
IF (LSFR.EQ.I) CALL LRLEGN(TITLI_,8,1,0.2,_.7,0.0)
CALL LRCHSZ (4)
CALL LRCURV(PLTX,PLTY, 101,2,SYM,_.0)
IF (LSFR.EQ.0) CALL LRCURV(LAMIN,SFIN,NIN,_,SYM,I.O)
IF (LSFR.EQ.I) CALL LRCURV(LAMIN,RADIN,NIN,_,SYM,I.0)
113
GO TO 110
C
C- -PLO T INLET ABSOLUTE TANGENTIAL VELOCITY
C
8C IF (LSFR.EQ.0) CALL SPLINT(SFIN,LAMIN,NIN,PLTY,1OI,PLTX,DYDX,
ID2YDX2)
IF (LSFR.EQ.I) CALL SPLINT(RADIN,LAMIN,NIN,PLTY,101,PLTX,DYDX,
ID2YDX2)
CALL LRLEGN (TITL_,36,t, !.1,0.5,0.0)
CALL LRCHSZ (2)
CALL LRLEGN (TITL18,20, O, 4. @ , I . 3, C. 0)
IF (LSF_.EQ.0) C_LL LRLEGN(TITL1_,16,1,0.2,U.2,0.0)
IF (LSFR. EQ.I) CALL LRLEGN(TITLI'4,8,1,0.2,4.7,0.0)
C_LL LRCHSZ(4)
RINSQ = RTIN*_2-RHIN**2
DO IC0 J=1, 101
IF (LSFR.EQ.O) PLTX(J)=PLTX(J)/SQRT(RHIN_*2+PLTY(J)_RTNSQ)
16C IF (LSFR.EQ.1) PLTX (J)=PLTX (J)/PLTY (J)
CALL LPCURV (PLTX,PLTY, I0 I, 2 ,SYM, 0.0)
IF (LSFR.EQ.0) CALL LRCURV(VTHIN,SFIN,NIN,4,SYM, I.0)
IF (LSFR. EQ.I) CALL LRCURV(VTHIN,R_DIN,NIN, 4,SYM,I.O)
C
C--PREPA[_E FOR PLOTTING OF OUTLET CONDITIONS
C
11C IF (LSFR.EQ.I) GO TO 13_
PLTY(1) = SFOUT(1)
PL"_Y (101) = SFOUT(NOUT)
DEL = (SFOUT(NOUT)-SFOUT(1))/103.
DO 120 J=2, 100
120 PLTY(J) = PiTY (J-l) +DEL
GO TO 150
130 PLTY(1) = RADOUT(1)
PLTY (101) = RADOUT(NOUT)
DEL = (RADOUT(NOUT)-RADOUT(1))/100.
DO 140 J=2,100
14C PLTY(J) = PLTY(J-I)+DEL
C
C--PLOT OUTLET ABSOLUTE TOTAL PRESSURE
C
150 IF (LTPL.EQ.!) GO TO 170
IF (LSFR.EQ.0) CALL SPLINT(SFOUT,PROP,NOUT,PLTY,101,PLTX,DYDX,
ID2YDX2)
IF (LSFR.EQ.1) CALL SPLINT(RADOUT,PROP,NOUT,PLTY,101,PLTX,DYDX,
ID2YDX2)
CALL LRLEGN (TITL5, ]2,_, I .5, 0.5,0. @)
CALL LRCHSZ (2)
CALL LRLEGN (TITL 19,20,0, _.0, I. 3,0.0)
IF (LSFR.EQ.0) CALL LRLEGN(TITL13,16,1,0.2,U.2,n.0)
IF (LSFR.EQ.I) CALL LRLEGN(TITL14,8,1,0.2,4.7,0.0)
CALL LRCHSZ(4)
CALL LRCURV (PLTX, PLTY, I0 1,2 ,SY_, 0.0)
IF (LSFR.EQ.0) CALL LRCURV(PROP,SFOUT, NOUT, 4,SYM,I.@)
IF (LSFR.EQ.I) CALL LRCURV(PROP, RADOUT, NOUT,_,SYM,I.0)
GO TO 190
C
C--PLOT OUTLET ABSOLUTE TOTAL PRESSURE LOSS
C
170 IF (LSFR.EQ.0) CALL SPLINT(SFO_T,LOSOUT,NOUT,PLTY,ICI,PLTX,DYDX,
ID2YDX2)
IF (LSFR.EQ.I) CALL SPLINT(RADOUT,LOSOUT,NOUT,PLTY,101,PLTX,DYDX,
114
1D2YDX2)
CALL LRLEGN (TITL6,36,C,I.0,0.5,0.0)
CALL LRCHSZ (2)
CALL LRLEGN (TITL20,20,0,4.0, I .3,0.0)
IF (LSFR.EQ • 0) CALL LRLEGN(TITL13,16,1,O.2,4.2,0.0)
IF (LSFR.EQ • I) CALL LPLEGN(TITLI_,8,1,0.2,_.7,0.0)
CALL LRCHSZ (4)
CALL LRCURV (PLTX,PLTY, 10 1,2 ,SYM,0.0)
IF (LSFR.EO • 0) CALL LRCURV(LOSOUT,SFOUT,NOUT,4,SYM,I.O)
IF (LSFR.EQ .1) CALL LRCURV(LOSOUT,RADOUT,NOUT,_,SYM,I.0)
19C CALL LRCHSZ(0)
IF (MBT.EQ.0) GO TO 240
C
C--PLOT OUTLET ABSOLUTF. WHIRL
C
IF (LAMVT.EQ.1) GO TO 210
IF (LSF_.EQ.0) CALL SPLINT(SFOHT,LAMOUT,NOUT,PLTY,101,PLTX,DYDX,
ID2YDX2)
IF (LSFR.EQ .1) CALL SPLINT(RADOUT,LAMOUT,NOUT,PLTY,101,PLTX,DYDX,
ID2YDX2)
CALL LRCHSZ (4)
CALL LRLF.GN (TITL7,2_,0,2.0,0.5,0.0)
CALL LRCHSZ(2)
CALL LRLF.GN (TITL21,20,0 ,_. 0, I . 3,_. 9)
IF (LSFR.EQ.0) CALL LPLFGN(TITL13,16,1,0.2,_.2,0._)
IF (LSFR.EQ.I) CALL LI_LEGN(TITL14,8,1,0.2,4.7,0.0)
CALL L8CHSZ (4)
CALL LRCURV (PLTX,PLTY, I01,2,S¥M, 0.0)
IF (LSFR.EQ.0) CALL LRCURV(LAMOUT,SFOUT,NOUT,_,SYM, 1.0)
IF (LSFR. EQ.I) CALL LRCUI_V(LAMOUT,_ADOUT,NOUT,4,SYM,I.0)
GO TO 240
C
C--PLOT OUTLET ABSOLUTE TANGENTIAL VELOCITY
C
210 IF (LSFR.EQ .0) CALL SPLINT(SFOUT,LAMOUT,NOUT,PLTY,101,PLTX,DYDX,
ID2YDX2)
IF (LSFR.EQ .1) CALL SPLINT(RADOUT,LAMOUT,NOUT,PLTY, 101,PLTX,DYDX,
ID2YDX2)
CALL LRCHSZ (_)
CALL LRLEGN (TITL8,36,@,I.0,0.5,0.@)
CALL LRCHSZ (2)
CALL LRLEGN (TITL22,20,0,4.0, !. 3,0.0)
IF (LSFR.EQ.0) CALL LRLEGN(TITL13,16,1,0.2,4.2,0.0)
IF (LSFR.EQ.I) CALL LRLEGN(TITL14,8,1,0.2,_.7,0.0)
CALL LRCHSZ (4)
ROUTSQ = RTOUT_2-RHOUT_2
DO 230 J=I,101
IF (LSF'R.EQ.0) PIT)[ (J) =PLTX (J)/SQRT (RHOUT_2+PLTY (J)_ROUTSQ)
230 IF (LSF'R.EQ.I) PLTX (J)=PLTX (J)/PLTY (J)
CALL LRCURV (PLTX, PLT¥, I0 I, 2,SYM, 0.0)
115
TRNG = PERLOS (NLOSS)
DO 242 I=I , NLOSS
LRNG = AMINI (LRNG,PERCRD (I))
RRNG = AMAXI (RRNG,PERCRD(I))
BRNG = AMIN I (BRNG, PERLOS (I))
242 TRNG = AMAXI(TRNG,PERLOS (I))
PLTX (1) = PERCRD (I)
PLTX(101) = PERCRD(NLOSS)
DEL = (PERCRD(NLOSS)-PERCRD(1))/100.
DO 244 I=2,100
244 PLTX(I) = PLTX(I-1) +DEL
CALL SPLINT (PERCRD, PERLOS, NLOSS, PLTX, 10 1, PLTY, DYDX, D2YDX2)
CALL LRANGE (LRNG, RRNG, BRNG, TRNG)
CALL LRCHSZ (4)
CALL LRLEGN (TITL26,28,O,I.7,_.5,0.0)
CALL LRCHSZ (2)
CALL LRLEGN (TITL27,8,0,4.7,1.3,0.0)
CALL LRLEGN (TITL28,8, I, 0.2,4.7, 0.0)
CALL LRCHSZ (4)
CALL LRCURV (PLTX,PLTY, 101,2,SYM,O.0)
CALL LRCURV (PERCRD,PERLOS, NLOSS, 4,SYM, 1 • 0)
CALL LRCHSZ (0)
C
C--PLOT INPUT BLADE SECTIONS
C
248 IF (MBI.EQ.0) RETURN
C--CALCULATE BLADE SECTION PLOT COORDINATES ALONG MERIDTONAL PLANE
DO 250 JN=I,NBLPL
MBL(I,JN) = ZBL(I,JN)
DO 250 IN=2,NPPP
250 MBL(IN,JN) = MBL(IN-I,JN)+SQRT((ZBL(IN,JN)-ZBL(IN-I,JN))_*2+
I(RBL(IN,JN)-RBL(IN-I,JN))_2)
C--CALCULATE TANGENTIAl PLOT COORDINATES
DO 260 JN=I,NBLPL
DO 260 IN=I,NPPP
DELRTH = RBL(IN,JN)_PITCH
RTHBL(IN,JN) = RBL(IN,JN)'_THBL(TN,JN)
RTHIBL(IN,JN) = RBL(IN,JN)_'THIBL(IN,JN)
RTH2BL(IN,JN) = RBL(IN,JN)_TH2BL(IN,JN)
RRTHBL(IN,JN) = RTHBL(IN,JN) ÷DELRTH
RTH3BL(IN,JN) = RTHIBL(IN,JN) +DELRTH
260 RTH4BL(IN,JN) = RTH2BL(IN,JN)÷DES_T_
C--CALCULATE RANGE OF PLOTS, AND SET UP FOR PLOTTING INDTVTDUAL
C--BLADE SECTIONS
LRNG = MBL(I,I)
RRNG = MBL(NPPP, I)
BRNG = RTH2BL (I, I)
TRNG = RTH3BL(NPPP,NBLPL)
DO 270 JN=I,NBLPL
LRNG z AMINI (LRNG,MBL(I,JN))
RRNG = AMAXI(RRNG,MBL(NPPP,JN})
DO 270 IN=I,NPPP
BRNG = AMINI(BRNG, RTH2BL(IN,JN))
270 TRNG ,, AMAXI(TRNG,RTH3BL(IN,JN))
RRTEM = RRNG
DELLR = RRNG-LRNG
DELBT = TRNG-BRNG
DELRNG = AMAXI (DELLR,DELBT)
RRNG = LRNG÷DELRNG
116
TRNG = BRNG÷DEIRNG
CALL LRANGE(LRNG,RRNG,BRNG,TRNG)
C--PLOT BLADE SECTIONS AND SHOW SOLIDITY
CALL LRCHSZ(_)
CALL LRLEGN (TITLI0,52,0,2.7,C.7,0.0)
DO 280 JN=I,NBLPL
CALL LRCHSZ (3)
CALL LRCNVT(JN,I,TITL11 {6),I,_,0)
CALL LRLEGN (TITL11,2_,0,3.0,9.5,0.0)
CALL LRCHSZ{2)
CALL LRLEGN (TITL24,_0,0,2.8,1.3,0.0)
CALL LRLEGN (TITL25,36,1,0.2,3.3,0.0)
CALL LRCHSZ (_)
CALL LRCURV (MBL (I,JN) ,RTHBL (I,JN) ,NPPP, 2,SYM,0.0)
CALL LRCURV (_BL(I,JN) ,RTHIBL(I,JN),NPPP,2,SYM,0.0)
CALL LRCURV (MBL (1,JN) ,RTH2BL (I,JN),NPPP,2,SYM,0.0)
CALL LRCURV (MBL (I,JN) ,RRTHBL (1,JN) , NPPP, 2,SYM,0.O)
CALL LRCURV (MBL (I,JN)
,RTH3BL (I ,JN) , NPPP, 2,SYM,0.0)
CALL LRCURV(MBL(I,JN),RTH4BL(I,JN) ,NPPP,2,SYM,0._)
IF (LBLAD.EQ.2) GO TO 275
CALL LRCURV(MBL(I,JN),RTHBL(I,JN) ,NPPP,L;,SYM,0.0)
CALL LRCURV(MBL(I,JN),RRTHBL(I,JN),NPPP,4,SYM,I.0)
GO TO 280
275 CALL LRCURV (MBL (I,JN) ,RTHIBL(I,JN), NPPP,4,SYM,0.0)
CALL LRCURV (_BL (I,JN) ,RTH2BL(I,JN) ,NPPP,_,SYM,0.0)
CALL LRCURV (MBL(I,JN) ,RTH3BL(I,JN) , NPPP,4,SYM,0.0)
CALL LRCURV (MBL (1 ,JN) ,RTH4BL(I,JN) , NPPP,_,SYM, 1.0)
280 CONTINUE
C--CALCULATE RANGE OF PLOT, AND SET UP FOR PLOT OF MULTIPLE
C--BLADE SECTIONS
RRNG = RRTEM
TRNG = RTHIBL(NPPP,NBLPL)
DO 290 JN=I,NBLPL
DO 290 IN=I,NPPP
290 TRNG = AMAXI(TRNG,RTHIBL(IN,JN})
DELBT = TRNG-BRNG
DELRNG = AMAXI (DELLR,DELBT)
RRNG = LRNG+DELRNG
TRNG = BRNG+DELRNG
CALL LRANG E (L RNG, RRNG, BRNG, TRNG)
C--PLOT MULTIPLE BLADE SECTIONS
CALL LRGRID (3,3,11.0,11.0)
CALL LRCHSZ(3)
CALL LRLEGN (TITL12,2_,0,3._,9.5,0.0)
CALL LRCRSZ(2)
CALL LRLEGN (TITL2_,_O,0,2.8,1.3,0.0)
CALL LRLEGN(TITL25,36, 1,0.2,3.3,0.0)
CALL LRCHSZ(4)
EOP = 0.0
DO 300 JN=I,NBLPL
IF (JN. EQ. NBLPL) EOP=I.0
CALL LRCURV (MBL (I, JN), RTHBL (I ,JN), NPPP, 2, SYM, 0.0)
CALL LRCURV (MBL (I,JN), RTHI BL (1, JN), NPPP, 2, SYM,0. O)
30C CALL LRCURV (MBL ( I, JN), RTH2BL (I, JN), NPPP, 2,SYM, EOP)
C_LL LRCgRV (ZBL,RBL,0,1 ,S¥M,I.0)
CALL LRCHSZ (0)
RETURN
END
117
SUBROUTINE MESHO
C
C--M_SHO CALCULATES COORDINATES OF AN ORTHOGONAL MESH
C--COVERING THE SOLUTION REGION
C
COMMON/INPUTT/GAM,AR,MSFL, OMFGA,REDFAC,VELTOL,FNEW,DNEW,MBI,MBO,
I MM, MHT, NHL, NHUB, NTIP, NIN, NO[JT, NBLPL, NPPP, NOSTAT, NSL, NLOSS,
2 LSFR, LTPL, LAM VT, LROT, LBLAD,LETEA N, ANGROT, IMESH, I SL INE,
3 ISTATL, I PLOT, ISUPER, ITSON, IDEBUG, ZOMIN, ZOMBI, ZOMBO, ZOMOUT,
ROMIN, ROMBI, ROMBO, ROMOUT, ZHIN, ZTIN, ZHOUT, ZTOUT, RHIN, RTI N, RHOUT,
5 RTOUT, TITLEI (20), ZHUB (50) , RHUB (50), ZTIP (50), RTIP (50) ,SEIN (50),
6 RADIN(50),TIP(50),PRIP(50),LAMIN(50),VTHIN(50) ,SFOUT(59),
7 RADOUT(50) ,PROP(50) ,LOSOUT(5 _) ,LAMOUT(5O) ,VTHOHT (50),
8 BETALE (50) ,BETATE (50) ,ZHST (50) ,ZTST (50), P HST (50) ,RTST (50) ,
9 FLFR (50) ,PERC_D(50) ,PERLOS (5_), ZBL(50,50) ,RBL (50,50) ,
I THBL(50,50) ,TNBL(5m,5C) ,TTBL (50 ,50) ,THIBL(50,50),TH2BL(50,50)
COMMON/CALCON/MMM I, MHTPI ,CP, EXPON, TGROG, PITCH, }_LEH,_LET, RTEH,_TET,
I ZLE(50) ,RLE(50) ,ZTE(50) ,RTE(5O) ,ZLFOM (IC1) ,RLEOM (101),
2 SLEOM (I01) ,THLEOM (I01) ,ZTEOM (I01), RT_OM (I01) ,ST_.OM (I01) ,
3 THTEOM (I01) ,ILE(101), ITE (I01) ,ZOM (lC0, I01) ,ROM (100, I01) ,
SOM (I00, I01), _OM (I00,10 I), BTH (I00, I0 I), DTHDS (I00, In I),
5 DTHDT (I00, 10 I), PLOSS (I00, I01) ,CPHI (I00, I_ I) ,SPHI (I00, I0 1)
COMMON/ROTATN/ZHROT(50) ,RHROT(50) ,ZTROT(50) ,RTROT(50) ,
I ZLEOMR (101) ,RLEOMR (101) ,ZTEOMR (101) ,RTEOMR(IOl) ,
2 ZBLROT (50,50) ,RBLROT (50,50) ,ZOMROT(100,101) ,ROMROT (100,101)
DIMENSION ZRAD(50,101),RRAD(5O,101) ,ZI (100),RI(100),
I ZNOR (2) ,RNOR (2) ,SLOM (I00) ,AAA (I00), BBB (I C0)
C
C--ROTATE HUB AND TIP COORDINATES
CALL ROTATE (ANGROT,ZHUB,RHUB,NHHB, I,5C,1,ZHROT,RHROT)
CALL ROTATE(ANGROT,ZTIP,RTIP,NTIP,1,50,I,ZTPOT,RTROT)
C
C--DIVIDE HUB AND TIP CONTOURS
NMAX = MAX0 (NHUB,NTIP)
IF (NHUB.EQ.NTIP) GO TO 8
IF (NHUB. EQ.NMAX) GO TO 4
DELH = (ZHROT(NHUB)-ZHROT(1))/FLOAT (NMAX-I)
DO 2 I=I,NMAX
ZRAD(I,MHTPI) = ZTROT(I)
RRAD(I,MHTPI) = RTROT(I)
2 ZRAD(I,I) = ZHROT(1)÷FLOAT(I-1)_DELH
CALL SPLINT (ZHROT,RHNOT,NHUB,ZRAD(I, I) ,NMAX,RRAD(I, I) ,AAA,BBB)
GO TO 15
DELT = (ZTROT(NTIP)-ZTROT(!))/PLOAT (NMAX-I)
DO 6 I=I,NMAX
ZRAD(I,I) = ZHROT(I)
RRAD(I,I) = RHROT(I)
6 ZRAD(I,MHTPI) = ZTROT(1) +FLOAT(I-I) _DELT
CALL SPLINT(ZTROT,RTROT,NTIP,ZRAD(I,MHTPI),NMAX,RR;D(1,MHTPI),AAA,
IBBB)
GO TO 15
8 DO 10 I=I,NMAX
ZRAD(I,I) : ZHROT(I)
RRAD(I,1) = RHROT(I)
ZRAD(I,MHTPI) = ZTROT(I)
10 RRAD(I,MHTP1) = RTROT(I)
15 CONTINUE
C
C--FILL ZRAD AND RRAD ARRAYS FROM HUB TO TIP
118
DO 20 I=I,NMAX
DELZ = (ZRAD(I,MHTPI)-ZRAD(I,I)) /FLOA_(MHT)
DELR = (RRAD(I,MHTPI)-RRAD (I, I) ) /FLOAT (MHT)
DO 20 J=2,MHT
ZRAD(I,J) = ZRAD(I,J-I)+DELZ
20 RRAD(I,J) = RRAD(I,J-I) +DELR
C
C--ROTATE INPUT MESH BOUNDARIFS
CAN = COS(ANGROT)
SAN = SIN(ANGROT)
ZOMINR = ZOMIN*CAN÷ROMIN*SAN
ZOMBIR = ZOMBI*CAN+ROMBI*SAN
ZOMBOR = ZOMBO*CAN+ROMBO*SAN
ZOMOUR = ZOMOUTeCAN+I_OMOUT*SAN
C
C--COMPUTE ZOMROT ON HUP
ZOHROT(I,I) = ZOMINR
IF (MBI. EQ.0) GO TO 50
MBIMI = MBI-I
DELZ= (ZOMBIR-ZOMINR)/FLOAT (MBIM I)
DO 30 I=2,MBI
3n ZOMPOT(I,1)= ZOMROT(I-I,I)+DELZ
DELZ = (ZOMBOR-ZOMBIP)/FLOAT (MBO-MBI)
MBIPI = MBI÷I
DO 40 I=MBIPI,HBO
40 ZOMROT(I,I)= ZOMROT(I-I,I) ÷DELZ
DELZ= (ZOMOUR-ZOMBOR)/FLCAT (MM-MBO)
MBOP1 = MBO+I
50 IF (MBI.EQ.C) DELZ = (ZOMOUR-ZOMINR)/FLOAT(MMMI)
IF (MBI.EQ.0) MBOPI=2
DO 60 I=MBOPI,MM
60 ZOMROT(I,I)= ZOMROT(I-I,I) +DELZ
C
C--COMPUTE ROMROT AND SLOPE ON HUB
C_LL SPLINT(ZRAD (1, I),R_AD(I,I) , NMAX,ZOMROT (1,1) ,MM,ROMROT (1,1) ,
ISLOM,BBB)
DO 70 I=I,MM
PHI = ATAN(SLOM(I)) ÷ANGROT
S.?HI (I,1) = SIN(PHI)
70 CPHI(I,I) = COS(PHI)
C
C--COMPUTE ZOM_OT AND ROMROT ROW BY _OW FROM HUB TO TIP
C
DO 100 J=2,MHTP1
C
C--MOVE ALONG PRESENT ROW, ONE POINT AT A TIME, LOCATING
C--COORDINATES OF INTERSECTIONS OF LINES NORMAL TO PREVIOUS ROW
DO 80 I=I,MM
C
C--CALCULATE POINTS ON STRAIGHT LINE NORMAL TO PREVIOUS ROW
RNOR (2) = ROMROT(I,J-I)
ZNOR(2) = ZOMROT(T,J-1)
RNOR (I) = RNOR (2)-DELR
ZNOR(1) = ZNOR(2)+SLOM(I)*DELR
C
C--LOCATE INTERSECTION OF LINE NORMAL TO PREVIOUS ROW WITH PRESENT ROW
80 CALL INRSCT(ZRAD(I,J) ,RRAD (1,J) ,NMAX,ZNOR,RNOR,2,ZI (1),RI (I))
C
C--CALCULATE SLOPES OF PRESENT ROW AT INTERSECTION POINTS
119
CALL SPLINT(ZRAD(I,J) ,RRAD(I,J) ,NMAX,ZI,MM,AAA,SLOM,BBB)
C
C--CALCULATE INTERSECTIONS OF LINE NORMAL TO PRESENT ROW WITH
C--PRESENT ROW
DO 90 I=I,MM
Z2 = (ZOMROT(I,J-I)÷ (_OMROT (I,J-I)-RI (I))*SLOM(I) +ZI(I)*SLOM (T)**2
I)/(I. +SLOM (I) **2)
90 ZOMROT(I,J) = (ZI(I)+Z2)/2.
C
C--CALCULATE ROMROT AND SLOPES AND ANGLES ON P_ESENT ROW
CALL SPLENT (ZOMROT(I,J) ,MM,ROMROT(I,J) ,SLOM,BBB)
DO 100 I=I,MM
PHI = ATAN(SLOM(I)) ÷ANGROT
SPHI (I,J) = SIN (PHI)
100 CPHT(I,J) = COS(PHI)
C
C- -UN ROTATE ZOMROT AND ROM_OT TO GET ZOM AND ROM
C
CALL ROTATE(-ANGROT,ZOMROT,ROMROT,MM,MHTPI, 100,101,ZOM,ROM)
RET [JRN
END
SUBROUTINE MEPLOT
C
C--MEPLOT PLOTS THE BLADE GEOMETRY AND THE GENERATED ORTHOGONAL MESH
C
COMMON/INPUTT/GAM,AR,MSFL, OMEGA, REDFAC,VELTOL,FNEW,DNEW,MBI,MBO,
I MM, MHT,NBL, NHUB, NTIP , NIN, NOUT, NBLPL, NPPP, NOST AT, NS L, NLOSS,
2 LSFR, LTPL, LAMVT, LROT, LBLAD,LETEA N, ANGROT, IMESH, I SLINE,
3 ISTATL,I PLOT, ISUPER, ITSON, IDEBUG, ZCMI N, ZOMBI, ZOM BO, ZOMOUT,
4 ROMIN, ROMBI, POMBO, ROMOUT, ZHIN, ZT IN, ZHOUT, ZTOUT, RHIN, RTI N, RHOUT,
5 RTOUT,TITLEI (20) , ZHUB (50) , RHUB (5_), ZTIP (5¢), RTIP (50) ,SF IN (5_),
6 RADIN (50),TIP (50) ,PRIP(56) ,LAMIN (50) ,VTHIN (50) ,SFOUT (50) ,
7 RADOUT(50) ,PROP(50) ,LOSOUT(50),LAMOUT(50),YTHOUT(50),
8 BETALE(50) ,BETATE(50) ,ZHST(5O),ZTST(53),PHST(_) ,RTST(50) ,
9 FLFR (50) ,PERCRD (5__), PFRLOS (50) , ZBL (50,5C), RBL (5_,5g),
I THBL (50,50) , TNBL (50,50) ,TTBL (50,50) ,THIBL (_0,50) ,TH2BL (50,50)
COMMON/CALCON/MMM1, MHTPI , CP, EXPON,TGROG, PITCH, RLEH, RLET, RTEH, RTET,
! ZLE (50) ,RLE (50) ,ZTE (50), RTE (50) , ZLEOM (1_ I) ,RLEOM (1_I),
2 SLEOM(101) ,IHLEOM(101),ZTEOM(101) ,RTEOM(101) ,STEOM(101) ,
3 THTEOM (I01), ILE (I01), ITE (I_I) ,ZOM (I00, I0 I) ,ROM (I00, IC I) ,
SOM (I00, I0 I), TOM (1_0, I0 I), BTH (I00, I0 I) ,DTHDS (IC0, I0 1),
5 DTHDT (I00, I0 I) ,PLOSS (100, I01) ,CPHI (I00, I0 I), SPHI (I00,10 I)
COMMON/PLTCOM/ZLRNG, ZRRNG, RBBNG, RTRNG, ZHPLT (100), RHPLT (100),
1 ZSPLT (i00) ,RSPLT (I00) ,ZLPLT (I00), RLPLT (I00), ZTPLT (I00),
2 RTPLT (100)
DIMENSION TITLI (15),TITL2(10),TITL_ (3) ,TITL_ (3) ,ZTEM(101),
IRTEM (101)
DATA TITLI/tHUB,I, I SHRt,wOUD,I, t ANDt, t BLA°,tDE Bt,wOUND','ARIE '
I,'S$CI','$R8I','N ME','RIDI','ONAL',' PLA','NE '/
DATA TITL2/'ORTH','OGON','AL M','ESH$','CI$L',t2IN ','MERI','DION'
I,WAL P', 'LANE'/
DATA TITL3/t Z Dt,'IRECt,'TION'/
DATA TITLe/' R DI,'IRECt,'TION'/
DATA SYM/' X'/
120
DATA SYN/'O'/
IF (IPLOT.LE.0) RETURN
C
C--OBTAIN PLOT BOUNDARIES, AND SCALE THE PLOT
CALL PTBDRY
C
C--PLOT BLADE GEOMETRY AND PLOT ORTHOGONAL MESH
CALL LRMBGN (1._,1.0,2. n,I.0)
CALL LRANGE (ZLRNG,ZRRNG,RBRNG,RTRNG)
IPLT= I
10 EOP = 0.
IF (IPLT.EQ.I.OR.IPLT. EQ.3) CALL LRGPID (-I, -I, I. 0,I ._)
IF (IPLT.EQ.2.OR.IPLT.EQ.4) CALL LRGRID(3,3,11.0,11.0)
CALL LRCHSZ (_)
IF (IPLT. EQ. I. OR. IPLT. EQ.2) CALL LRLEGN (TITi I, 6C ,0, I. 3,0.'_, 0.0)
IF (IPLT. EQ. 3. OR. IPLT. EQ._) CALL LRLEGN(TITL2,40,0,3. _,C.7,0.n}
CALL LRCHSZ (2)
CALL LRLEGN (TITL3, 12,?,_.5, 1.5,0.C)
C_LL LRLEGN (TITL4 ,12 ,1,0 .4 , _.5,0.0)
CALL L_CHSZ(_)
CALL LRCURV (ZHPLT,RHPLT,100 ,2,SYM,0.0)
CALL LRCURV(ZSPLT,RSPLT,109 ,2,SYM,0.0)
IF(MBI.EQ.O) GO TO 12
CALL LPCURV (ZLPLT,RLPLT, 100 ,2,SYM,0.0)
CALL LRCURV(ZTPLT,RTPLT,100 ,2,SYM,n.0)
12 IF (IPLT.GT.2) GO TO 20
IF(MBI.EQ.0) EOP = I.
CALL LRCUR_(ZHUB,RHUB, NHUB, _,SYM,0.O)
CALL LRCURV(ZTIP,RTIP,NTIP, ",SYM,EOP)
IF(MBI.EQ.0) GO TO 18
DO 15 JN=I,NBLPL
15 CALL LRCURV{ZBL(I,JN),RBL(1,JN| ,NPPP,2,SYM,C.0)
CALL ROTATE (-ANGROT,ZLE,RLE,NBLPL, I,50,I,ZTEM,RTEM)
CALL LRCURV (ZTEM,RTEM, NBLPL,3,SYN,9.0)
CALL ROTATE(-ANGROT,ZTE,RTE,NBLPL, 1,50, I,ZTEM,RTEM}
CALL LRCURV (ZTEM,RTEM,NBLPL,9,SYN, I.0)
18 IPLT = IPLT+I
GO TO I0
C--PLOT VERTICAL MESH LINES
2C DO 40 I=I,MM
DO 30 J=I,MHTPI
ZTE_ (J) = ZOM (I,J)
30 RTEM(J)= ROM(I,J)
_0 CALL LRCURV(ZTEM,RTEM, MHTPI,2,SYM,0.0)
C--PLOT HORIZONTAL MESH LINES
EOP= 0.0
DO 50 J=2,MHT
IF (J.EQ.MHT) EOP=I.0
50 CALL LRCURV (ZOM(I,J),ROM(I,J),MM,2,SYM,EOP)
IPLT = IPLT+I
IF (IPLT.LE.4) GO TO 10
CALL LRCURV (ZTEM,RTEM,0,I,SYM,I.0)
CALL LRCHSZ(0)
RETURN
END
121
SUBROUTINE PTBDR¥
C
C--PTBDP¥ OBTAINS THE HUB AND SHROUD AND BLADE LEADING _ND "RAILING EDGE
C--BOUNDARIES FOR PLOTTING, AND SCALES THE PLOT
C
COMMON/INPUTT/GAM, AP , MSFL, OMEGA, REDFAC, VELTOL, FNEW, DN EW, MBI, MBO,
I MM, MHT, NBL, NHUB, NTIP, NIN, NOUT, NB LPL, NPPP, HOST AT, NSL, NLOSS,
2 LSFR, LT PL, LAMVT, LROT, LBLAD,LETEA N, ANGROT, IMESH, I qLINE,
3 ISTATL, I PLOT, ISUPER, ITSON, IDEBUG , ZOMIN, ZOMBI, ZO_BO, ZOMO UT,
ROMIN, ROMBI, ROMBO, _OMOUT , ZHIN , ZT IN, ZHOUT , ZTOUT, _HIN, RTI N, RHO[]',
5 RTOUT, TITLEI (20), ZHUB (5_), PHUB (50) , ZTIP (<0), NTIP (5'_) ,SFIN (SO),
6 RADTN (50) ,TIP(Sn) ,PRIP(SC_) ,LAMTN(_0) ,VTEIIN(_O) ,SFOUT(59) ,
7 RADOUT(5_) ,PROP(5C) ,LOSO{JT(5?) ,LAMOUT(SC) ,VTHOUT(5 e) ,
8 BETALE (50) ,BETATE (50) ,ZHST (5_),ZTqT (50), RHST (B0) ,PTST (5C),
9 FLFR (50) ,PERCRD (5C) ,PERLOS (50) ,ZBL (50,5C) ,NBL (5_,50) ,
I THBL(50,50) ,TNBL(5_,50) ,TTBL(SC,5 r'),THIBL(50,5 n) ,TH2BL(_0,5¢)
COMMON/CALCON/MMMI , MHTPI ,CP, FXPON,TGROG, PITCH, RLEH, RLET, RT EH, RT ET,
I ZLE(56),RLE(50),ZTE(5_.),RTE(5 n) ,ZLEOM(ICI),RLEOM(I_I),
2 SLEOM (I0 I), THLEOM (I0 I) ,ZT_OM (1_ I), I_TEOM (I0 I), STEOM (I01),
3 THTEO_ (I01) , ILE (I01) , ITE (I_1) ,ZOM (I_, I('I) ,ROM _10e, I0 I) ,
14 SOM(IOO,IOI),TOM(IOO,IO1),BTH(IOO,IC1),DTHDS(IOO,101),
5 BTHDT (I00, I0 I) ,PLOSS (I00, I0 I) ,CPHI (I0_, It"I), SPHI (I0_, I0 !)
COMMON/ROTATN/ZBROT(5_) ,RHROT(50) ,ZTROT(50) ,RTROT(50) ,
1 ZLEOMR (101) ,RLEOMR (131) ,ZTEOMR (191) , RTEOMR (I01),
2 ZBLROT(50,50),_BL_OT(50,5c'),ZO_ROT(100,1C1),I_OMROT(100, I01)
COM_ON/PLTCOM/ZLRNG,ZRRNG,RBRNG,RTRNG,ZHPLT(100) ,RHPLZ(100) ,
I ZSPLT(ICg),RSPLT(100) ,ZLPLT(I_t) ,RLPLT(ICO),ZTPLT(IC0),
2 RTPLT (100)
DIMENSION AAA (tO0),BBB (100)
C
C--OBTAIN PLOT POINTS ON HUB
C
DELZ = (ZHROT(NHUB)-ZHROT(1))/_g.
ZHPLT(I} = ZHROT (I)
DO 10 I=2,100
10 ZHPLT (1) = ZHPLT(I-I) +DELZ
CALL SPLINT (ZHROT,RHI_OT,NHUB,ZHPLT, 100,RHPLT,AAA, BBB)
CALL ROTATE (-ANGROT, ZHPLT, R HPLT, I:_0 , I, I0_, I, ZHPLT, RHPLT)
C
C--OBTAIN PLOT POINTS ON SHROUD
C
DELZ = (ZTROT(NTIP)-ZTROT(1))/99.
ZSPLT(1) = ZTROT(1)
DO 20 I=2,100
20 ZSPLT(I) = ZSPLT(I-I)+DELZ
CALL SPLINT(ZTROT,RTROT,NTIP,ZqPLT, 1OC,RSPLq',AAA,BBB)
CALL POTATE (-ANGROT,ZSPLT, RSPLT,160,1,100,1,ZSPLT,RSPLT)
IF (MBI. EQ.0) GO TO 50
C
C--OBTAIN PLOT POINTS UP BLAD_ LEADING EDGE
C
DELR = (RLET-_LEH)/99.
RLPLT(1) = RLEH
RLPLT(I#0) = RLET
DO 30 J=2,99
30 RLPLT (J) = RLPLT(J-1} +DELR
CALL SPLINT (RLE,ZLE,NBLPL,RLPLT,100,ZLPLT,AAA,BBB)
CALL ROTATE(-ANGROT, ZLPLT, RLPLT, 100,!,10n,1,ZLPLT,RLPLT)
C
122
C--OBTAIN PLOT POINTS UP BLADE T_AILING EDGE
C
DELR = (PTET-RTEH)/99.
RTPLT(1) = RTEH
RTPLT (100) = RTET
DO 4C J=2,99
RTPLT (J) = RTPLT (J-l) ÷DELR
CALL SPLINT (RTE,ZTE,NBLPL,RTPLT,IC0,ZTPLT,AAA,BBB}
CALL ROTATE (-_NGROT,ZTPLT,RTPLT,100, I, !00,I,ZTPLT,RTPLT)
C
C--CALCULATE THE RANGE OF THE PLOT
C
50 ZLRNG = ZHUB(1)
ZRRNG = ZHUB(NHUB)
RBRNG = RHUB(1)
_TRNG = RTIP(1)
C--CHECK HUB AND TIP
DO 60 I=I,NHUB
ZLRNG : AMINI (ZLRNG,ZHUB(I))
ZRRNG = AMAXI (ZRRNG,ZHUB(I))
RBRNG = AMINI (RBRNG,RHUB (T))
60 RTRNG = AMAXI (_TRNG,_HUB(T))
DO 70 I=I,NTIP
ZLRNG = AMINI(ZLRNG,ZTIP(I))
ZRRNG = AMAXI (ZRRNG,ZTIP(I))
RBRNG = AMINI(RHRNG,RTIP(1))
70 RTRNG = AM_X1 (RTRNG,RTIP(I))
C--CHECK INLET AND OUTLET MESH BOUNDARIES
DO 80 J=I,MHTPI
ZLRNG = AMINI (ZLRNG,ZOM(I,J))
ZLRNG = AMINI (ZLRNG,ZOM(MM,J))
ZRRNG = AMAXI (ZRRNG,ZOM(I,J))
ZRRNG = AMAX1 (ZRRNG,ZOM(MM,J))
RBRNG = AMINI(RBRNG, ROM(I,J))
RBRNG = AMIN1 (RBRNG,ROM(MM,J))
RTRNG = AMAXI (RTRNG,ROR(I,J))
8C RTRNG = AMAXl (RTRNG,ROM(MM,J))
C--CHECK HUB AND TIP MESH BOUNDARIRS
DO 90 I=I,MM
ZLRNG = AMINI (ZLRNG,ZOM(I, I))
ZLRNG = AHINI (ZLRNG,ZOM(I, MHTPI))
ZRRNG = AMAXI (ZRRNG,ZOM(I,I))
ZRRNG = AMAXI (ZRRNG,ZOM(I,MHTPI))
RBRNG = AMINI(RBRNG,ROM(I,I))
RBRNG = AMINI (RBRNG,ROM(I,_HTPI))
RTRNG = AMAXI(RTRNG,ROM(I,I))
90 RTRNG = AMAXI (RTRNG,ROM(I,M"TPI))
C--CHECK FIRST AND LAST INPUT BLADE SECTIONS
IF (SBI.EQ.0) GO TO 110
DO 100 I=I,NPPP
ZLRNG = AMIN1 (ZLRNG,ZBL(I,1))
ZLRNG = AMINI(ZLRNG,ZBL(I, NBLPL))
ZRRNO = AMAXI (ZRRNG,ZBL(I,1))
ZRRNG = AMAXI (ZRRNG,ZBL(I, NBLPL))
RBRNG = AMINI (RBRNG,RBL(I,I}}
RBRNG = AMINI(RBRNG, RBL(I, NBLPL))
RTRNG = AMAXI (RTRNG,RBL(I,I))
1C0 RTRNG = AMAXI (RTRNG,RBL(I, NBLPL))
110 DELZ = ZRRNG-ZLRNG
123
ZLRNG = ZLRNG-0.05_DELZ
ZRRNG = ZRRNG+O.05_DELZ
DELR = RTRNG-RBRNG
PBRNG = RBRNG-0.05_DELP
RTRNG = RTRNG÷0.05_DELR
C
C--CHOOSE MAXIMUM RANGE, AND EXPAND RANC, E IN TH_ OTHER DIRECTION
C
DMD2 = I.I_ABS(DELZ-DELR)/2.
IF (DELR.GT.DELZ) GO TO 120
RTRNG = RTRNG+DMD2
RBRNG = RBRNG-DMD2
RETURN
120 ZRRNG = ZRRNG÷DMD2
ZLRNG = ZLRNG-DMD2
RETURN
END
SUBROUTINE PRECAL
C
C--PI_ECAL CALCULATES MANY OF THE REQUIRED FIXED CONSTANTS
C
COMMON NREAD, NWRIT, ITER, IEND, NWRTI, NWRT2, NWRT3, NWRT_, NWRT5, NWRT6
COMMON/INP{]TT/GAM,AR,MSF[,OMEGA, REDFAC,VELTOL, FNEW,DNEW,MBI,M90,
I MM, MHT, NBL, NHUB, NTIP, NIN, NOUT, NBLPL, NPPP, NOSTAT, NSL, NLOSS,
2 LSFR, LTPL, LAMVT, LROT, LBLAD, LETEAN, ANGROT, IMESH, ISL IN E,
3 ISTATL, I PLOT, IS[IPER, ITSON, IDEBUG , ZOM IN, ZOMBI , ZOMBO, ZOMOUT,
ROMIN, ROMBI, ROMBO, ROMOOT, ZHIN, ZT IN, ZHOUT, ZTOUT, R HIN, RTI N, RHO[IT,
5 RTOUT,TITLEI(20),ZHUB(50),RHUB(50),ZTIP(59),RTIP(50) ,SFIN(5¢),
6 RADIN (50), TIP (50), PRIP(50) ,LA MIN (_0), VTHIN (50), SFOUT (5Q),
7 RADOUT (50), PROP (50), LOSOUT (5_) ,LAMOUT (50), VTHOUT (50) ,
8 BETALE (50) , BETATE (50) ,ZHST (50) , ZTST (50), RHST (50) ,RTST (50) ,
9 FLFR (50) ,PERCRD(50) ,PERLOS (5_) ,ZBL(5#,50) ,RBL(50,5_) ,
I THBL (50,50) ,TNBL (50,50) ,TTBL (50,50) ,THIBL (50,50) ,TH2BL (50,5r')
COMMON/CALCON/MMMI , MHTPI ,CP, EXPON, TGROG, PITCH, RLEH, RLET, RT EH, RTET,
I ZLE (50) , RLE (50) ,ZTE (50) , RTE (50), ZLEOM (I0 I) ,RLEOM (I_ I),
2 SLEOM (I01) ,THLEOM (I0 I) ,ZTEOM (101) ,RTEOM (I01) ,STEOM (101) ,
] THTEOM (I01) ,ILE (I01) ,ITE (!01) ,ZOM (I00, I0 I), ROM (I00, I01) ,
4 SOM (I00, I0 1) ,TOM (I00, I0 I) ,BTH (I09, I0 I) ,DTHDS (I0:!,I0 1),
5 DTHDT (100,101), PLOSS (I00, I_I) ,CPHI (I00, I0 I), SPHI (I0'_, In 1)
COMMON/VARCOM/A(4,100,101),UOM (100, 101),K(100,101),RHO(100, 101),
I WSUBS (I00, I01), WS[JHT (I00, I0 I) , WSUBZ (I0_, I01), WSUBR (I00,10 I),
2 WSUBM (I00, I01), WTH (I00,10 I), VTH (I00, I01), W (I00,101) ,
3 ALPHA (I00, I01), BETA (I00, I01), WWCR (I00, I0 I) ,CURV (I00, Ir I),
4 WLSURF (I00, I01), WTSURF(100, I0 I), CAMP (I00, I0 I), SAMP (10n, In.I),
5 RHOA¥ (190, I01), DELRHO (I00,19 I), FT (I00, I0 I) ,DFDM (I00, I01),
6 XIOM (I00,I01) ,ZETOM (I00, I01) ,DLDU (I00,101)
COMMON/ROTATN/ZHROT (50) , RHROT (50), ZTROT (50) , RTROT (50) ,
I ZLEOMR (I01), RLEOMR (I0 I), ZTEOMR (I.0 I), RTEOMR (I01),
2 ZBLROT(50,50) ,RBLROT(50,50),ZOMROT(100,1CI),ROMROT(100,101)
DIMENSION DYDX(101),D2YDX2 (101),TTEM(50),DOM (101),DIP(50),
1 SZRBL (50) , BLOCK (50)
REAL MSFL, LAMIN, LAMOOT
C
C--INITIALIZE TIPF, RHOIPF, LAMDAF, AND RVTHTA
124
C
CALL LAMNIT
CALL RVTNIT
IF (GAM.NE.O.) CALL TIPNIT
IF (GAM. NE. 0. ) CALL RHINIT
C
C--INITIALIZE THE BTH APRAY
C
DO 30 J=I,MHTPI
DO 30 I=I,MM
3t BTH(I,J)= PITCH
C
C--INITIALIZE THE FLFR ARRAY IF IT WAS NOT READ IN
C
IF (NSL.GE. I) GO TO 50
NSL = 11
FLFR(1) = 0.
FLFR (11) = 1.0
DO 40 J=2,10
40 FLFR (J) = FLFR (j-l) +0. I
GO TO 80
C
C--SET END POINTS FOR FLFR ARRAY
C
50 IF (FLFR(1) .LE.0.) GO TO 70
TEMPI = 0.
DO 60 JL=I,NSL
TEMP2 = FLFR(JL)
FLFR(JL) = TEMPI
60 TEMPI = TEMP2
NSL = NSL+I
FLFR (NSL) = TEMPI
70 IF (FLFR(NSL) .GE.I.0) GO TO 80
NSL = NSL+I
FLFR(NSL) = 1.0
C
C--CALCULATE SOM FROM THE ZOM,ROM ARRAYS
C
8C DO 90 J=I,MHTP1
soM(1,J) = O.
DO 90 I=2,MM
90 SOMtI,J)= SOM(I-I,J) +SQRT((ZOM(I,J)-ZOM(I-I,J))**2+ (ROM (l,J)-
I ROM (l-1,J)) *'2)
C
C--CALCULATE TOM FROM THE ZOM,ROM ARRAYS
C
DO 100 I=I,MM
TOM (I,I) = 0.
DO 100 J=2,MHTPI
100 TOM (I,J)= TOM(I,J-I)÷SQRT((ZOM(I,J)-ZOM(I'J-1))**2+ (ROM(I,J)-
IROM(I,J-I)) *'2)
C
C--ROTATE HUB AND SHROUD STATION LINE LOCATION ARRAYS
IF (NOSTAT. EQ.0) GO TO 101
CALL ROTATE(ANGROT,ZHST,RHST,NOST_T,I,SO,I,ZHST,RHST)
CALL ROTATE(ANGROT,ZTST,RTST,NOSTAT,I,50,_,ZTST,RTST)
C
C--ROTATE ZBL AND RBL TO GET ZBLROT AND RBLROT
101 CALL ROTATE(ANGBOT,ZBL,RBL, NPPP,NBLPL,SO,50,ZBLROT, RBLROT)
C
125
C--SET IL_ AND ITE ARRAYS WHEN THERE ._F NO BLADgS
C
IF (MBI.NE. _) GO TO
DO 102 J=I,MHTPI
ILE (J) = MM+I
IR2 ITE(J) = MM+I
GO TO 225
C
C--CALCULaTE LEADING EDGE ARRAY, ZLE, RLE ,FROm ZBL AND RBL ARRAYS
C--CALCULATE INTERSECTION OF LEADING EDGE WITH HUB AND SHROUD PROFILER
C
10_ DO 110 JN=I,NBLPL
ZLE(JN) = ZBLROT (1,JN)
110 RLE(JN) = RBLROT(1,JN)
CALL INRSCT (ZHROT,_HROT,NHUB,ZLE,RLE, NBLPL, ZLEH,RLEH)
CALL INRSCT (ZTROT,RT_ROT,NTIP,ZLE,_LE,NBLPL,ZLET,RLET)
C--CALCULaTE TRAILING EDGE ARRAY, ZTE,_qTE ,FROM ZEL AND PBL ABPAYR
C--CALCULATE INTERSECTIONS OF TRAILING EDGE WITH HUH AND SHROUD P_OFILES
C
DO 120 JN=I,NBLPL
ZTE(JN) -- ZBLROT(NPPP,JN)
12C RTE(JN) = RBLROT (NPPP,JN)
CALL INRSCT(ZHROT,RHROT,NHUB,ZTE,RTE,NBLPL,ZTEH,RTEH)
CALL INRSCT(ZTROI,RTROT,NTIP,ZTE,RTE, NBLPL,7TET,RTET)
C
C--CALC[ILATE ORTHOGONAL MESH ARRAYS AT THE LEADING EDGE
C--ZLEOM(AND ZLEOMR) , RLEOM(AND _L_'O_R) , _LEOM, AND THLEOM
C--CALCULATE ILE ARRAY OF MESH POINT LOCATIONS INSIDE BLADE
C--LEADING EDGE
C
ZLEOMR(1) = ZLEH
RLEOMR (I) = RLEH
ZLEOMR (MHTP1) = ZLET
[_LFOMR(MHTPI) = RLET
DO 130 J=2,MHT
130 CALL INRSCT (ZOMROT (I ,J) ,HOMROT (1,J) ,MM,ZLE, RLE, NqLPL, ZLEOMR(J),
I RLEOMR (J))
DO 16_ J=I,MHTPI
DO I_0 I=I,SM
IF (ZLEOMR(J) .LF.ZOMROT(I,J)) GO TO 15 "
la n CONTINUE
15C ILE (J) = I
160 SLEOM(J) = SOM (I-I,J) +_QRT ((ZLEOM9 (J)-ZOMROT (I-1,J))**2
1+ (RLEOMR (J) -ROMROT(I-!,J))**2)
DO 170 JN=I,NBLP/
17C._ TTEM(JN) = THBL(I,JN)
DOM (I) = o.
DO 17_ J=2,MHTP1
174 DOM(J) = DOM(J-I)+SQRT((ZLEOMR(J)-ZLEOMR(J-1))_'$2
I+ (RLEOM_(J) -RLEOMR (J-l)) _2)
DIP (I) = 0.
DO 176 JN=2,NBLPL
176 DIP(JN) = DIP(JN-I)+SQRT((ZLE(JN)-ZLE(JN-I))*_,2+
I (RLE(JN) -RLE(JN-I))**2)
CALL SPLINT (DIP,TTEM,NBLPL,DOM, MHTPI,THLEOM, DYDX,D2YDX2)
CALL ROTATE (-ANGROT,ZLEOMR,RLEOM_,MHTPI, 1, IrI,I,ZLEOM,RLEOM)
C
C--CALCULATE ORTHOqONAL MESH ARRAYS AT THE TRAILING EDGE
126
C--ZTEOM(AND ZTEOMR) , RT_OM(AND RTEOMR), STEOM, AND THTEOM
C--CALCULATE ITE A_AY OF MESH POINT LOCATIONS INSIDE BLADE
C--TR_ILTNG EDGE
C
ZTEOMR (I) = ZTEH
_TEOMR(1) = RTEH
ZTEOMR (MHTP1) = ZTET
RTEOMR(MHTPI) = RTET
DO 18C J=2,MHT
I_C CALL INRSCT(ZOMROT(1,J) ,ROMROT(I,J) ,MM,ZTF,RTE,NBLPL,ZT=OMR(J) ,
I_TEOMR(J))
DO 210 J=I,MHTP1
ILEJ = ILL (J)-1
DO 19C I=ILEJ,MM
IF (ZTEOMR(J) .LT.ZOM_OT(I,J)) GO TO 230
19C CONTINUE
260 ITE(J) = I-1
ITEJ = I-I
21C STEOM (J) = SOM(ITEJ,J) +SQRT ((ZTEOMR (J) -ZOMROT(ITEJ,J) ) _2
I+(RTEOMR (J) -ROMROT(ITEJ,J))*$2)
DO 220 JN=I,NBLPI
22C TTEM (JN) = THBL(NPPP,JN)
DOM(1) = 9.
DO 222 J=2,MHTPI
222 DOM(J) = DOM(J-I)÷SQRT((ZTEOMR(J)-ZTEOMR(J-I))_*2
I+ (_TEOMR (J)-RTEOMR (J-l)) _2)
DIP(1) = 0.
DO 223 JN=2,NBLPI
223 DIP(JN) = DIP(JN-1) +SQRT((ZTE(JN)-ZTF(JN-I)) _2+
1 (RTE (JN) -RTE(JN-I))_2)
CALL SPLINT (DIP TTEM,NBLPL,DOM,MHTPI,THTEOM,DYDX,D2YDX2)
CALL ROTATE(-ANGROT,ZTEOMR,RTEOMR, MHTPI, I, ICI,I,ZTEOM,RTEOM)
C
C--P}_INT BLADE GEOMETRY ON TNPI]T PLANE5
C
W_ITE (NWRIT, IO@0)
DO 224 JN=I,NBLPL
SZI_BL(1) = 0.
BLOCK (I) = TTBL (1,JN)/PITCH
DO 226 IN=2,NPPP
SZRBL(IN) = SZRBL(IN-I)÷SQRT((ZBL(IN,JN)-ZBL(IN-I,JN)) _2
I+ (RBL(IN,JN)-RBL(IN-I,JN))*_2)
226 BLOCK(IN) = TTBL(IN,JN)/PITCH
IF(LETEAN. EQ. I) GO TO 232
CALL SPLINE (_ZRBL,THBL(I,JN) ,NPPP,DYDX,D2YDX2)
GO TO 234
232 DTHDSL = TAN(BETALE(JN)/57.295780)/RBL(1,JN)
DTHDST = TAN(BETATE(JN)/57.295780)/RBL(NPPP,JN)
CALL SPLISL (SZRBL,THBL(I,JN) ,NPPP,DTHDSL,DTHDST,DYDX,D2YDX2)
23a WRITE (NWRIT, 1010) JN, (IN,ZBL(IN,JN),RBL(IN,JN),THBL(IN,JN),
ITTBL (IN,JN) ,BLOCK(IN) ,SZRBL (IN) ,DYDX (IN) ,D2YDX2(IN) , IN=I,NPPP)
224 CONTINUE
WRITE (NWRIT,I 940)
C
C--CALCULATE THETA GRADIENTS ON THE ORTHOGONAL MESH
C
CALL THETOM
C
C--CORRECT BTH FOR BLADE THICKNESS ON THE ORTHOGONAL MESH
C
129
CALL THIKOM
C
C--REDUCE MASSFLOW, WHEEL SPEED, AND WHIRL FOR REDUCED FLOW SOLUTION
C
225 IF (REDFAC.EQ.I.0) GO TO 260
OMEGA = OMEGA_REDFAC
MSFL = MSFL*REDFAC
DO 230 J=I,NIN
LAMIN(J) = LAMIN (J) *REDFAC
230 VTHIN(J) = VTHIN (J)_EDFAC
IF (MBI.EQ.0) GO TO 250
DO 2_0 J=I,NO{IT
LAMOUT(J)= LAMOUT(J) _REDFAC
240 VTHOUT(J) = VTHOUT(J)*REDFAC
C
C--RE-INITIALIZE LAMDAF AND HVTHTA FOR REDUCED FLOW
C
CALL RVTNIT
250 CALL LAMNIT
C
C--PRINT DEBUG OUTPUT
C
260 IF (IDEBUG.LE.0) GO TO 270
WRITE(NWRIT,1020)
WRITE(NWRIT,1030) ((I,J,SOM (I,J) ,TOM (I,J) ,BTH (T,J) ,DTHDT (I,J) ,
CPHI (I,J) ,SPHI (I,J) ,I=I,MM) ,J=I,MHTPI)
WRITE (NNRIT, I040)
C
C--FOR INCOMPRESSIBLE FLOW, INITIALIZE THE DENSITY (RHO AR?A¥)
C
270 IF (GAM. NE.0.) RETURN
DO 280 J=I,MHTPI
DO 280 I=I,MM
280 I_HO (I,J) = AR
RETURN
C
C--FORMAT STATEMENTS
C
1000 FORMAT (IH1//_2X,_8(1H_)/42X,48H_ BLADE GEOMETRY ON INPUT BLADE
1 SECTIONS _/42X,_8 (1H_')//)
1010 FORMAT (///4X,28H$_ INPUT BLADE PLANE NUMBER,I3,_H _//2X,2HIN,
I 6X, 3HZBL, 13X, 3HRBL, 13X, _HTHBL, 12 X, _HTTBL, 10X,SHBLOCKAGE, 10 X,
2 5HSZRBL, 10X,6HDTHDSP, 10X,7HDTHDSP2/(2X, I2,8G16.7) )
1020 FORMAT (IHI//35X,57 (1H_)/35X,57H w' CONSTANT QUANTITIES ON THE
I ORTHOGONAL MESH _'/35X,57 (IH_) //_X, IHI, _X, IHJ, 6X, 3HSOM, 12X,
2 3HTOM,12X,3HBTH, 11X,5HDTHDT,10X,4HCPHI, 11X,4HSPHI)
1030 FORMAT (215,6G15.5)
10_0 FORMAT (IHI)
END
SUBROUTINE THETOM
C
C--THETOM CALCULATES THE DERIVATIVES OF THETA WITH RESPECT TO S AND T
C--DIRECTIONS ON THE ORTHOGONAL MESH
C
128
COMMON NREAD.NWRIT.ITER.IEND.NWRTI. NWRT2.NWRT3.NW_T4. NWRTS.NWPT6
COMMON/INPUTT/GAM. AR.MSFL. OMEGA. REDFAC.VELTOL.FNEW.DNFW.MBI.MBO.
1 MM.MHT.NBL.NHUB.NTIP.NIN.NOUT.NBLPL. NPPP. NOSTAT. NSL.NLOSS.
2 LS FR. LTPL. LAMVT. LROT. LBLAD.LETEA N. ANG_OT. IMESH. I SL INE.
3 ISTATL. I PLOT. ISUPER .ITSON. IDEBUG. ZOM IN. ZOMBI. ZOMBO. ZOMOUT.
ROMIN,ROMBI,ROMBO,ROMOUT,ZHIN,ZTIN,ZHOUT,ZTOUT,RHIN,RTIN,_HOJ_,
5 _TOUT,TITLEI(20),ZHUB(50),RHUB(5:),ZTIP(50),RTIP(53),SFIN(SC),
6 RADIN(50),TIP(50),PRIP(5C),LAMIN(5_),VTHIN(50),SFOUT(SO),
7 RADOUT(50),PROP(50),LOSOUT(50),LAMOUT(50),VTHOUT(5_),
9 BETALE (50) ,BETATE (50) ,ZHST (59) ,ZTST (50), 5HST (50) ,RTST (50) ,
9 FLFI_ (50) .PERCRD(50) .PERLO_ (5_) .ZBL (5_.50) .PBL (50.5_).
I THBL(50.50) .TNBL(5C.50) .T'rBL(50.5 n) .THIBL(50.S ,_).TH2BL(59.50)
COMMON/CALCON/MMM1 . MHTP 1 .CP . EXPON. TGROG. PITCH. RLEH. I_LET. RTEH. RTET.
I ZLE(50) .RLE(50).ZTF(SO).RTE(5a).ZLEOM(IOI).RLEOM(I_I).
2 SLEOM(101) .THLEOM(101).ZTEOM(101).RTEOM(10]).STEOM(101) .
3 THTEOM(191).ILE(101).ITE(101) .ZOM(In0.101).ROM(lO0.101) .
SOM (I00. 101) .TOM (I00.10 I). BTH (I00.10 I) .DTHDS (IC9. I_ I).
5 DTHDT (I00. 101) .PLOSS (100.1_I) .CPHI (100.10 I) .SPHI (I_0.10 I)
COMMON/ROTATN/ZHROT(50) .RHROT(59) .ZTROT(SC) .RTROT(50) .
I ZLEOMR (101). RLEOMR (I01) . ZTEOMR (i0 I). RTEOMR (In I) .
2 ZBLROT(50.50) .RBLROT(50.5_) .ZOMROT(100.101) .ROMROT(1C _, 101)
COMMON/INDCOM/NBLPC.NPPC.ZPC(51.51) .RPC(51.51) .TTPC(51.51) .
I THPC(51.51).DTRDZ(51.51).DTHDR(51.51).BTHLE(191) .BTHTE(101).
2 BTBFLE (101) .BTBFTE (I01)
DIMENSION ANGZ(51.51) .ANGR (51.51) .DTHDSP(51.51) .DTHDTP(51. 51) .
! SZRBL (51). SZRPC (5 I). ZPCTI(51) . RPCT! (51). THPCTI (51) .TTPCT1 (51) .
2 ANGTI(51).DTST1(51).ZPCT2(51).RPCT2(51).THPCT2(51) .TTPCT-_(_I).
3 ANGT2 (51). DTSX2 (51) .DYDX (5 I) . D2YDX2 (51)
NBLPC = 21
NPPC = 21
C
C--CALCULATE GRADIENTS OF THETA WITH RESPECT TO DISTANCE _LONG INP_T
C--Z BL. RBL LINES
C
C--LOCATE INTERSECTIONS OF INPUT ZBL.I_BL LINES WI_R LINES FROM
C--HUB TO TIP AT FIVE PERCENT CHORD INTERVALS
5 DO 60 JN=I.NBLPL
DELZ = (ZBLROT(NPPP.JN)-ZBLROT (1.JN)) /FLOAT(NPPC-I)
ZPC(I.JN)= ZBLI_OT (I.JN)
DO 10 KN=2.NPPC
10 ZPC(KN.JN) = ZPC(KN-1.JN) +DELZ
C
C--CALCULATE R COORDINATES AND ANGLES WIT[{ RESPECT TO Z AXIS AT
C--INTERSFCTION POINTS
CALL SPLINT(ZBLROT(I.JN) .RBLROT (I.JN) .NPPP. ZPC(1.JN).NPPC.
IRPC(I.JN) .ANGZ (I.JN) .D2YDX2)
DO 20 KN=I.NPPC
20 ANGZ(RN,JN) = ATAN(ANGZ(KN.JN))+ANGROT
C
C--CALCULATE ARC LENGTH ALONG INPOT LINES USING INP,T POINTS
SZRBL(1)= 0.
DO 30 IN=2.NPPP
30 SZRBL(IN) = SZRBL(IN-I) +SQRT((ZBL(IN.JN)-ZBL (IN-I.JN}) _'2
I+(RBL(IN.JN)-RBL(IN-I.JN)) _'$2)
C
C--CALCULATE ARC LENGTH ALONG INPUT LINES USING POINTS AT FIVE
C--PERCENT OF CHORD
SzRPC (I)= 0.
DO q0 KN=2.NPPC
129
4_ SZRPC(KN) : SZBPC(KN-I)+HQRT((ZPC(KN,JN)-ZPC(KN-1,JN))_2
I+ (RPC(KN,JN)-RPC (KN-I,JN))_2)
C
C--CALCULATE THETA AND CHANGE OF THETA WITH ARC LENGTH ALONG INPUT LINES
IF (LETEAN.EQ.I) GO TO 5C
CALL SPLINT (SZRBL,THBL(I,JN) ,NPPP,SZRPC,NPPC,THPC(1 ,JN) ,
IDTHDSP(I,JN) ,D2YDX2)
GO TO 55
55 DTHDSL = TAN(BETALE(JN)/57. 29578_) /RBL(I,JN)
DTHDST = TAN(BETATE(JN)/57.205780)/RBL(NPPP,JN)
CALL SPINSL(SZRBL,THBL(I,JN) ,NPPP,DTHDSL,DTHD_T,SZRPC,NPPC,
IT!{PC(I,JN) ,DTHDSP(7,JN) ,D2YDX2)
55 CONTINUE
C
C--CALCULATE BLADE THICKNESS IN TH_TA DIRECTION AT POINTS AT
C--FIVE PERCENT OF CHORD
CALL SPLINT(SZ}_BL,TTBL(I,JN) ,NPPP,SZRPC,NPPC,TTPC (I,JN) ,DYDX,
ID2YDX2)
60 CONTINUE
C
C--CALCULATE GRADIENT OF THETA WITH RESPECT TO DISTANCE UP FIVE PERCENT
C--CHORD ZPC,RPC LINES
C
DO 130 KN=I,NPPC
C
C--STORE DATA AT FIVE PERCENT CHORD POTNTS ON INPUT BLADE PLANES INTO
C--TEMPORARY ARRAYS fOR SPLINT CALLS
DO 70 JN=I,NBLPL
ZPCTI (JN) = ZPC(KN,JN)
RPCTI (JN) = RPC(KN,JN)
THPCTI (JN) = THPC(KN,JN)
TTPCTI (JN) = TTPC(KN,JN)
ANGTI (JN) = ANGZ(KN,JN)
70 DTSTI (JR) = DTHDSP(KN,JN)
130
C
C--CALCULATEANGLEWITHRESPECTTO Z, CHANGEOF THETAWITHARCLENGTH
C--ALONGINPUT LINES, ANDTANGENTIAL
THICKNES_UP THEFIVE PERCENT
C--CHORD LINES
CALL SPLINT (SZRBL,ANGTI,NBLPL,SZRPC,NBLPC,ANGT2,DYDX, D2YDX2)
CALL SPLINT(SZRBL, DTSTI,NBLPL,SZRPC,NBLPC,DTST2,DYDX,D2YD_2)
CALL SPLINT(SZRBL,TTPCT1,NBLPL,SZBPC, NBLPC,TTPCT2,DYDX,D2YDX2)
C
C--STORE CALCULATED VALUES IN TWO-DIMENSIONAL ARRAYS ON THE ALTERNATE
C--MESH
DO 120 LN=I,NBLPC
ZPC(KN, LN) = ZPCT2(LN)
RPC(KN,LN) = RPCT2 (LN)
THPC(KN,LN) = THPCT2(LN)
TTPC (KN,LN) = _TPCT2 (LN)
ANGZ(KN,LN) = ANGT2(LN)
120 DTHDSP(KN,LN) = DTST2(LN)
130 CONTINUE
C
C--CALCULATE DTHDZ AND DTHDR FROM DTHDSP AND DTRDTP ON THE ALTERNATE
C--MESH
C
DO I_0 LN=I,NBLPC
DO lq0 KN=I,NPPC
COSAB= COS(ANGZ(KN,LN) +ANGR (KN,LN))
DTHDZ(KN,LN)= (DTHDSP(KN,LN)*COS (ANGR(KN, LN)) -DTHDTP(KN,LN)=SIN(
1ANGZ (KN,LN)))/COSAB
lqO DTHDR (KN,LN) = (-DTHDSP (EN,LN) _SIN (ANGR (KN,LN)) ÷DTHDTP (KN,LN) _COS (
1ANGZ(KN,LN))) /COSAB
C
C--INTERPOLATE TO OBTAIN DTHDZ AND DTHDR AT THE POINTS OF THE O_THOGONAL
C--MESH
C--ROTATE DTDZOM AND DTDROM ON ORTHOGONAL ME gH TO OBTAIN DTHDS AND DTHDT
C--THE GRADIENTS OF THETA IN THE S AND T DIRECTIONS
C
II = I
JJ = I
DO 150 J=I,MHTPI
ILEJ = ILE (J)
ITEJ = ITE(J)
DO 150 I=ILEJ,ITEJ
CALL LININT(ZPC, RPC, DTHDZ, NPPC,NBLPC,51,51,ZOMROT(I,J) ,
ROMROT(I,J) ,DTDZCM,II,JJ)
CALL LININT (ZPC, RPC, DTHDR, NPPC,NBLPC,51,51,ZOMROT (I,J) ,
ROMROT(I,J) ,DTDROM,II,JJ)
DTHDS (I,J) = DTDZOM=CPHI (I,J) +DTDROMJ'SPHI (I,J)
150 DTHDT(I,J) = DTDROM=CPHI(I,J)-DTDZOM_SPHI(I,J)
C
C--PRINT DEBUG BLADE GEOMETRY ON ALTERNATE MESH
IF (IDEBUG.LE.0) RETURN
WRITE (NWRT5, I000)
CALL ROTATE(-ANGROT,ZPC,RPC,NPPC,NBLPC, 51,51,ZPC,RPC)
WRITE(NWRT5,1010) ((KN,LN,ZPC (KN,LN) ,RPC(KN,LN),THPC(KN,LN) ,
ITTPC(KN,LN),DTHDSP(KN,LN),DTHDTP(KN,LN),KN=I,NPPC),LN=I,NBLPC)
CALL ROTATE(ANGROT,ZPC,RPC,NPPC,NBLPC, 51,51,ZPC,RPC)
WRITE(NWRT5,1020)
RETURN
C
131
C--FORMAT STATEMENTS
1000 FORMAT (1HI//25X,78(IH*)/25X,78H* BLADE GEOMETRY ON ALTERNATE M
IESH 21 HUB-TO-TIP * 21 L.E.-TO-T.E. */25X,78(IH*)///
23X,2HKN,3X,2HLN,6X,3HZPC,13X,3HRPC, 13X,_HTHPC,12X,_HTTPC,IIX,
36HDTHDSP, 10X,6HDTHDTP//)
1010 FORMAT (215,6G16.7)
1020 FORMAT (IHI)
END
SUBROUTINE THIKOM
C
C--THIKOM CALCULATES THE BLADE THICKNESS IN THE THETA DIRECTION AT
C--THE POINTS OF THE ORTHOGONAL MESH
C
COMMON/INPUTT/GAM, AR,MSFL, OMEGA, REDFAC, VELTOL, FNEW, DNEW, MBI, MBO,
I MM, MHT, NBL, NHUB, NTIP, NIN, NOUT, NBLPL, NPPP, NOST AT, NS L, NLOSS,
2 LSFR, LTPL, LAMVT, LROT, LBLAD, LETEAN, ANGROT, IMESH, ISL INE,
3 ISTATL, IPLOT, ISUPEB,ITSON, IDEBUG, ZOMIN, ZOMBI, ZOMBO, ZOMOUT,
4 ROMIN, ROMBI, ROMBO, ROMOUT, ZHIN, ZT IN, ZHOUT, ZTOUT, RHIN, RTI N, RHOUT,
5 RTOUT,TITLEI(20) ,ZHUB(50) ,RHUB(50),ZTIP(50),RTIP(50),SFIN(50),
6 RADIN (50) ,TIP (50) ,PRIP(50),LAMIN(50) ,VTHIN(50) ,SFOUT(50) ,
7 RADOUT(50) ,PROP(50) ,LOSOUT(50),LAMOUT(50) ,VTHOUT(50),
8 SETALE(50) ,BETATE(50) ,ZHST(50),ZTST(50) ,RHST(50),RTST(50) ,
9 FLFR(50) ,PERCRD(50),PERLOS(50) ,ZBL(50,50) ,_BL(50,50),
I THBL (50,50), TNBL (50,50) ,TTBL (50,50) ,THIBL (50,50) ,TH2BL (50,50)
COMMON/CALCON/MMMI, MHTPI,CP, EXPON, TGROG, PITCH, RLEH, RL_T, RTEH, RTET,
1 ZLE (50) ,RLE (50), ZTE (50), RTE (50), ZLEOM (I0 I) ,RLEOM (I 0 I),
2 SLEOM (I01), THLEOM (I0 I) ,ZTEOM (I0 I), RTEOM (I0 I), STEOM (I01) ,
3 THTEOM (101), ILL(101) , ITE (I01) ,ZOM (I00,101) ,ROM (1C0,I01) ,
SOM (I00, I01) ,TOM (I00, I01) ,BTH (100, I0 1) ,DTHDS (I00, I01),
5 DTHDT (I00, 10 1) ,PLOSS (100,101) ,CPHI (I00, I_ I) ,SPHI (I00, I0 I)
COMMON/ROTATN/ZHBOT (50), BHROT (50), ZTROT (50), PTROT (50) ,
I ZLEOMR (I01) ,RLEOMR (I01), ZTEOMR (!0 I), RTEOMR (101),
2 ZBLROT(50,50) ,RBLROT(50,50),ZOMROT(100,101) ,ROMROT(100,101)
COMMON/INDCOM/NBLPC,NPPC,ZPC (51, 51) ,RPC(51,51),TTPC(51,51) ,
I THPC (51,51) ,DTHDZ (51,51) ,DTHDR (5 1,51) ,BTHLE(101) ,BTMTE (I01),
2 BTBFLE(101),BTBFTE(101)
DIMENSION DIST(50),DTH(50) ,DISEOM(101) ,DTHEOM(101),
1 AAA(101) ,BBB (101)
C
C--CALCULATE STREAM CHANNEL THICKNESS ARRAYS AT LEADING AND TRAILING
C--EDGES, BTHLE AND BTHTE
C
DIST (I) = 0.
DTH(1) = TTBL(I,1)
DO 30 JN=2,NBLPL
DIST(JN) = DIST(JN-1)+SQRT((ZBL(1,JN)-ZBL(1,JN-I))**2+
1 (RBL (I ,JN) -RBL (I ,JN-I) ) *'2)
30 DTR(JN) = TTBL(1,JN)
RBLR = RBL(I,I)*COS(ANGROT)-ZBL(I,I)*SIN(ANGROT)
DISEOM(1) = SQRT((ZLEOM(1)-ZBL(I,1))**2+(RLEOM(1)-RBL(1,1))**2)
DISEOM(1) = SIGN(DISEOM(1),RLEOMR(1)-RBLR)
DO 40 J=2,MHTPI
40 DISEOM(J) -- DISEOM(J-I) +SQRT((ZLEOM(J)-ZLEOM(J-I)) $_2+
1 (RLEOM (J) -RLEOM (J-l)) **2)
CALL SPLINT(DIST,DTH, NBLPL, DISEOM,MHTPI,DTHEO_,AAA,BBB)
DO 50 J=I,MHTPI
132
50 BTHLE(J) = PITCH-DTHEOM(J)
DTH(1) = TTBL(NPPP,I)
DO60 JN=2,NBLPL
DIST(JN) = DIST(JN-I) +SQRT((ZBL(NPPP,JN)-ZBL(NPPP,JN-I)) _2_
I (RBL(NPPP,JN)-RBL(_P-PP,JN-I))_2)
SUBROUTINE INIT
C
C--INIT ASSIGNS INITIAL VALUES TO THE ARRAY VARIABLES
C
CORRON/INPUTT/GAM,AR,RSFL,OMEGA, REDFAC, VELTOL,FN_W,DN_W,M_I,MBO,
I MR, MHT, NBL, NHUB, NTIP, NIN, NO[IT, NBLPL, NPPP, NOSTAT, NSL, NLOS_,
2 LSPR, LTPL, LAMVT, LROT, LBLAD, LETEA N, ANGROT, IMESH, ISL IN E,
3 IST ATL, IPLOT, ISUP ER, ITSON, IDEB[IG, ZOMIN, ZOMBI, ZORBO, ZOMOUT,
ROMIN, ROMBI, ROMBO, ROMOUT, ZHiN, ZTIN, Z HOUT, ZTOUT, RRIN, RTIN, RHOt_T,
5 RTOUT,TITLEI(20),ZHUB(50),RHUB(50),ZTIP(50),RTIP(50) ,SFIN(_9) ,
6 RADIN (50), TIP (50), PRIP(50) ,LAMIN (50), VTHIN (50), SFOUT (50),
7 RADOUT(50) ,PROP (50),LOSOUT (50) ,LAMOUT(50) ,VTHOUT(50) ,
8 BETALE (50) ,BETATE (50) ,ZHST (Sn) , ZTST (50) ,RRST(50} ,RTST (50) ,
9 FLFR (50) ,PERCRD (50), PERLOS (50), Z BL (50,50), RBL (50,50) ,
1 THBL(50,50) ,TNBL(5_,50) ,TTBL(5C,50),THIBL(50,50) ,TH2BL(50,50)
COMRON/CALCON/RMR1 , MHTPI ,CP,EXPON,TGROG, PITCH, RLEH, RLET, RT EH, RTET,
I ZLE (50), RLE (50), ZTE (50), RTE (50), ZLEOM (I0 I) ,RLEOM (I0 I),
2 SLEOM (101) ,THLEOM (I0 I} ,ZTEOR (I01) ,RTEOM (101) ,STEOM (I01) ,
3 THTEOM (I01) ,ILE (I0 I) ,TTE (I01) ,ZOM (I00, I0 I) ,ROM (I00, I01) ,
SOR (100,101) ,TOR (100,101), BTH (100,101) ,DTHDS (100,101),
5 DTHDT (100,10 i), PLOSS (100,101) ,CPHI (100, 101), SPHI (100,10 1)
COMRON/VARCOM/A (4,100,101), UOR (100,101), K (100,101) ,RHO (100,, 101),
13_
I WSUBS (100,101), WSUBT (100,101), WSUBZ (190,101), WSUBR (100,10 1),
2 WSUBM (100,101),WTH(100,101),VTH(100,101) ,W(100,101) ,
3 ALPHA (100,101),BETA (160, 10 I) ,WWCR(100,101) ,CURV(109,101),
4 WLSURF(100,101),WTSURF(10C,I_.I) ,CAMP(I_0,101) ,SAMP(100, I_I),
5 RHOAV(100,101),DELRHO(100,101) ,FT (100,10 1) ,DFDM(100, 101),
6 XIOM(100,101) ,ZETOM (100, ICI) ,DLDU(100,101)
REAL K,LAMDAF
DO 10 J=I,MHTPI
A(I,I,J) : 0.
A(2,I,J) = 0.
A(4,I,J) = I.
A(I,MM,J) : 0.
A (2,MM,J) = 0.
A(3,MM,J) = I.
DO 10 I=I,MM
WSUBS (I,J) = I.
WSUBT (I,J) = O.
WSUBZ (I,J) = 1.
W(I,J) = 0.
WTH(I,J) = 0.
VTH (I,J) = 0.
DELRHO(I,J) = 0.
XIOM(I,J) = 0.
ZETOM (I,J) = 0.
FT(I,J) = 0.
DFDM(I,J) = 0.
DLDU(I,J) = 0.
SAMP(I,J) = 0.
CAMP (I,J) = I.
K (I,J) = 0.
PLOSS (I,J) : 0.
IF (GAM.EQ.0.) GO TO 10
UIJ = TOM (I ,J) /TOM (I , MHTPI ) _ (ROM (I,J)+RCM(I, I))/
I (ROM(I,MHTPI) +I_OM (I, 1))
TPPTIP = 1.0- (2._OMEGA_LAMDAF(UIJ,I,J) - (OMEGA_ROM(T,J))_'_'2)/
I(2.*CP_TIPF (UIJ))
PHO(I,J) = RHOIPF(UIJ) _TPPTIP*_E_PON
10 RHOAV(I,J) = RHO(I,J)
RETURN
END
SUBROUTINE COEF
C
C--COEF CALCULATES COEYFICIENTS, A AND K,
C--FOR THE SYSTEM OF MATRIX EQUATIONS, A_U=K
C
COMMON NREAD,NWRIT,ITER,IEND,NWRT1,NWRT2,NWRT3,NWRT%NWRT5,NWRT6
COMMON/INPUTT/GAM,AR,MSFL, OMEGA, REDFAC,VELTOL,FNEW,DNEW,MBI,MBO,
MM, MHT, NBL, NHUB, NTIP, NIN,NOUT, NBLPL, NPPP, NOSTAT, NSL, NLOSS,
LSFR, LTPL, LAMVT, LROT, LBLAD, LETEAN, ANGROT, IMESH, I SLTNE,
ISTATL, IPLOT, ISUPER, ITSON, IDEBUG, ZOMIN, ZOMBI,ZOMBO, ZOMOUT,
ROMIN, ROMBI, ROMBO, ROMOUT, ZHYN, ZT IN, ZHOUT, ZTOUT, RBIN, RTYN, RHOUT,
RTOUT,TITLEI(20) ,ZHUB(50) ,RHUB(50) ,ZTIP(50),RTIP(50) ,SFIN(50),
RADIN (50),TIP(50) ,PRIP(50),LAMIN(50) ,VTHIN(50) ,SFOUT(50),
RADOUT (50) , PI_OP (50), LOSOUT (50), LAMOUT (50), VTHOUT (50) ,
134
8 BETALE(50) ,BETATE(50) ,ZHST(50), ZTST(59) ,_H_T(5 _) ,RTST(59) ,
9 FLFP(50),PERCRD(53),PERLOS(5_),ZBL(50,50),RBL(5_,50) ,
I THBL (50,50) ,TNBL (50,5C) ,TTBL (5n,5_) ,THIBL (50,50) ,TH2BL(5_,50)
COMMON/CALC ON/MMMI , MHT PI ,CP , EXPON , TGROG, PITCH, RL EH, RL ET , RT EH, RT ET ,
I ZLE (56) , RLE (50) ,ZTE (50) , RTE(5_) , ZLEOM (I_ I) ,RLEOM (I01) ,
2 SLEOM(101) ,THIFOM(101),ZTFOM(I_I),RTEOM(101),STEOM(101),
3 THTEOM(101),ILE(1OI),ITE(1OI),ZOM(100,101),ROM(10e,101) ,
SOM (I00, I0 I) ,TOM (ICO, I0 1) ,BTH (100,1P I) ,DTHDS (I0_,10 I),
5 DTHDT (100,101), PLOSS (I00, I01) ,CPHI (100, I_ 1), SPHI (I0 3, !n I)
COMMON/VARCOM/A (_, 10C, IC1), UOM (IOC, 101) ,K (IC0,I01) ,RHO (I00,I_I) ,
I WSUBS (I00,101), WSUBT (100,101), WSUBZ (100,101), WSfIB_ (I00,191),
2 WSUBM (100,101) ,WTH (100, I01) ,VTH (100, !01) ,W (I00, ICI),
3 ALPHA (I0C, IC I), BETA (100, I01) , WWCR (IC0,101) ,CURV (100, I01),
4 WLSURF (I00,10 I), WTSURF (I00 ,I01), CAMP (I00, I0 I) ,SAMP (I0C, 101),
5 RHOAV (I00, IC 1), DELRHO (I00, I0 1) ,FT (1C0, I01) ,DFDM (10n, I01) ,
6 XIOM (100,101) ,ZETOM (I00, I01) , DLDU (100,101)
DIMENSION DVTHDT (100,101)
REAL MSFL, K,KNEW
C
C--CALCULATE COEFFICIENT_ AND CONSTANTS FOR FINITE DIFFERENCE EQUATIONS
C
WRITE (NWRIT, 1000) ITER
DCHANG = 0.
DMAX = -1.E20
DMIN = I.E20
MMM1 = MM-1
DO 50 J=2,MHT
H_ = SOM(2,J)-SOM(1,J)
DO 50 I=2,MMMI
IF (ITER.EQ.I) DVTHDT(I,J)=0.
HI = TOM(I,J)-TCM(I,J-I)
H2 = TOM(I,J+I)-TOM(I,J)
H3 = H_
H4 = SOM(I+I,J)-SOM (I,J)
C1 = HI÷H2
C2 = H3+H4
IF (ABS(CPHI(I,J)).LT.O.707) GO TO 10
DELPHS = (SPHI(I+I,J)-SPHI(I-1,J)) /CPHI (I,J)
DELPHT = (SPHI(I,J+I)-SPHI(I,J-1))/CPHI(I,J)
GO TO 20
1C DELPHS = (CPHI (I-I,J)-CPHI(I+I,J))/SPHI (I,J)
DELPHT = (CPHI (I,J-1)-CPHI (I,J÷I))/SPHI (I,J)
20 D1 = (BTH(I,J+I)-BTH(I,J-I))/BTH(I,J) +(RHO(_,J÷I)-RHO(I,J-I))/
IRHO (I,J)
D1 = D1/CI+CPHI(I,J)/ROM (I,J) ÷DELPHS/C2
D2 = (BTH(I+I,J)-BTH(I-!,J))/BTH(I,J)÷(RHO(I÷I,J)-RHO(I-I,J))/
IRHO (I,J)
D2 = D2/C2÷SPHI(I,J)/ROM(I,J)-DEiPHT/C1
A0 = 2./H1/H2÷2./H3/H4
A(I,I,J) = (2./HI+DI)/AO/CI
A(2,I,J) = (2./H2-DI)/A0/CI
A(3,I,J) = (2./H3+D2)/A0/C2
A(4,I,J) = (2./H4-D2)/AO/C2
KNEW = XIOM (I,J)*W(I,J) _2+ZETOM (I,J)
IF (I.GE. ILE(J).AND.I.LE.ITE(J)) GO TO 30
KNEW = KNEW+WTH (I,J)/MSFI_BTH(I,J) _RHO(I,J) _WSUBS (I,J)*DLDU(I,J)
GO TO _0
3O DVTEMP = (ROM(I,J+I)*VTH(I,J+I)-ROM(I,J-1)_VTH(I,J-I))/C1
DCH = ABS(DVTEMP-DVTHDT (I,J))
135
DCHANG = AMAX1 (DCHANG, DCH)
IF (DCHANG.EQ.DCH) ICH = I
IF (DCHANG. FQ. DCH) JCH = J
DMAX = AMAXI (DMAX,DVTEMP)
DMIN = AMINI(DMIN,DVTEMP)
DVTHDT(I,J) = DNEW_'DVTEMP+ (1.-DNEW) _'DVTHDT(I,J)
KNEW = KNEW+WTH (I,J)/ROM (I,J)_DVTHDT(I,J) ÷FT(I,J)
IF (GAM.EQ.0.) NNEW=KNEW+OMEGA_(LAMDAF(UOM(I,J+I) ,I,J+!)-
I LAMDAF(UOM (I,J-I),I,J-I))/C1
4C KNEW = KNEW_ROM(I,J) /A_.*BTH(I,J) /MSFL*RHO(I,J)/W_UBS{I,J)
K(I,J) = KNEW
5O CONTINUE
IF (ITER.GT.1) WRITE(NWRIT,1010) DCHANG,ICH,JCH, DVTHDT(ICH,JCH) ,
I DMAX, DMIN
C
C--PRINT DEBUG OUTPUT
C
IF (IDFBUG.LE.0) RETURN
IF ((ITER/IDEBUG)erDEBUG.NE.ITER. AND.ITER.NF. I) RETrfRN
WPITE (NWRT5,1020)
DO 60 J=2,MHT
DO 60 I=I,MM
60 WRITE(NWRT5,1030) I,J, (A(IJ,I,J) ,IJ=1,4) ,K(I,J)
WRITE (NWRT5,1040)
RETURN
C
C- -FOR MAT STATEMENTS
C
1000 FORMAT(/////IX,22(IH*)/1X,16H * ITERATION NO.,I3,3H */lX, 22 (IH*))
1010 FORMAT (//5X,26HMAXIMUM CHANGE IN DVTHDT =,GI3.5,11X,6HAT I =,I3,
15}{, J =,I3,1H,,6X,14HWHERE DVTHDT =,GI3.5/5X,26HMAXIMUM VALUE OF
2DVTHDT =,G13.5/5X,26HMINIMUM VALUE OF DVTHDT =,G13.5)
1920 FORMAT (1HI//30X,67(IH_)/30X,67H_ COEFFICIENTS OF MATRIX EQU
1ATION FOR STREAM FUNCTION */3CX, 67 (IH_) /// 5X, IHI,5X,1HJ,
26X,4HA (I) , 12X,4HA(2) ,12X,4HA(3) ,12X,4HA (4), 13X, IHK//)
1030 FORMAT (216,5G16.6)
10_0 FORMAT (IHI)
END
SUBROUTINE SOR
C
C--SOR SOLVES THE SET OF MATRIX EQUATIONS, A_U=K
C--BY THE SUCCESSIVE OVERRELAXATION TECHNIQUE
C
COMMON NREAD,NWRIT,ITER,IEND,NWRT1,NWRT2,NW_T3,NWRT4, NWRTS,NW_T6
COMMON/INPUTT/GAM,AR,MSFL, OMEGA, REDFAC,VELTOL,FNEW, DNEW,MBI,MBO,
MM,MHT,NBL,NHUB,NTIP,NIN,NOUT,NBLPL, NPPP, NOSTAT,NSt,NLOSS,
LSFR, LTPL, LAM VT, LROT, LBLA D, LETEAN, ANGROT, IMESH,ISLINE,
ISTATL, IPLOT, ISUPER, ITSON, IDEBUG, ZOMIN, ZOMBI, ZOM BO, ZOMOUT,
ROMIN, ROMBI, RCMBO, ROMOUT, ZHIN, ZT IN, ZHOUT, ZTOUT, RHIN, RTI N, RHOUT,
RTOUT,TITLEI (20) ,ZHUB(50) ,RHUB(59) ,ZTIP(50),RTIP(59),SFIN(50),
RADIN (50) ,TIP (50) ,PRIP(50),LAMIN (50) ,VTHIN(50) ,SFOUT(50) ,
RADOUT(50) ,PROP(50) ,LOSOUT(50) ,LAMOUT(5C) ,VTHOUT(50) ,
BETALE (50) , BETATE (50) ,ZHST (50), ZTST (50), BHST (50), RTST (50) ,
FLFR(50) ,PERCRD(50),PERLOS(50) ,ZBL(50,50) ,RBL(50,50),
136
I THBL(50,50) ,TNBL(5Q,50) •TTBL(5O,50) •THIBL(50,5_) ,TH2BL(50,_ _)
COMMON/CALCON/MMM I , MHTP I ,CP, EXPON, TGPOG, PITCH, RLEH, RLET, RTEH, PT _T,
I ZLE (50) ,RLE (5C) ,ZTE (50) ,PTE(5G) , ZLFOM (10 1) ,RLEOM (Ini) ,
2 SLEOM(I01) •THLEOM(IOI),ZTEOM(101) •RTEOM(I01) •STEOM(I01) •
3 THTEOM(IOI),ILE(IOI),ITE(IOI),ZOM(IOO,IOI)•ROM(IO0,101) •
4 SOM (I00, I0 I) •TOM (100, I01) ,BTH (I00 • I0 I) •DTHDS (I00, I0 I),
5 DTHDT (100,101) •PLOSS (100 • 1,"1) ,CPHI (100, lC 1) ,SPHI (100,101)
COMMON/VARCOM/A(4•103,1n1) • UOM(lr_0,101) ,K (1C0,101) ,RHO (1OO, 101),
1 WSUBS (I00• I01), WSUBT (100 ,101) ,WSUBZ(100,101) ,WS[]BR(100, 101)•
2 WSUBM (I00• 101) • WTH (1]C• I 01),VTH(ICO,I01) ,W(I00,I01) ,
3 ALPHA (IOC, I01), BETA (I00 • IeI) ,WWCR (100•101),CURV(100,101),
WLSURF (I00,10 I), WTSURF (1 C_',101) ,CAMP (100,101) ,SAMP(10_, 101),
5 RHOAV (I00, I0 I), DELRHO (I0 0,101),FT(!¢0,1C1),DFDM(lOn,1nl),
6 XIOM (I00,I01) •ZETOM (I00, 1C1) ,DLDU (100,101)
REAL K•LMAX,LMIN
C
C--AFTER FIRST ITERATION, JUST SO LVE EQHATTON BY SOR
C
IF (ITER.GT.I) GO TO 70
C
C--FIRST ITERATION ONLY• CALCULATE OPTIMUM ORF
C
C--SET BOUNDARY VALUES TO ZERO• AND INTERIOR VALUFS TO ONE
DO 10 I=I,MM
UOM(I,1) = O.
10 UOM(I,RHTPI) = O.
DO 20 J=2,MHT
DO 20 I=I,MR
20 UOM(I,J) : 1.
C
C--CALCULATE OPTIMUM O_F
ORFMAX = 2.0
ICOUNT = 0
30 LMAX = 0.
LMI N = 1.
ORF = ORFMAX
ICOUNT : ICOUNT÷I
DO _0 J=2,MHT
DO 40 I=I,MM
UNEW = A (I,I,J)_'UCM(I,J-1) +A(2,I,J) _HOM(I,J+I)
IF (I.NE.I) UNEW=UNEW+A (3, I, J) *UOM (T-I, J)
IF (I. NE.MM) UNEW=UNEW+A(_,I,J)#UOM(I+I,J)
RATIO = UNEW/UOM (I,J)
LMAX = AMAXI(LMAX,RATIO)
LMIN = AMINI(LMIN,RATIO)
q0 UOM(I,J) = UNEW
IF (LMAX.GT.I.) LMAX=I.
ORFMAX = 2./(I.+SQRT (1.-LMAX))
ORFMIN = 2./(I.÷SQRT(I.-LMIN))
IF ((ORFMAX-ORFMIN).GT. (2.-ORFMAX).OR. (ONF-ORFMAX).GT.0.0005)
1GO TO 30
ORF = ORFMAX
WRITE (NWRIT, 1000) ORF
C
C--RESTORE U BOUNDARY VALUE AT SHROUD
DO 50 I=I,MM
50 UOM(I,MHTPI) = I.
C
C--SOLVE MATRIX EQUATION BY SOR
13'/
C
7@ ERROR = 0.
DO 89 J=2,MHT
DO 80 I=I,MM
CHANGE = A (1,I,J)*UOM (I,J-1) +A(2,I,J)*_IOM(T,J+I) +K (I,J)-UOM (!,J)
TF (I.NE.!) CHANGE=CHANGE+A (3,I,J)_UOM(r-1,J)
IF (I.NE.MM) CHANGE=CHANGE+A(4,I,J) _UCM (I÷l,J)
CHANGE = ORF_CHANGE
ERROR = AMAX1 (ERROR,ABS (CHANGE))
8@ UOM (I,J) = UOM (I,J) +CHANGE
IF(ERROR.GT.I.E-5) GO TO 70
RETURN
IOO0 FORMAT (//5X,_0HCALCULATED OVERRELAXATTON FACTO_ (OPF) =,F7. _)
END
SUBROUTINE LOSSOM
C
C--LOSSOM COMPUTES THE RATIO OF ACTUAL TO IDEAL RELATIVE TOTAL PRESSURE
C--AT THE DOWNSTREAM INPUT STATION, AND THEN DTSTRIBUTES THIS LOSS ON
C--THE OHTHOGONAL MESH AS SPECIFIED BY THE INPUT
C
COMMON NBEAD, NHRIT, ITER,IEND,NWRTI, NWRT2,NWPT3,NWRT4,NWRT5,NW_T6
COMnON/INPHTT/GAM,AR,MSFI, OMEGA, BEDFAC, VELTOL,FNEW, DNEW,MBI,MBO,
I MM, MHT, NBL, NHUB, NTIP, NIN, NOUT, NBLPL, NPPP, NOSTAT, NSL, NLOSS,
2 LSFR, LTPL, LAM VT, LROT, LBLAD, LETE _N, ANG_OT, IMESH, ISL IN E,
3 ISTATL, I PLOT, ISUPER, ITSON, IDEPUG, ZOMIN, ZOMBI, ZOMBO, ZOMOUT,
_OMIN, ROMBI , ROMBO, ROMOUT , ZHIN, ZT IN, ZHOUT, ZTOUT, R HIN, RTIN, R HOUT,
5 RTOUT,TITLEI (20) ,ZHUB(50), RHUB (50) ,ZTIP(Se) ,RTIP (50) ,$FIN (5@) ,
6 RADIN(50),TIP(5n.) ,PRIP(50),LAMIN(5@),VTHIN(50),SEOUT(5C),
7 RADOUT(5@),PROP(50),LOSOUT(5_),LAMOUT(_0),VTHOUT(50) ,
R BETALE(50) ,BETATE (50) ,ZHST (5@) ,ZTST (50) ,PHST (50) ,RTST(50) ,
9 FLFR (5C) ,PERCRD (5_) ,PERLOS (50) , ZBL (50, 5@), RBL (50,50),
I THBL (50, 50) , TNBL (50,50) ,TTBL (50 , 50) , TH IBL (50,5_) ,TH2BL (50,50)
COMMON/CALCON/MMM1 , M HTPI ,CP, EXPON, TGROG, PITCH, RLEH, RLET, RTEH, RT ET,
1 ZLE (56) , RLE (50) , ZTE (50) , RTE (50) , ZLEOM (I0 1), RIEOM (Ig I),
2 SLEOM (I0 I) ,THLEOM (I01) ,ZTEOM (I01) ,RTEOM (I0 1), STEOM (I01) ,
3 THTEOM (101) ,IIE (I0 I) , ITE (101) ,ZOM (I0_, I01) ,ROM (100, I@1) ,
4 SOM (I00,101) ,TOM (I00,I01) , BTH (100, I_ 1) ,DTHDS (I07,10 I),
5 DTHDT (100, I0 1), PLOSS (I00,1C1) ,CPHI (I00, I01) ,SPHI (100,10 1)
COMMON/VARCOM/A (8,100,101) ,UOM(100, Inl) ,K(1C0,101),RHO (I0_,101),
I WSUBS (100, IC I), WSUBT (I00, I01) , WSUBZ (IOC, I0 I) , WSUBR (10_, I01) ,
2 WSUBM(10n,101),WTH(100,1rl),VTH(10O,101) ,W(ICO,I01) ,
3 ALPHA (I00, I01) ,BETA (100,16 I) , WWCR (1_0, 10 1) ,CURV ( I09, 101) ,
WLSURF(100,101),HTSUPF(106,101) ,CAMP(100,101),SAMP(10(_,101),
5 RHOAV(1C0,1_I),DELRHO(100,191),FT(100,101),DFDM(10@, 101),
6 XIOM (1CO, I0 I), ZETOM (100,1C I), DLDU (100,10 !)
COMMON/t_OTATN/ZHROT(50) ,RHROT(50) ,ZTROT(50) ,_TROT(50) ,
I ZLEOM_ (1CI) ,RLEOMR (1_ I) , ZTEOMR (I01), RTEOMR (10 1),
2 ZBLROT (50,50) ,[_BLROT (50,5C), ZOMROT ( I00,10 I), ROMROT (I00, lq i)
DIMENSION ZTEMR (2) ,RTEMR(2) ,SOMIN(!01) ,SOMOUT(101)
REAL LAMDAF,LOSOUT
II = I
I2 = MM
RFAC2 = REDFAC_*2
C
138
C- -REI NITIALIZE LAMDAF AND RVTHTA FOR INCOMPRESSIBLE CASE
C
IF (GAM.NE.0.) GO TO 5
IF (LAMVT. EQ. 0. AND. LSFR. EQ. C) RETURN
CALL LAMNIT
IF (MBI.NE.0) CALL RVTNIT
RETURN
C
C--RE INITIALIZE LAMDAF, RVTHTA, TIPF, AND RHOIPF
C
5 IF (LAMVT.EQ.0.AND.LSFR.EQ._) GO TO 10
CALL LAMNIT
CALL TIPNIT
CALL RHINIT
IF (MBI.NE.0) CALL RVTNIT
GO TO 10
C
C--ENTRY POINT TO UPDATE PLOSS FOR TVELCY
C
ENTRY LOSSTV (II)
IF (GAM.EQ.0.) RETURN
II = II
I2 = II
RFAC2 = I.
C
35 CALL SPLINT(SFOUT,LOSOUT,NOUT,O.,1,TRMP,TEMPI,TEMP2)
DO 40 J=I,MHTPI
DO 40 I=I1,I2
40 CALL SPLENT (UOM(I,J) ,I,PIOSS (I,J),TEMPI,TEMP2)
IF(MBI. EQ.0.OR.NLOSS.GT.0) GO TO 60
C--WITH BLADES, AND LINEAR DISTRIBUTION OF LOSS WITHIN BLADES
DO 50 J=I,MHTPI
SLENTH = STEOM(J)-SLEOM(J)
DO 50 I=11,I2
PC = (SOM(I,J)-SLEOM(J))/SLENTH
50 PLOSS(I,J) = AMINI(I.,AMAXI(0.,PC})_PLOSS(I,J)
RETURN
C--NO BLADES, OR INPUT DISTRIBUTION OF LOSS, CALCULATE SOMOUT
60 IF (ITER.GT.1) GO TO 85
CAN = COS(ANGROT)
SAN = SIN(ANGROT)
ZTEMR (I) = ZHOUT_CAN+RHOUT_SAN
139
RTEPIR ( 1 ) = RHOUT*CAN-ZHOUT*SAN
ZTERR ( 2 ) = ZTOUT*CAN+RTOUT*SAN
RTEMR ( 2 ) = RTOUT*CAN-ZTOU?*SAN
DO 80 J = l , l H T P l
CALL INRSCT (ZOlROT ( 1 , J ) ,ROMROT ( 1 , J ) ,lH,ZTEflR,RTEHR,2 , Z I p , R I R )
DO 70 1 = 2 , M l
I F (ZIR.LE.ZO!IROT(I,J)) GO TO 8 0
7C CONTINUE
I = MNtl
6r! SOlOUT (J) = S O N ( 1 - 1 , J ) +SQRT ( (ZIR-ZOMROT ( 1 - 1 , J ) ) * * 2 +
1 (RIR-ROMROT (1-1, J ) ) **2)
8 5 I F ( 1 B I . E Q . C ) G O TO 1 0 0
C--UITH BLADES, A N D INPUT DISTRIBUTION OF LOSS WITHIN BLADES, A N D LTNPAR
C--DISTRIBUTION CF LOSS FROM TRAILING EDGE TO DOWNSTREAY INPUT STATION
CALL S P L I N T (PERCRD,PERLOS,NLOSS, J . , l,PERLS,TE!Pl,TEMPZ)
DELPL = 1 . -PERLOS (NLOSS)
DO 9 0 J = l , l H T P l
SLENTH = S T E O M ( J ) - S L E O l ( J )
DELPCO = DELPL/ (SONOIJT ( J )-STEON (J))
PERLS = P.
DO 9C I = I l , I 2
I F (I.LT.ILE(J)) G O TO 9 0
I F ( I . LE. I T E ( J ) ) PC= (SO1 ( T , J ) -SLEOM ( J ) ) /SLENTH
I F ( I . L E . I T E ( J ) ) CALL S P L E N T ( P C , l , P E R L S , T E l P l ,TEMP2)
I F ( I.GT. I T E ( J ) ) PERLSzPERLOS (NLOSS) + ( S O R ( I , J ) -STFOfl ( J ) ) *DELPCO
I F (PERLS.GT. 1 . 0 ) P E R L S = l . C
9 0 PLOSS ( I ,J ) = PERLS*PLOSS ( I , J )
RETURN
C--NO BLADES, CALCIJLATE S O l I N
1CC IF(ITER.GT.1) GO TO 1 3 5
ZTERR ( 1 ) = ZHIN*CAN+RHIN*SAN
RTEMR ( 1 ) = RHIN*CAN-ZHIN*SAN
ZTEiYR ( 2 ) = ZTIN*CANtRTIN*SAN
RTERR ( 2 ) = RTIN*CAN-ZTIN*SAN
DO 130 J = l , H H T P l
CALL INRSCT (ZOMROT(1,J) ,ROlROT ( 1 , J ) , M f l , Z T E M R , R T E R R , 2 , Z T R , R I R )
DO 110 I = l , M R
I F (ZIR.LE.ZOlROT(I,J)) GO TO 1 2 3
110 CONTINUE
120 I F (I.EQ.1) SOClIN(J)=3,
130 I F (I.NE.1) S O M I N ( J ) = S O f l ( I - l , J ) +SQRT((ZIR-ZOlROT(I-1,J))**2+
1 (RIR-ROflROT ( 1 - 1 , J ) ) **2)
C--NO BLADES, A N D LINEAR O R INPUT D I S T R I B U T I O N OF LOSS FROM
C--UPSTREAl TO DOWNSTREAM I N P U T STATIONS
135 I F (NLOSS.GT.0) CALL S P L I N T (PERCRD,PERLOS,NLOSS,O., 1 , P E R L S ,
1TEMP1 , T E f l P 2 )
DO 1 4 0 J = l , H H T P l
SLPNTH = SOlOUT ( J )- S O M I N (J)
DO 140 I = I 1 , 1 2
PC = (SO1 (1.J) - S O H I N ( J ) ) /SLENTH
PERLS = PC
I F (NLOSS. GT. 9) CALL SPLENT (PC, 1 ,PERLS,TEMPl , T E f l P 2 )
I F (PC.LE.0.) PEBLS=O.
I F (PC. GE. 1 .) P E R L S = l .
1 4 0 PLOSS ( I ,J ) = PERLS*PLOSS ( I , J )
RETURN
10oC FORlAT ( / / 5 X , 3 1 H I N I T I A L CALCULATED LOSOUT ARRAY/lCX,2HJN,6X,6HLOSO
1UT/ ( 9 X , I 2 , 3 X , F 10.6) )
10 IC FORMAT (//SX, 29HCALCULATED I L E AND I T E A R R A Y S / l @ X , 1AJ , 5 X , 3 A I L E , 3 X ,
140
1 3 H I T E / ( 9X, I2,4 X, I 3 , 3 X , 13) )
1 0 2 0 FORMAT ( l H 1 , 5 X , 8 2 H I N P U T PROP VALUES ARE LARGER THAN I D E A L TOT'AL PR
l E S S U R E , RESULTING I N NEGATIVE LOSS)
END
1
SUBROUTINE NEWRHO
C
C--NEYRHO CALCULATES VELOCITY CORPONENTS, VELOCITY MAGNTTUDE,
C--AND NEW DENSITY AT EACH HESH POINT
C
COMNON NREAD, NWRIT, I T E R , IEND,NWRT1, NWRT2,NWRT3, NWRTU ,NWRT5, NBRT6
,
COR ?ION/L NPDTT /G& fi ,AB ,83 P L, 0 PI E G A R E D F AC, V ELTOL, FN El, DN EW ,HB I, YBO ,
1 ~H,BHT,NBL,NHUB,NTIP,NIN,NOU?,NBLPL,NPPP,NOSTA?,NSL,NLOSS,
2 ,
LSFR LTPL, LA HVT, LROT, LBLAD, LET E A N, A N G ROT, IMES H, I S L I N E,
3 I S T A T L , I P L O T , I S U P E R , I T S O N , IDEBUG,ZOflIN,ZOHBI,ZO~BO,ZOMOUT,
4 R O N 1 N , R O N B I , ROKBO, ROPlOUT, ZHIN , Z T I N , ZHOUT, ZTOUT, R H I N , R T I N, RHOUT,
5 R T O U T , T I T L E I (20)vZHUB(S0) v R H U B ( 5 0 ) , Z T I P ( 5 0 ) , R T I P ( 5 0 ) ,SFIN (50),
6 R A D I N ( S 0 ) , T I P ( S O ) ,PRIP(SG) ,LAMIN(50) ,VTRIN(50) ,SFOUT(50),
7 RADOUT(50) ,PROP(SI)) ,LOSOUT(SO) ,LAMOUT(SO) ,VTHOUT (SO),
8 B E T A L E ( 5 0 ) , B E T A T E ( 5 3 ) ,ZHST ( 5 0 ) , Z T S T (50) , P H S T ( S O ) , R T S T ( 5 0 ) ,
9 F L P R ( S 9 ) ePERCRD(5C) ,PERLOS(SO) , Z B L ( 5 0 , 5 0 ) , R B L ( 5 0 , 5 0 ) ,
1 THBL (50,50) ,TNBL (50,5C) ,TTBL (50,50) ,TH1 BL (Sr),5C) ,TH2BL (50,SO)
COH~ON/CALCGN/HHH~,HHTP~,CP,EXPON,TGROG,PITCH,RLEH,RLET,RTEH,RT~?,
1 Z L E ( 5 C ) ,RLE ( 5 9 ) , Z T E ( S C ) , R T E ( 5 C ) ,ZLEOfl ( 1 0 1 ) , R L E O H ( I O l ) ,
2 S L E O F l ( l O 1 ) ,THLEOR ( 1 0 1 ) ,ZTEOH ( 1 0 1 ) ,RTEOM ( 1 0 1 ) ,STEON ( 1 0 1 ) ,
3 THTEOH(101) , I L E ( 1 @ 1 ) , I T E ( 1 0 1 ) ,ZOiY(l30,1C1) , R O f l ( l O @ , l d l ) ,
4 S O H ( 1 0 0 , l O 1 ) ,TOM ( 1 3 0 , f 0 1 ) , BTH ( 1 0 0 , l O 1 ) ,DTHDS ( 1 0 0 , l O 1 ) ,
5 D T H D T ( l O O , 1 0 1 ) , P L O S S ( 1 0 0 , 1 0 1 ) ,CPAI(1C~,1~1),SPHI(109,101)
c o ~ a o ~ / ~ ( 4~, 1 ~O Oc, l r o3 1~) ,/UOH ~ ( 1O C , l o 1 ) ,K ( 1C O , l o 1) ,R H O ( 1 C O , l 3 1 ) ,
1 WSUBS(100,101) ,WSUBT(10O,lQl) ,BSUBZ(10@,101) ,WSUBR(100,101),
2 Y S U B M ( 1 0 0 , 1 0 1 ) ,WTH(100,1~1),VTH(100,101) , W ( l C O , l O l ) ,
3 , ,
A L P H A ('I 0 0 , 1 0 1 ) BETA ( 1 0 0 , l o 1) A W C R ( 1 0 0 , lr) 1) ,C U R V ( 1 0 0 , l?,1) ,
4 ~ ~ ~ ~ R P ( 1 0 0 , 1, W 0 1T )S U R P ( ~ O O , ,~ c~~~ ~) ~ ( 1 0 0 , 1 0, s1 ~) ~ ~ ( 1 0 0 , 1 0 1 ) ,
5 R H O A V ( 1 0 0 , 1 0 1 ) ,DELRHO ( 1 0 0 , l O I ) ,FT (1Or3,1@ 1 ) ,DFDB ( l @ @ 1, 0 1 ) ,
6 X f O H ( 1 0 0 , 1 @ 1 ) ,ZETON ( 1 0 0 , 1 0 1 ) , D L D U ( 1 @ @ , 1 0 1 )
DIHENSION DUDS(1OO) , T V E R T ( l O l ) , U V E R T ( I O I ) r D l J D T ( l d 1 ) ,TPP ( 1 0 1 ) ,
1 P R E L ( l O l ) , D P D T ( l O l ) ,DTDT(lCI) ,AAA(101)
REAL BSPL,LAHDAP,LAHBDA, LAMBDO
RELER = 0 .
RELERA = 0.
XlEW = 1.0
ZNEY = 1.0
C
C--CALCULATE WSUBT FROM THE PARTIAL O F UOIl AITH RESPECT T O S U S I N G THE
C--AVERAGE BLADE-TO-BLADE DENSITY FOR CONTINUITY
C
DO 1 0 J = l , M H T P l
,
CALL S P L I N E (SOH (1, J ) UOH ( 1 , J) ,HH,DUDS,AAA)
DO 10 I = l , M H
U S U B T ( 1 , J ) = (-DUDS(I)*HSPL/(ROH(I,J)*BTH(I,3)) -
IDFDH (I,J) *DELRHO ( I , J ) / l Z . * C O S ( B E T A ( I v J ) ) *SAMP ( I , J) )/RHOAv ( 1 , J )
10 CONTINUE
C
C--CALCULATE DERIVATIVES IN THE T DIRECTION O F THE SARE VARIABLES, AND
C--CALCUL&TE NEW V E L O C I T I E S A I D NEW DENSITY
141
IREL = I
JREL = 1
ICOUNT = 0
DO _0 I=I,MM
DO 20 J=I,MHTPI
TVERT(J) = TOM(I,J)
20 UVERT(J) = UOM(I,J)
CALL SPLINE(TVERT,UVERT,MHTPI,DUDT,AAA)
DO 30 J=I,MHTP1
WSUBS (I,J) = (DUDT(J)*MSFL/(ROM(I,J)_BTH (I,J))-
IDFDM(I,J)$DELRHO(I,J)/12._COS(BETA(I,J)) _CAMP(I,J))/_HOAV(I,J)
WTH (I,J) = ROM (I,J)" (_SUBS (I,J)_DTHDS (I,J)+WSUBT(I,J) _DTHDT(I,J))
OMR = OMEGA_ROM(I,J)
LAMBDA = LAMDAF(UOM(I,J),I,J)
LAMBDO = RVTHTA (UOM (I,J),I,J)
IF (I.LT.ILE(J)) WTH(I,J)=LAMBDA/ROM(I,J)-OMR
IF (I.GT.ITE(J)) WTH (I,J)=LAMBDO/ROM (I,J)-OMR
VTH(I,J) z WTH(I,J) +OMR
WSQ = WTH(I,J) _2+WSUBS (I,J) _'*2+WSUBT (I,J) _2 _
WTEMP = SQRT(WSQ)
ERR = 0.
IF (W(I,J).NE.0.) ERR=ABS((WTEMP-W(I,J))/W(I,J))
RELER = AMAXI (f_ELER,ERR)
IF (RELER. EQ. ERR) IREL = I
IF (RELER.EQ. ERR) JREL = J
IF (ERR.GE.VELTOL) ICOUNT=ICOUNT+I
RELERA = RELERA÷I[RR
W(I,J) = WTEMP
IF (GAM.EQ.0.) GO TO 30
TIPT = TIPF (UOM (I,J))
RHOIP = RHOIPF(UOM (I,J))*(I.-PLOSS (I,J))
TPP(J) = TIPT-(2._OMEGA*iAMBDA-OMR_2)/CP/2.
IF (TPP(J).LT.0.) GO TO 60
PREL (J) = RHOIPSAR_TIPT_ (TPP(J)/TIPT)**(GAMsEXPON)
TTIP = (TPP(J)-WSQ/CP/2.)/TIPT
IF (TTIP.LT.0.) GO TO 50
RHO(I,J) = RHOIP*TTIP_$EXPON
30 CONTINUE
IF (GAM.EQ.0.) GO TO _0
CALL SLOPES(TVERT,TPP,MHTPI,DTDT)
CALL SLOPES(TVERT,PREI, MHTPI,DPDT)
DO 35 J=I,MHTPI
XIOMT = (AR/PREL(J) _DPDT(J)/CP-DTDT (J) /TPP (J) ) /2.
ZETOMT = OMEGA*_2_ROM (I,J)_CPHI(I,J)-AR/PREL(J) _TPP(J) _'DPDT(J)
XIOM (I,J) = XNEWaXIOMT÷ (I.-XNEW) sXIOM(I,J)
35 ZETOM(I,J) = ZNEW*ZETOMT+(I.-ZNEW)_ZETOM(I,J)
40 CONTINUE
RELERA = RELERA/FLOAT(MM_MHTPI)
IF (ITER.GT.I) WRITE(NWRIT, I_2O) RELER,IREL,JREL, RELERA,ICOUNT
C
C--ADJUST PRINTING CONTROL VARIABLES
C
IF (RELER.GE.VELTOL) RETURN
IF (RELER.EQ.9.) RETURN
IEND = IEND+I
IF (IMESH.GT.I) IMESH=I
IF (ISLINE.GT. I) ISLINE=I
IF (ISTATL.GT.I) ISTATL=I
IF (IPLOT.GT. I) IPLOT=I
142
IF (ITSON.GT.I) ITSON=I
IF (IDEBUG.GT. I) IDEBUG=I
RETURN
5C WRITE (NWRIT, I000)
STOP
60 WRITE (NWNIT, I019)
STOP
I00¢ FORMAT(////68H PROGRAM STOPPED IN NEWRHO DUE TO EXCESSIVE STREAM F
IUNCTION GRADIENT)
1010 FORMAT(////61H THE UPSTREAM INPUT WHIRL ON TANGENTIAL VELOCITY IS
ITOO LARGE)
1020 FORMAT(/ 5X,3"_HMAXIMUM RELATIVE CHANGE IN VELOCITY =,G11._,
18H AT I =,I3,£H, J =,I3/5X,37HAVERAGE RELATIVE CHANGE IN VELOCITY
2 =,GI1.4/LX,]7HNUMBFR OF UNCONVERGED MESH POINTS =,I5)
END
SIIBROUTI NE OUTPUT
C
C--OUTPUT CALCULATES AND PRINTS THE MAJOR OUTPfJT DATA
C--AT THE ORTHOGONAL MESH POINTS, ALONG THE STREAMLINES,
C--AND ALONG STATION LINES FROM fIUB TO SHROUD
C
COMMON N_EAD, NWRIT,ITER,IEND,NWRTI,NWRT2,NWRT3,NWRT4,NWRTL,NWRT6
COMMON/INPUTT/GAM,hR,MSFI,OME_A,nEDFAC,VELTOL,FNEW,DNEW,MBI,MBO,
I MM,MHT,NBL,NHB_,NTIP,NIN,NOUT,NBLPL, NPPP,NOSTAT,NSL,NLOSS,
2 LSFR,LTPL, LAMVT,L_OT,LBL_D,LETEAN,ANGROT,IMESH,ISLINE,
ISTATL, I BLOT, YSUPFR, ITSO N, TDEBUG , ZOMIN, ZOMBI, ZOMBO, ZOMOUT,
ROMIN, ROMBI, ROMBO, ROMOUT, ZHIN , ZT IN, ZHOUT, ZTOUT, RHIN, RTI N, RHOUT,
RTOUT,TITLEI (20) ,ZHUB (5@) ,RHUB(5 _) ,ZTIP(_C) ,RTIP (50) ,SFIN (<0) ,
RADIN (50) ,TIP (50) ,P_IP (50) ,LAMIN (5!') ,VTHIN(50) ,SFO[IT(5 _) ,
RADOUT (50) ,PROP (5 n) , LOSO[Ye (5C) ,L AMOUT (5_), VTHOUT (50) ,
BETALE (50) ,BETATE(50) ,ZHST(59) ,Z TST(50),RHST(5O) ,RTST(50) ,
FLFR (55) ,PERCRD (50), PERLOS (5D) ,Z BL (50,5C) ,_BL (50,50) ,
I THBL(50,50) ,TNBL(50,_¢) ,TTBL(5 _, 50) ,THIBL(50,L¢) ,TH2BL(_0,_)
COMMON/CALCCN/MMM 1, MHTP I ,CP, EXPON,T G}_OG, PITCH, PLEH, RLET,RTEH, _TET,
I ZLE(50),RLE(50),ZTE(LC) ,RTF_(50), ZLEOM(101) ,RLROM (I _1) ,
2 SLEOM (I_ I) , YHLEOM (i0 I), ZTEOM (lt ! ) ,PTEOM(101) ,STEOM (101) ,
3 THTEOM (ICI) ,ILE(1O I), ITE (101) ,ZOM (100, I01) ,ROM (I00, I¢ 1) ,
4 SOM (100, I01) ,TOM (I00, I0 I), BTH (10_, I0 I) ,DTHDS (IC_, I_ I),
5 DTHDT (I00, IC I), PLOSS (I00,101) ,COHI (I00, I0 I) ,SPHI (100,19 I)
COMMON/VARCO_/A(_,100,101) ,UOM(I_O, 101) ,K(100,101) ,RHO(100,1_1),
I WSUBS (IOC,, 101) ,WSUBT (100,171) ,WSUBZ (100, I0 I), WSUBR (I00, 101),
2 WSUBM (I00, I01) ,HTH (100,I01) ,VTH (I0,_, I01) ,W (I0_,I01) ,
3 ALPHA (I00, I_I) ,BETA (100, i¢ I) ,WWCR (10_, 10 I) ,CURV (I00, I01),
WLSURF (I00, I0 I), WTSURF (I0_,10 1) ,CA_P (!00, I01) ,SAMP (100, I0 I) ,
5 RHOAV (I0_, 101) ,DELRHO(IO0, I01), FT (100,101) ,DFDM (I00,191),
6 KIOM (I00, I0 I), ZETOM (I00, IC I), DLDU (1_, I0 I)
COMMON/SLCOM/ILS(50) ,ITS(50),ZSL(109,50) ,_SL(100,50),MSL(100,50),
1 WZSL (I00,50) , WRSL (100,50) ,WMS L (109,50) ,WTHSE (100,50),
2 ALPSL (I00,50) ,BETSL (I00,5C), WSL (100,50), WWCRSL (I00,50),
3 CURVSL(100,50),WLSSL(100,50) ,WTSSL(100,5¢)
COMMON/ROTATN/ZHROT(5,%) ,SHROT (50) ,ZTROT (50) ,RTROT(50) ,
I ZLEOMR (I01) ,RLEOM_ (I0 I) , ZTEOMR (101) ,RTEOMR (I01) ,
2 ZBLROT (50,50) ,RBLROT (50,50), ZOMROT (I00, IC I), ROMROT (I00, 10 I)
DIMENSION ZST (50),RST(£C-),MST(50) ,WZST(50),WRST(5_) ,WMST(50) ,
143
I WTHST(50),ALPST(50) ,BFTST(50) ,WST(5O) ,WWCRST(50) ,CURVST (5 n),
2 WLSST(50),WTSST(50) ,PLOST(50) ,VTHST(50) ,VST(50) ,BE_BST(5 '_),
3 PST (50) , TST (50), ]_HOST (50) ,PPST (50) ,TPST (5_), PPPST (59), TPPST (5_)
DIMENSION DALDS (I07) ,TVERT(ICI) ,ALVERT(101) ,DALVER (I01) ,
I ZTEM(101),RTEM(101) ,UTEM(1C1) ,ZSLTEM(50) ,PSLTEM(50),
2 AAA(101),BBB(101) ,WZFSEX(101) ,WI_FSEX(I_I),BTFSEX(101),
3 DALDT (I 00, I01 ) ,CHOMES (2,100) , ALT EM (I00), BETEM (I00), CHOK (2)
DATA CHOMES/200*' '/,CHOK/l CH','OKED'/,BLNK/' '/,NCHOK/O/
REAL LAMDAF,LAMBDA,MSL,MST,MTFM
C
C--CALC[ILATE VELOCITY COMPONENTS AND FLOW ANGLES ON ORTHOGONAL MESH
C
DEGRAD = 180./3. 1415927
DO 10 J=I,MHTP1
DO 10 I=I,MM
WSUBM(I,J) = SQRT(WSUBS(I,J)'k_'2+WSUBT(I,J) w'*2)
SAMP (I,J) = WS UBT (I, J)/WSUBM (I, J)
CAMP (I,J) = WSUBS(I,J)/WSUBM(I,J)
WSUBZ (I,J) = WSUBS (I,J)_CPHI (I, J) -WSUBT (I,J)*SPHI (I,J)
WgUBR (I,J) = WSUBT(I,J) w'CPHI(I,J) +WSUBS(I,J)*SPHI (I,J)
ALPHA (l,J) = ATAN2(WSUBR(I,J) ,WSUBZ (I,J))
IC BETA (I,J) = ATAN2(WTH(I,J) ,WSUBM (I,J))
GO TO 30
C
ENTRY TOUTPT
C
C--CALCULATE VELOCITY COMPONENTS ON MESH, AFTER TRANSONIC SOLUTION
C
DO 20 J=I,MHTP1
DO 20 I=I,MM
WSUBM(I,J) = W(I,J)*COS(BETA(I,J))
WTH(I,J) = W(I,J)*SIN (BETA (I,J))
WSUBZ(I,J) = WSHBM(I,J)*COS(ALPHA(I,J))
WSUBR (I,J) = WSUBM (I,J)*SIN (ALPHA(T,J))
20 VTH(I,J) = WTH(I,J) +OMEGAW'ROR(I,J)
C
C--COMPUTE BLADE SURFACE VELOCITIES
C
30 CALL BLDVEL
C
C--STORE 'CHOKED w MESSAGE FOR APPROPRIATE VERTICAL OI_THOGONAL
C--KESM LINES
C
NCHOK = 0
DO 25 I=I,MM
IF (UOM (I, MHTPI) .GT. O. 9999) GO TO 25
NCHOK = NCHOK+I
CHOMES (I ,I) : CHOK(1)
CHOMES(2,1) = CHOK(2)
25 CONTINUE
C
C--CALCULATE STREAMLINE CURVATURE AND CRITICAL VELOCITY RATIO ON MESH
C
DO 50 I=I,MM
DO _0 J=I,MHTPI
TVEET(J) = TOM(I,J)
_0 ALVERT(J) = ALPHA(I,J)
CALL SLOPES(TVERT,ALVERT,NHTPI,DALVER)
DO 50 J=I,MHTPI
50 DALDT(I,J) = DALVER(J)
144
DO 60 J=I,MHTPI
CALL SLOPES (5OM (1,J) ,ALPHA (1,J) ,MM,DALDS)r
DO 60 I=I,MM
CURV (l,J) = DALDS(1)*CAMP(I,J) _DALDT(I,J)*S_MP(I,J)
IF (GAM.EQ.C.) GO TO 60
TPP = TIPF(UOM (I,J))- (2.*O_EGA*LAMDAF(UO_ (I,J),I,J)-(OMEGA*
IROM (I,J))**2) /2./CP
IF (TPP.LE.C.) _PP=I,
WWCR (I,J) = W (I,J)/SQRT(TGROG*TPP)
60 CONTINUE
C
C--CHECK PRINT AND PLOT INDICATORS TO SEE IF OUTPUT CALCULATTON_
C--SHOULD BE MADE
C
IF (IMESH.LE.0) GO TO 32
IF ((ITER/IMESH)*IMESH.EQ. ITER. OR. TTER. EQ.I) GO TO 38
32 IF (ISLINE.LE.O) GO TO 33
IF ((ITER/ISLINE)*ISLINE.EQ.ITER.OR.ITER.EO.I) GO TO 3R
33 IF (ISTATL.LE.0) GO TO 3_
IF ((ITE_/ISTATL)*[STATL.EQ.ITER.OR.ITER.EQ. I) GO TO 38
3_ IF (IPLOT.LE.3) GO TO 35
IF ((ITER/IPLOT)*IPLOT.EQ. ITER.OR.ITER.EQ.I) GO TO 38
35 IF (ITSON.LE.9) RETURN
IF ((ITELR/ITSON)*ITSON.NE. ITER) RETURN
38 IF (MBI.EQ.O) GO TO SO
C
C--CHECK IF UPPER OR LOWER SUPFACE IS SUCTION SURFACE
C
REVERS = 0.0
IF ((LAMDAF(.5,IIF(1) ,I)-RVTHTA (.5,ILE(1),I)) .GT. r•) C,O TO 80
REVERS = 1.0
DO 70 J=I,MHTPI
DO 70 I=I,MM
WDUM = WLSURF (I,J)
WLSURF(I,J) = WTSURF(I,J)
7O WTSURF(I,J) = WDUM
C
C--PRI NT OUTPUT ROW BY ROW FROM HfIB TO TIP ON ORTHOGON_L MESH
C
80 IF (IMESH.LE.0) GO TO 100
IF ((ITER/IMESH)_IMESH.NE. I TEP.AND.ITEP.NE.I) GO TO IC9
WRITE (NWRTI, 1000)
IF (REDFAC. LT.I.0) WRITE(NWRTI,1159) ITER
IF (REDFAC.EQ.I.0.AND. IEND.LE.O) WRIT_(NWRT1,116_) ITFR
IF (REDFAC.EQ.I.0.AND. IEND. GE.I._ND.ISUPER. LE.I) WRITE(NWRTI,117_)
IF (REDFAC. EQ.I.0.AND.TEND. GE, I.AND.ISUPEP.EQ.2) WRTTE(NWRTI,1189)
DO 90 J=I,MHTPI
WRITE (NWRT I, I0 I0) J
WRITE (NWRTI, 1020)
DO 90 I=I,MM
PHI = ATAN2(SPHI (I,J) ,CPHI(I,J))*DEGRAD
ALPHIJ = ALPHA(I,J)_DEGRAD
BETAIJ = EETA(I,J)*DEGRAD
90 WRITE (NWRTI ,1¢30) I,J,ZOM(I,J),ROM(I,J) ,UOM (I,J),WSUHM (I,J),
IWTH(I,J),W(I,J),WWCR (I,J),ALPHIJ,BETAIJ,PHI,CHOMES(I,I) ,
2CHOMES (2, I)
C
C--CALCULATION OF OUTPUT DATA ON STREAMiINES
145
C
IF (ISLINE.LE.0) GO TO 119
IF ((ITEP./ISLINE)*ISLINE.EQ.ITER.OR.ITER.EQ.1) GO TO 130
11_ IF (IPLOT.LE.0) GO TO 120
IF ((ITER/IPLOT)*IPLOT. EQ. ITER.OR.ITEB.EQ.I) GO TO !30
120 IF (ITSON.LE.0) GO TO 22C
IF ((ITER/ITSON)*ITSON. NE. ITER) GO TO 2?.0
C
C--CAL CULATE STREAMLINE ZSL,RS/ COORDINATES FCR PlaINT OUT
DO 150 I=I,M_
DO 140 J=I,MHTP1
ZTEM (J) = ZOMROT (I,J)
PTE_ (J) = ROMROT (I,J)
1 _ C' UTEM(J) = UOM (I,J)
C_LL SPLINT ([YTEM,RTEM,MHTPI ,FLFR,NSL,RSLTEM,AAA,BBB)
CALL SPLINT (RT£M,ZTEM,MHTPI,RSLTEM,NSL,ZSLTFM,AAA,BBB)
DO 150 JS=!,NSL
ZSL(I,JS) = ZSLTEM(JS)
15@ RgL(I,JS) = RSLTEM(JS)
C
C--CALCULATE STREAMLINE MSL COORDINATES FOR PRINT OUT AND PLOTTING
DO 160 JS=I,NSL
MSL(I,JS) = _.
DO 16C IS=2,MM
16C MSL(IS,J5) = MSL(IS-I,JS)÷SQRT((ZSL(IS,JS)-ZSL(IS-I,JZ))**2
I+ (RgL (IS,JS)-RSL(IS-1,JS))**2)
C
C--INTERPOLATE TO OBTAIN OUTPHT DATA ON STRFAMLINES
C
II = 1
JJ = I
DO 180 JS=I,NSL
DO 180 IS=I,MM
CALL LININT (ZOMROT,RC3MROT,WSUBZ,MM, MHTPI, 100,101,ZSL(IS,JS) ,
IRSL(IS,JS) , WZSL (IS,JS) , II, JJ)
CALL LININT (ZOMROT,ROMROT,WSUBR,MM, MHTPI,100,101,ZSL(IS,JS) ,
IRSL (IS,JS) , WRSi (IS,JS) ,II,JJ)
CALL LININT (ZOMROT,ROMROT, WTH,MM,MHTPI,100,101,ZSL(IS,JS),
1RSL (IS,JS) , WTHSL (IS,JS) ,II, JJ)
CALL LININT (ZOMROT,ROMROT, WWC_,MM,MHTPI,100,101,ZSL(IS,JS) ,
IRSL(IS,JS) , WWCRSL(IS,JS) ,II,JJ)
CALL LININT (ZOMROT,ROM_OT, CURV, MM,MRTPI, 1C0,101,ZSL(Ig,JS) ,
1RSL (IS,JS) ,CURVSL (IS,JS) ,II,JJ)
WMSL(IS,JS) = SQRT(WZSL(IS,Jg)**2+WRSL(IS,JS)**2)
ALPSL(IS,JS) = ATAN2(WRSL(IS,JS) ,WZSL(IS,JS))
BETSL(IS,JS) = &TAN2 (WTHSL(IS,JS) ,WMSL(IS,JS))
180 WSL(IS,JS) = SQRT(WMSL(IS,JS).*2+WTHSL(IS,JS)**2)
C
C--CALCULATE ILS AND ITS ARRAYS OF STREAMLINE LOCATIONS INSIDE BLADE
C--LEADING AND TRAILING EDGES
IF (MBI.EQ.0) GO TO 185
CALL ILETE
C
C--INTERPOLATION FOR BLADE SURFACE VELOCITIES ON STREAMLINES
185 DO 190 JS=I,NSL
DO 190 IS=I,MM
WLSSL(IS,JS) = 0.
190 WTSSL(IS,JS) = 0.
IF (MBI.EQ.0) GO TO 205
146
II = 1
JJ = 1
DO 200 JS=I,NSL
ILSJ = ILS(JS)
ITSJ = ITS(JS)
DO 200 IS=ILSJ,ITSJ
CALL LININT(ZOMROT,ROMROT,WLSHRF,MM, MHTP1,100,101,ZSL(IS,JS),
RSL(IS,JS) ,WLSSL (IS,JS) ,II,JJ)
20O CALL LININT(ZOMROT,ROMROT,WTSURF,MM,MHTPI,100,101,ZSL (IS,JS) ,
RSL (IS,JS) ,WTSSL(IS,JS) ,II,JJ)
C
C--PRINT OUTPUT ON STREAMLINES
C
205 IF (ISLINE.LE.0) GO TO 220
IF ((ITER/ISLINE)*ISLINE.NE.ITER.AND.ITER.NE.I) GO TO 220
WRITE (NWRT2,1040)
IF (REDYAC. LT.1.0) WRITE(NWRT2,1159) ITER
IF (REDFAC.EQ.J.0.AND. IEND.LE.0) WRITE(NWRT2,1160) ITER
IF (REDFAC.EQ.I.0.AND.IEND.GE.I.AND.ISUPER. LE.I) WRITE(NWRT2,1170)
IF (REDFAC. EQ.I.0.AND. IEND. GE.I.AND.ISUPER.EQ.2) WRITE(NWRT2,1180)
CALL ROTATE(-ANGROT,ZSL,RSL,MM,NSL, IC0,50,ZSL,RSL)
DO 210 JS=I,NSL
DO 207 IS=I,MM
ALTEM(IS) = ALPSL(IS,JS)*DEGRAD
207 BETEM(IS) = BETSL(IS,JS)*DEGRAD
WRITE (NWBT2,1050) JS,FLFR(JS)
WRITE (NWRT2,1060)
210 WRITE(NWRT2,1070) (ZSL(IS,JS) ,RSL(IS,JS) ,MSL(IS,JS) ,WMSL(IS,JS),
IWTHSL(IS,JS),WSL(IS,JS) ,WWCRSL(IS,JS),ALTFM (IS),BETEM (IS),
2CURVSL(IS,JS),WLSSL (IS,JS),HTSSL (IS,JS),CHOMES(I,IS),CHOMES (2, IS) ,
3IS=I,MM)
CALL ROTATE (ANGROT, ZSL, RSL, MM, NS L, 100,50,ZSL, _SL)
C
C--CALCULATION OF OUTPUT DATA ON HUB-SHROUD STATION LINES
C
220 IF (ISTATL.LE.0.OR.NOSTAT. EQ.0) GO TO _I0
IF ((ITER/ISTATL)*ISTATL.NE.ITER.AND.ITER.NE.I) GO TO _I0
WRITE (NWRT3 , I080)
IF (REDFAC.LT.I.0) WRITE(NWRT3,1150) ITER
IF (REDFAC.EQ.I.0.AN_.IEND.LE.0) WRITE (NWRT3,1160) ITER
IF (REDFAC.EQ.I.0.AND.IEND.GE.I.AND.TSUPER.LE.I) WRITE(NWRT3,1170)
IF (BEDFAC.EQ.I.0.AND.IEND. GE.I.AND.ISUPER. EQ.2) WRITE(NWRT3,1180)
C
C--CALCULATE ZST AND RST ARRAYS
CALL SPLINT(ZHROT, RHROT,NHUB,ZMST,NOSTAT,_HST,AAA,BBB)
CALL SPLINT(ZTROT,RTROT,NTIP,ZTST,NOSTAT,RTST,AAA, BBB)
DO 400 IL=I,NOSTAT
MARK = 1
RTEM(1) = RMST(IL)
RTEM(20) = RTST(IL)
DELR = (RTEM (20) -RTEM (1) )/19.0
DO 230 J=2,19
230 RTEM(J) = RTEM(J-I)+DELR
ZST (I) = ZHST (IL)
ZST(NSL) = ZTSTilL)
ZTEM (I) = ZHST (IL)
ZTEM (20) = ZTST(IL)
DELZ -- (ZTEM(20)-ZTEM(1))/19.0
C
147
C--CHECK FOR LEADING OR TRAILING EDGE STATION
IF (MBI.EQ.0) GO TO 240
DELCE = ABS(ZTEOMR(1)-ZLEOMR(1) +ZTEOMR(MHTPI)-ZLEOMR(MHTP1)) _0.005
IF(ABS(ZST(1)-ZLEOMR(1} ).LT.DELCH.AND. ABS(ZST(NSL)-
1ZLEOMR(MMTP1)) .LT. DELCH) MARK=2
IF (ABS (ZST (I) -ZTEOMR (1) ) .LT. DELCH. AND. ABS (ZST (NSL) -
IZTEOMR (MHTPI)). LT. DELCH) MARK=3
IF (ZST(1).GT. (ZLEOMR(1) +DELCH) .AND.ZST(1).LT. (ZTEOMR(1)-
1DELCH) ) MARK=,
IF (MARK.EQ.2) GO TO 260
IF (MARK.EQ.3) GO TO 270
C--REGULAR STATION
240 DO 250 J=2,19
250ZTEM(J) = ZTEM(J-I) +DELZ
GO TO 280
C--LEADING EDGE STATION
260 CALL SPLINT(RLE,ZLE,NBLPL, RTEM,20,ZTEM, AAA, BBB)
GO TO 280
C--TRAILING EDGE STATION
270 CALL SPLINT(RTE,ZTE, NBLPL, RTEM,20,ZTEM,AAA,BBB)
C
C--INTERPOLATE FOR STREAM FUNCTION
280 UTEM(1} = 0.
UTEM (20) = I.
11=1
JJ = 1
DO 290 J=2,19
290 CALL LININT(ZOMROT,ROMROT, UOM,MM,MMTPI, 100,101,ZTEM(J) ,RTEM(J},
IUTEM(J) ,II,JJ)
C
C--CALCULATE STATION LINE RST COORDINATES FOR PRINT OUT
CALL SPLINT (UTEM, RTEM, 20, FLFR, NSL, RST, AAA, BBB)
DELR = RST(NSL)-RST(1)
DELZ = ZST (NSL)-ZST(1)
NSLMI = NSL-I
C
148
JJ = 1
IF (MARK.NE.2.AND.MARK.NE. 3) GO TO 386
C--SPECIAL CASE OF LEADING OR TRAILING EDGE STATION
C--EXTRAPOLATE FROM FREE STREAM FOR VELOCITIES AND FLOW ANGLE
IF (MARK.EQ.3) GO TO 376
DO 375 J=I,MHTPl
I = ILE(J)-I
EXFRAC = (SLEOM(J)-SOM(I,J))/(SOM(I,J)-SOM(I-I,J))
WZFSEX(J) = WSHBZ(I,J) +EXFRAC*(WSUBZ(I,J)-WSUBZ(I-I,J) )
WRFSEX {J) = WSUBR(I,J) +EXFRAC* (WSUBR (I,J)-WSUBR(I-I,J))
BTFSEX(J) = BETA (I,J)+EXFRAC*(BETA(I,J)-BETA (l-1,J))
375 RTEM(J) = RLEOMR(J)
GO TO 378
376 DO 377 J=I,MHTPI
I = ITE(J) ÷1
EXFRAC = (SOM(I,J)-STEOM(J))/(SOM(I+I,J)-SOM (l,J))
WZFSEX (J) = WSUBZ(I,J) +EXFRAC* (WSUBZ (I,J)-WSUBZ(I÷I,J))
WRFSEX(J) = WSUBR(I,J) +EXFRAC*(WSUBR(I,J)-WSUBR(I+I,J))
BTFSEX(J) = BETA(I,J)÷EXFRAC*(BETA(I,J)-BETA(I+I,J))
377 RTEM(J) = RTEOMR(J)
378 JLTE = I
DO 38_ JL=I,NSL
DO 380 J=JLTE,MHT
IF (RST(JL).LE. RTEM(J+I)) GO TO 382
380 CONTINUE
382 JLTE = J
EXFRAC = (RST (JL) -RTEM (J)) / (RTEM (J+ q) -RTEM (J))
WZST (Ji) = WZFSEX (J) +EXFRAC* (WZFSEX (J+ I) - WZFSEX (J))
WRST (JL) =
WRFSEX(J)÷EXFRAC*(WRFSEX (J÷q)-WRFSEX(J))
BETST (JL) = BTFSEX (J) ÷EXFRAC* (BTFSEX (J+1) -BTFSEX (J))
WMST (JL) = SQRT (WZST (JL) **2+WRST (JL) _'2)
WTHST (Jn) = WMST (JL) *TAN (BETST (Ji))
38_ BETST (JL) = BETST(JL)*DEGRAD
GO TO 390
C--NORMAL CASE OF FREESTREAM STATION, OR STATION WITHIN BLADE
386 DO 388 JL=I,NSL
CALL LININT (ZOMROT,ROMROT, WSUBZ, MM, MHTPI,100,101,ZST(JL),
I RST (JL), WZST (JL), If, JJ)
CALL LININT(ZOMROT,ROMROT,WSUBR,MM,MHTPI,10C,101,ZST(JL),
IRST(JL),WRST(JL) ,II,JJ)
CALL LININT(ZOMROT,ROMROT, WTH,MM,MHTPI,100,101,ZST(JL) ,
IRST (JL), WTHST (JL) ,II ,JJ)
WMST(JL) = SQRT(WZST(JL)**2+WRST(JL)**2)
388 BETST(JL) = ATAN2(WTHST(JL) ,WMST(JL))*DEGRAD
C
C--CALCULATE OTHER OUTPUT DATA ON STATION LINES
C
390 DO 392 JL--I,NSL
CALL LININT(ZOMROT,ROMROT, CURV, MM,MHTPI,100,101,ZST(JL) ,
IRST (JL) ,CURVST (Ji) ,II,JJ)
CALL LININT (ZOMROT,ROMROT, PLOSS,MM,MHTPI,100,10q,ZST(JL),
IRST (JL), PLOST (JL) ,II,JJ)
ALPST(JL) = ATAN2(WRST(JL),WZST (JL))*DEGRAD
WST(JL) = SQRT(WMST(JL)**2÷WTHST(JL)**2)
WLSST (JL) = 0.
WTSST (JL) = 0.
IF (MARK.EQ.I) GO TO 392
CALL LININT(ZOMROT,ROMROT, WLSURF,M_,MHTPI,1C0,101,ZST(JL),
IRST(JL),WLSST(JL),II,JJ)
CALL LININT(ZOMROT,ROMROT, WTSURY,MM,MHTPq,100,101,ZST(JL),
149
IRST(JL),WTSST(JL) ,II,JJ)
392 CONTINUE
CALL ROTATE(-ANGROT,ZST,RST,NSL, 1,50,I,ZST, RST)
C
C--CALCULATE EXTRA OUTPUT D_TA ON STATION LINES
C
DO 396 JL=I,NSL
LAMBDA = L_MDAF (FLFR (JL) ,ILE(1) ,1)
OMR = OMEGA_RST(JL)
VTHST(JL) = WTHST(JL)+OMR
VSQ = WMST(JL)_2÷VTHST(JL)_2
VST (JL) = SQRT(VSQ)
BEABST (JL) = ATAN2 (VTHST(JL) ,WMST (JL))_DEGRAD
IF (GAM.EQ.0.) GO TO 396
TIPT = TIPF (FLFR (JL))
RHOIP = RHOIPF(FLFR(JL))_(I.'PLOST(JL))
TPPST(JL) = TIPT-(2. _OMEGA_LAMBDA-OMR_2)/2"/CP
WWCRST(JL) = WST (JL)/SQRT(TGROG_TPPST (JL))
RHOPP = RHOIP _(TPPST(JL)/TIPT) _EXPON
PPPST(JL) = RHOPP_AR _TPPsT (JL)
TPST (JL) = TIPT+ (OMR_VTHST(JL)-OMEGA_LAMBDA)/CP
RHOP = RHOIP _ (TPST(JL)/TIPT) _EXPON
PPST (JL) = RHOP_AR_TPST(JL)
TST (JL) = TPST(Ji)-VSQ/2./CP
RHOST(JL) = RHOP _ (TST(JL)/TPST(JL)) _EXPON
PST (JL) = RHOST (JL) _AR_TST (JL)
396 CONTINUE
C
C--PRINT OUTPUT ALONG HUB-SHROUD STATION LINES
C
IF (NCHOK.GT.0) WRITE(NWRT3,1095) NCHOK
IF (MARK.EQ.I) WRITE(NHRT3,1C90) IL
IF (MARK.EQ.2) WRITE(NWRT3,1100) IL
IF (MARK. EQ. 3) WRITE(NWRT3, 1110) IL
IF (MARK.EQ.@) WRITE (NWRT3,1120) IL
WRITE (NWRT3,1130)
WRITE (NWRT3 ,1140) (RST(JL) ,ZST(JL),MST(JL),FLFR(JL),WMST(JL),
IWTHST(JL) ,WST (JL),HWCRST(JL) ,ALPST(JL) ,BETST(JL) ,C[IRVST(JL) ,
2WLSST(JL),WTSST(JL) ,JL=I,NSL)
WRITE (NWRT3,1142)
WRITE(NWRT3,11_) (RST(JL) ,ZST(JL) ,PST(JL),TST(JL),RHOST(JL),
IVTHST(JL) ,VST (JL),PPST(JL) ,TPST (JL) ,BEABST(JL),PPPST(JL),
2 TPPST (JL), JL= I, NSL)
_00 CONTINUE
C
C--REVERSE UPPER AND LOWER SURFACE VELOCITIES, IF NECESSARY
C
415 IF(REVERS.EQ.0.) GO TO 430
DO 420 J=I,MHTPI
DO _20 I=I,MM
WDUM = WLSURF(I,J)
WLSURF (I,J) = WTSURF (I,J)
42C WTSURF(I,J) = WDUM
REVERS = 0.0
C
C--REMOVE ICHOKED' MESSAGE, IF NECESSARY
C
_30 IF (NCHOK.EQ.0) RETURN
DO _0 I=I,MM
150
CHOMES (I ,I) = BLNK
4_0 CHOMES (2, I) = BLNK
RETURN
C
C--FORMAT STATEMENTS
C
lOOC FORMAT (1H1////28X,79(IH*)/28X,79H*** STRFAM FUNCTION, INTERIOR V
1ELOCITIES, VELOCITY COMPONENTS, AND ANGLES ***/_X,UIHAT ALL MESH
2 POINTS OF THE ORTHOGONAL MESH/44X,41(IH*))
1010 FORMAT (///42X,39H** HORIZONTAL ORTHOGONAL MESH LINE NO. ,
112,3H **//)
1020 FORMAT (IX,1OHMESH-POINT,3X,_HAXIAL,SX,6HRADIAL,6X,6HSTREAM,4X,
16HMERID.,3X,9HREL.TANG.,_X,4HREL.,3X,gHCRIT.VEL.,3X,6HMERID.,3X,
28HREL.FLOW,3X,4HMFSH/IX,9HCOLM ROW,4X,6HCOORD.,7X,6HCOORD.,7X,
35HFUNC.,5X,4HVEL.,6X,_HVEL. ,7X,4HVEL.,5X,SHPATIO,3(5X,5HANGLE)/
a2X,SH (I) (J) , 5X,3H (Z) , 10X, 3H (R) , I0 X, 3H (U), 6X,_H (WM), 5X, 5H (WTH),
57X, 3H(W) ,5X,7H (W/WCR) ,3X,7H (ALPHA), 3X,6H (BETA) ,SX,5H(PHI))
103@ FORMAT (IX,I],2X,I3,2X,2(G12.5,1X) ,FS._,3(1X,Fg.2) ,IX,Fg.],
13 (3X,FT.2) ,2A_)
1040 FORMAT (1HI////15X,99(IH*)/15X,99H*** STREAM FUNCTION, TNTERTOR V
IELOCITIES, VELOCITY COMPONENTS, ANGLES, AND SURFACE VELOCITIES **
2*/56X,17HALONG STREAMLINES/56X,17 (IH*))
105C FORMAT(///36X,2CH** STREAMLINE NUMBER,13,23H -- STREAM FUNCTION
I=,F8._,3H **//)
I06C FORMAT (SX,5HAXIAL,8X,6HRADIAL,TX,6HME_ID.,6X,6HMERID.,2X,
19HREL.TANG.,2X,4HREL.,2X,qHCRIT.VFL.,2X,6HMERID.,2_,SHREL. FLOW,
22×,7HSTREAM.,3X,9HSUCT.SUR. ,IX,gHPRES.SUR./_X,6HCOORD.,7X,
36HCOORD.,7X,6HCOORD.,7X,_HVEL.,SX,4HVEL. ,<X,4HVEL. ,4X,5HRATIO,
42 (_X,5HANGLE) ,5X,5HCURV.,6X,4HVEL.,6X,_HVEL./SX,3H(Z) ,10X,3H (R) ,
510X,3H(M) ,9X,aH(WM) ,SX,SH(WTH) ,5X,3H(W) ,_X,7H (W/WCR), 2X,
67H(ALPHA),2X,6H(PETA),3X,9H (I./DIST) ,4X,4H(W.g) ,6X,_H(WP))
1070 FORMAT ((3(1X,G12.5),3(IX,F8.2) ,1X,F7.3,2(2X,F7.2),2_,G11.4,
1FS.2,2X,F8.2,2A4) )
1080 FORMAT (1HI////15x,gg(1H*)/15X,99H*** STREAM FUNCTION, INTERIO_ V
IELOCITIES, VELOCITY COMPONENTS, ANGLES, AND SURFACE VELOCITIES _*
2*/28X,72HALONG LINES FROM HUB TO SHROUD AT VARIOUS STATIONS THROUG
3H THE BLADE ROW/28X,72 (IH*))
1085 FORMAT ( //28X,19HBEWARE. THERE APE,I3,_9H VERTICAL OPTHOGONAL M
IESH LINES WHICH ARE CHOKED,/28X,_2HLOCATIONS OF THESE LINES _RF GI
2VEN ABOVE AT THE BEGINNING OF THE TRANSONIC OUTPUT./28X,87HOUTPUT
3ON ANY STATTON LINES LOCATED NEAR THESE CHOKED ORTHOGONAL LINES MA
4Y BE IN ERROR.)
I09C FORMAT(///_9X,26H*_ HUB-SHROUD STATION NO. ,12,3H **//)
1100 FORMAT(///49X,26H** HUB-SHROUD STATION NO. ,I2,3H *_,16X,
118H** LEADING EDGE _*//)
1110 FORMAT(///_gX,26H** HUB-SHROUD STATION NO. ,I2,3H **,15X,
119H** TRAILING EDGE **//)
1120 FORMAT (///_9X,26H** HUB-SHROUD STATION NO. ,12,3H **'16X,
118H** WITHIN BLADE **//)
1130 FORMAT (_X,6HRADIAL,7X,SHAXIAL,SX,6HMERID.,_,6HSTREAM,3)[,
16HMERID. , 2X, 9HREL. TANG. ,2X,_HREL. , 2X, gHCRIT. VEL. , 2X,6 HM ERI D. ,2)[,
28HREL.FLOW,2X,7HSTREAM. ,3X,gHSUCT SUR.,IX,9HPRES.gUR./4X,
36HCOORD. ,7X,6HCOORD. ,7X,6HCOORD. ,5X,5HFUNC. ,_X,_HVEL.,5X,_HVFL.,
_5X,_HVEL.,_X,5HRATIO,2(UX, SHANGLE) ,5X,KHCUPV.,6X,_HVEL. ,6X,_HVEL./
55X,3H(R) ,10X,]H (Z) ,1#X,3H(M) ,SX,3H(U) ,5X,aH(WM) ,_X,SH (WTH) ,SX,
63H(W) ,_X,7H (W/WCR) ,2X,7H (ALPHA) ,2X, 6H (BETA) , 3_,9H (1./DIST) ,4X,
7_H(WS) ,6X,_H(WP))
11_0 FORMAT ((1X,3(G12.5,1X) ,F6._,3(1X,FS.2),1X, PT.3,2(2X, F7.2) ,2X,
1G11. 4,F8.2,2X,F8.2))
151
11_2 FORMAT (//_X,6HRADIAL,7X,5HAXIAL,8X,3(6HSTATIC, 3X),9HABS.TANG.,2X,
I_HABS.,3X,2 (SHABS.TOT.,IX) ,8HABS.FLOW,2X,2(IX,8HREL.TOT.) /
2_X,2 (6HCOORD.,7X) ,1X,5HP_ES.,_X,SHTEMP.,_X,_HDENS.,2(SX,4HVEL.) ,
3_X, 5HPRES. , 4X, _HTEMP. , _ X,SHANGLE, 6X, 5HPRES. ,_X,5HTEMP./ 5X, _H(R)
_,IOX, 3H(Z) , 10X,3H(P) ,6X,3H(T) ,6X,5H (PHO) , _X,SH (VTH) ,SX,3H (V) ,_X,
5_H(PP) ,SX,WH(TP) ,_X,6H (BETA),6X,5H (PPP) ,4X,SH(TPP))
11144 FORMAT ( (IX,2 (G12.5, !X) ,Fg. 2, IX,F7. 2, IX,El0.7, IX, 2 (FS. 2, IX) ,Fg. I,
11X,F7.2,1X,ST.2,3X,Fg. 1,1X,F7.2))
1150 FORMAT (/53X, 23 (IH_')/5 3X,23H • REDUCED MASSFLOW _/53X,23 (IH_') /
153X, 18H_ ITERATION NO. ,12,_H _/53X, 23 (IH",'))
1160 FORMAT (/52 X, 25 (IH_) /52X,25H" FrJLL MASS FLOW _/52X, 25 (IH*) /
152X, 19H'_ ITERATION NO. ,I2,_H _/52X,25 (IH_))
117C FORMAT (/52X, 25 (IH_) /52X ,25H _' PULL MASSFLOW */42X,_5 (IH_)/
1_2X,IH_,12X,19HTRANSONIC SOLHTION, 12X,1H*/U2X,_5H_, 8Y VELOCITY G
2RADIENT APPROXIMATE METHOD ',/35X,59(1H_.)/35X,59H* ALL VELOCITIES
3 SMALLER THAN CHOKING MASSFLOW SOLUTION */35x,5q (1H',))
1180 FORMAT (/52X,25(1H'k)/:2X,25H _' FULL MASgFLOW '_/_2X,_5(!H*)/
142X,IH_,12X,19HTRANSONIC SOLUTION,12X,IH_/_2X,_SH_. BY VELOCTTY G
2RADIENT APPROXIMATE METHOD _/35X,59(1H*)/35X,59H* ALL VELOCITIES
3 LARGER THAN CHOKING MASSFLOW SOLUTION */35X,59(IH_))
END
SUBROUTINE BLDVEL
C
C--BLDVEL CALCULATES BLADE SURFACE VELOCITIES, _LADE-TO-BLADE
C--AVERAGE DENSITY, AND FT
C
COMMON NREAD,NWRIT,ITER,IEND,NWRTI, NWRT2,NWRT3,NWRT_,NW}_T5,NWRT6
COMMON/INP_TT/GAM,AR,MSF/,OMEGA, REDFAC, VELTOL,FNEW,DNEW,MBI,MBO,
1 MM,MHT,NBL,NHUB,NTIP,NIN,NOUT,NBLPL, NPPP, NOSTAT,NSL,NLOSS,
2 LSFR, LTPL, LAMVT, L_OT, LBLAD,LETEAN, ANGROT, IMESH, I SLINE,
3 ISTATL, I PLOT, ISUPER, ITSON, IDEBUG, ZOMIN, ZOMBI, ZOMBO, ZOMOUT,
_OMIN, ROMBI, RONBO, ROMOUT, ZHIN, ZTIN, ZHOUT, ZTOUT, RHIN, RTI N, RHOU_",
5 RTOUT,TITLEI (20), ZHUB (50) , RHUB (_0) ,ZTIP (50), RTIP (50), SFIN (50),
6 RADIN (50) ,TIP (50) ,PRIP (50) ,LAMIN (50), VTHIN (50) ,SFOUT (50),
7 RADOUT (50) , PROP (5n), LOSOUT (50) ,LAMOUT (50), VTHOUT (50),
8 BETALE(50) ,BETATE(50) ,ZHST(50),ZTST(50),RHST(50) ,RTST(S0) ,
9 FLFR (50) ,PEBCRD (50), PERLOS (50), ZBL (50' 50), RBL (59,50),
I THBL(50,50),TNBL(50,50) ,TTBL(50,50),THIBL(50,50),TH2BL(50,50 )
COMMON/CALCON/MMM I, MHTPI ,CP, EXPON, TGROG, PITCH, RLEH, RLET, RTEH, PTET,
I ZLE (50) , RLE (50), ZTE (50) , RTE (50), ZLEOM (I0 I) ,BLEOM (Ig I),
2 SLEOM (101) ,THLEOM(101),ZTEOM(101) ,RTEOM(Inl) ,STEOM (101) ,
3 THTEOM(101),ILE(101),ITE(101) ,ZOM(100,101),ROM(100,101),
SOM (100, I0 I), TOM (I00,10 I) ,BTH (]00, I0 I) ,DTHDS (I00, I0 I),
5 DTHDT (100,101), PLOSS (100, I01) ,CPHI (100,1C 1) ,SPHI (I00, I0 I)
COMMON/VARCOM/A(_,100,101) ,UOM(100,1011,K(100,1nl) ,RHO(100,1nl),
1 WS_BS(IOO,IOI),WSUBT(IOO,!OI),WS_BZ(IOO, IOI),WSUBR(IOC, I01),
2 WSUBM (100,101), WTB (I00, I01), VTH (I00,101), W (I00,I01) ,
3 ALPHA (100,101) ,BETA (100,10 I) ,WWCR (I00, I0 I) ,CUBV (I00, I01),
WLSURF (I00, I01), WTSURF(1OC, I 0 I), CAMP (I00,101) ,SAME (100, I01),
5 R_OAV (I00, I01) ,DELRHO (100,10 I), FT (I00, I0 I) ,DFDM (I00, I01),
6 XIOM (I00,101) ,ZETOM (I00, I01), DLDU (100, I0 I)
DIMENSION TVERT(101) ,FVERT(101) ,DFV_RT(101) ,DFDS (I00) ,
I FST (I00, I0 I), DFDT (I00,I0 I)
REAL LAMDAF
10 FCHANG = 0.
152
FMAX = -I.E20
FMIN = I.E20
C
C---CALCULATE DFDT
C
DO 30 I=I,MM
DO 20 J=I,MHTPI
TVERT(J) = TOM (I,J)
FST(I,J) = VTH(I,J)*ROM(I,J)
FVERT(J) = FST(I,J)
20 CONTINUE
CALL SLOPES(TVERT,FVERT,MHTPI,DFVEgT)
DO 30 J=I,MHTP1
DFDT(I,J) = DFVERT(J)
30 CONTINUE
C
C---CA LCULATE DFDS, THEN DFDM AND BLADE SURFACE VELOCITIES
C
DO 50 J=_,MHTP1
CALL SLOPES (SOM (1,J) ,FST(I,J) ,MM,DFDS)
DO 50 I=I,MM
DFDM (I,J) = 0.
IF (I.GE.ILE(J) .AND.I.LE.ITE(J)) DFDM(I,J)=-(DFDS(1)*CAMP(I,J) +
IDFDT(I,J)$SAMP(I,J))'BTH (I,J)_COS(BETA (I,J))
WLSURF (I ,J) = W(I,J)+DFDM(I,J)/2.
WTSURF(I,J) = W (I,J)-DFDM(I,J)/2.
C
C---CALCULATE BLADE-TO-BLADE AVERAGE DENSITY
C
IF (GAM.EQ.0.) GC TO 40
THLMR = 2._OMEGA*LAMDAF(TIOM (I,J) ,l,J)- (OMEGA_ROM(I,J)) _2
WSQ = WLSURF(I,J)_2
TIPIJ = TIPF(UOM (I,J))
TTIP = I.- (WSQ÷TWLMR)/CP/TIPIJ/2.
IF(TTIP.LT.0.) TTIP = 0.
RHOIJ = RHOIPE(UOM(I,J)) _(I.-PLOSS(I,J))
RHOL = RHOIJ_TTIP_EXPON
WSQ = WTSURF(I,J)_2
TTIP = I.- (WSQ+TWLMR}/CP/TIPIJ/2.
IF(TTIP.LT.0.) TTIP = 0.
RHOT = RHOIJ*TTIP**EXPON
DELRHO(I,J) = RHCL-RHOT
8HOAV (l,J) = (RHOL+_.*RHO(I,J)+RHOT)/6.
C
C---CALCULATE F-SUB-T FOR SUBROUTINE COEF
C
_0 FTT = W(I,J)/BTH(I,J)*DTHDT(I,J)*DFDM(I,J)
FCH = ABS(F_T-FT (I,J))
FCHANG = AMAXI (FCHANG, FCH)
IF (FCHANG.EQ.FCH) ICH=I
IF (FCHANG.EQ.FCH) JCH=J
FMAX = AMAXI(FMAX,FTT)
FMIN = AMINI(FMIN,FTT)
FT(I,J) = FNEW_FTT+(_.-FNEW)'FT(I,J}
50 CONTINUE
IF (IEND.LT.I) WRITE(NWRIT, IC40) FCHANG,ICH,JCH,FT(ICH,JCH) ,
IFMAX,FMIN
C
153
C---PRINT DEBUG OUTPUT IF REQUESTED
C
IF (IDEBUG.LE.0) RETURN
IF ((ITER/IDEBUG)_IDEBUG.NE.ITEP.AND.ITER.NE.1) RETURN
WRITE (NWRT5,1020)
WRITE (NWRT5,1000) ( (I,J,HSUBS (I, J) , WSUBT (I,J) ,VTH (I,J) ,RHO (I,J) ,
IRHOAV(I,J) ,DELRHO(I,J) ,DLDU (I,J) ,PLOSS (I,J) ,I=I,MM) ,J=I,MHTP1)
WRITE (NWRT5,1030)
WRITE (NWRTS, I010) ( (I,J,DTHDS (I, J), FT (I,J), DFDM (I,J), XIOM (I, J),
1ZETOM (I,J) ,CAMP (I,J) ,SAMP(I,J) , I=I, MM) ,J=l, MHTPI)
RETURN
C
C--FORMAT STATEMENTS
C
100¢ FORMAT (215,8G15.5)
1010 FORMAT (215,7G15.5)
1020 FOPMAT (1H1////35X,57(1H*)/35X,57H* CHANGING QUANTITIES ON T
IHE ORTHOGONAL MESH _/35X,57(1H*)// 4X,IHI,;4X, IHJ,SX,
25HWSUBS,11X,5HWSUBT,11X,3HVTH,11X,3HRHO,I1X,5HRHOAV,9X,6HDELRHO,
310X,_HDLDU,IIX,5HPLOSS)
1033 FORMAT (////;4X,1HI,;4X,1HJ,5X,5HDTHDS,IIX,2HFT,12X,_HDFDM,11X,
1;4HXIOM,11X,5HZETOM,10X,;4HCAMP,IIX,;4HSAMP)
1040 FORMAT (/SX,22HMAXIMUM CHANGE IN FT =,GI3.5,15X,6HAT I =,I3,
15H, J =,I3,1H,,6X,10HWHEPE FT =,G13.5/5X,22HMAXIMUM VALUE OF FT =
2,G13.5/5X,22HMINIMUM VALUE OF FT =,G13.5)
END
SUBROUTINE ILETE
C
C--ILETE CALCULATES THE INTEGER ARRAYS OF MESH POINT LOCATIONS WHICH ARE
C--JUST INSIDE THE LEADING AND TRAILING EDGES OF TRF BLADE
C
COMMON/INPUTT/GAM,AR,MSFI,OMEGA, REDFAC, VELTOL,FNEW,DNEW,MBI,MBO,
I MM, MHT, NBL, N HUB, NTIP, NIN, NOUT, NBLPL, NPPP, NOSTAT, NSL, NLOSS ,
2 LSFR, LTPL, LAMVT, LROT, LBLAD, LETEAN, ANGBOT, IMESH, ISLINE,
3 ISTATL, I PLOT, ISUPER, ITSON, IDEBUG, ZOMIN, ZOMBI, ZOMBO, ZOMOUT,
;4 ROMIN, ROMBI , ROMBO, ROMCUT , ZHIN, ZT IN, ZHOUT, ZTOUT, RHIN, RTIN, RHOUT'
5 RTOUT,TITLEI (20), ZHUB (50), RHUB (50) , ZTIP (50), RTIP (50) ,SFIN (50),
6 RADIN (50), TIP (50), PRIP(S6), LAMI N (50), VTHIN (50), SFOUT (50) •
7 RADOUT(50) ,PROP(5_),LOSOUT (50) ,LAMOUT (50) ,VTHOUT (50) ,
8 BETALE (50) ,BETATE (50) ,ZHST(50) ,ZTST (50) ,PHST (50) ,RTST(50) ,
9 FLFR (50) ,PERCBD (50) ,PERLOS (S0) ,ZB[(50,50) , RBL(50,50) ,
1 THBL (50,50) ,TNBL (50,50) ,TTBL (50,50) ,THIBL (50,5n) ,TH2BL (50,50)
COMMON/CALCON/MMMI , MHTP1 ,CP, EKPON, TGROG, PITCH, RLEH, RLET, RT EH,RTET,
I ZLE (50) , RLE (50), ZTE (50) , _TE (50) , ZLEOM (I0 1) ,RLEOM (I0 1) ,
2 SLEOM (10 I) ,THLEOM (10 I) ,ZTEOM (I01) ,RTEOM (I01) ,STEOM (I01) ,
3 THTEOM (101) ,ILE(I_I) ,ITE (I¢I) ,ZOM(100, I0!) ,ROM(100, I01) ,
;4 SOM (I00, 10 I) ,TOM (100,101), BTH (100, I0 I) ,DTRDS (I00,I0 1) •
5 DTHDT (I00,101) ,PLOSS (I00,1C 1) ,CPHI (100,10 I), SPHI (I00, I0 I)
COMMON/SLCOM/ILS (50),ITS(50) ,ZSL (10_,50),RSL (100,50),MSL(10_,_0),
I WZSL(100,50),WRSL(19_,50) ,WMSL(10n,50) ,WTHSL(100,50) ,
2 ALPSL(100,50) ,BETSL(100,SC),WSL(1C0,50) ,WWCRSL(IOO,50) ,
3 CURVSL(100,50),WLSSL(100,5¢) ,WTSSL(100,5C)
C--LEADING EDGE
CALL SPLINT(RLE,ZLE, NBLPL, RLE(1) ,I,ZSPL,DZDR,TEMP)
DO 20 J=I,NSL
154
I = 0
10 I = I+I
CALL SPLENT (RSL(I,J) ,1,ZSPL,DZDR,TEMP)
IF (ZSPL.GT.ZSL(I,J)) GO TO IC
2C ILS (J) = I
C--TRAILING EDC. E
CALL SPLINT (RTE,ZTE,NBLPL, RTE (1) ,I,ZRPL, DZDR,TEMP)
DO a0 J=I,NSL
I = ILS (J)-I
3C I = I+I
CALL SPLENT (RSL(I,J) ,1,ZSPL,DZDR,TEMP)
IF (ZSPL.GE.ZSL (I,J)) GO TO 3C
40 ITS(J) = I-I
RETURN
END
SUBROUTINE INDEV
C
C--INDEV CALCULATES A CORRECTION TO DTHDS TO ALLOW FOR INCIDENCE AND
C--DEVIATION (AFTER BLOCKAGE CCRRECTION)
C
COMMON NREAD,NWRIT,ITER,IEND,NWRTI, NWRT2,NWRT3,NWRTQ, NWRT5,NWRT6
COMMON/INPUTT/GAM,AR,MSFL, OMEGA, REDFAC,VELTOL,FNEW,DNEW,MBI,MBO,
I MM, MHT, NBL, NHUB, NTIP, NI N, NOUT, NBLPL, NPPP, NOST AT, NSL, NLOSS,
2 LSFR, LTPL, LAMVT, LROT, LBLAD, LETEA N, ANGROT, I MESH, ISLINF,
3 ISTATI, I PLOT, ISUPER, ITSON, IDEBUG, ZOMIN, ZOMBI, ZOM BO, ZOMOUT,
4 ROMIN, ROMBI, ROMBO, ROMOUT, ZBIN , ZT IN, ZHOUT, ZTOUT, RHIN, RTI N, RHOUT,
5 RTOUT,TITLEI(2C),ZHUB(50),RHTIB(5')),ZTIP(_O),RTIP(50),SFIN(SO),
6 RADIN (50) ,TIP (50) ,PRIP (5C) ,LAMIN (50), VTHIN (50) ,SFOUT (50),
7 RADOUT(50) ,PROP(Sn) ,LOSOUT(50) ,LAMOUT(50),VTHOUT(50) ,
8 BETALE(SC) ,BETATE(50) ,ZHST(50) ,ZTST(50),RHST(50) ,RTST(50) ,
9 FLFR (50) ,PERCRD (5_), PERLOS (50) , ZBL (50,50), RBL (5_,50) ,
1 THBL (50,50) , TNBL (50,50) ,TTBL (5C , 50) ,THIBL (50,50) ,TH2BL (_0,50)
COMMON/CALCON/MMM 1 , MHTPI ,CP , EXPON,TGROG, PITCH, PLEH, PLET, RT EH,RTFT,
I ZLE (50) , RLE (50) ,ZTE (50), RTE(50) , ZZEOM (I0 I) ,RLFOM (In I),
2 SLEOM (I01) ,_HLEOM (I01) ,ZTEOM(I_I) ,RTEOM(101) ,STEOM (101) ,
3 THTEOM(IQ1) ,ILE(101),IT_(IC1) ,ZOM(100,Iml),ROM(100,1_I) ,
SON (I00, I0 I) ,TOM (I00 ,I0 I), BTH (100,10 1) ,DTHDS (100, I0 I),
5 DTHDT (I00, 10 1) ,PLOSS (I00, I01) ,CPHI (I00, IC I) ,SPHI (I00, I0 I)
COMMON/VARCOM/A(4,100,101) ,UOM(1O0,101),K(100,1017 ,RHO(100,101),
I WSUBS (100, IC17, WSUBT (100 ,lCl) ,WSUBZ (I00, I0 1), WSUBR (100, I01),
2 WSUBM (I00, I01), WTH (I_0, I01), VTH (100,101), W (100, I01),
3 ALPHA (I00, IC1), BETA (100, I_ I), WWCR (100, I0 I) ,CURV (I03, I')1),
WLSURF (100,10 1), WTSURF(100,101) ,CAMP (I00, I_I), SAMP (I00, I0 I),
5 RHOAV (I00, I01) ,DELRHO (100, I01), PT (I00, I017 ,DFDM (190, InI),
6 XIOM (I00, I017 ,ZETOM (I00, I01), DLDU (100, I0 17
COMMON/ROTATN/ZHROT(50) ,RHROT(507 ,ZTROT(50) ,RTROT(50) ,
I ZLEOMR(101) ,RLEOMR(101) ,ZTEOMR(101),RTEOMR(101),
2 ZBLROT (50,5C) ,_BLROT (50,50), ZOMROT (I00, I0 I) ,ROMROT ( I00, I0 I)
COMMON/INDCOM/NBLPC, NPPC,ZPC (51,51) , RPC (51,5 I), TTPC (51,51) ,
I THPC (51,51), DTHDZ (51,51) ,DTHDR (5 I, 51), BTHLE (I0 1), BTHTE (10 I),
2 BTBFLE (10 I), BTBFTE (I0 I)
REAL LAMDAF
5 IPRNT = 0
IF (IPRNT.EQ.I) RETURN
155
DEGRAD = 1R0./3. 1415927
II = I
JJ = 1
IF (IMESH.LE.0) GO TO 10
IF ((ITER/IMESH)*IMESH. EQ. ITER.OW.ITER.EQ.I) qO TO 30
10 IF (ISLINE.LE.0) GO TO 20
IF ((ITER/ISLINE)*ISLINE.EQ.ITER.OR.ITER.EQ. I) GO TO 39
2¢ IF (ISTATL.LE.0) GO TO _O
IF ((ITER/ISTATL)*ISTATL.NE.ITER.AND. ITER.NE.I) GO TO _0
30 WRITE (NWRT6, I000)
IF (REDFAC.LT.I.0) WRITE(NWRT6,101O) ITER
IF (REDFAC. EQ.I.0.AND. IEND.LE. n) WRITE(NWPT6,1020) ITE.q
WRITE (NWRT6, I_ 30)
IPRNT = I
C
C--CO_PECT DTHDS, AND CALCULATE INCIDENCE AND DEVIATION, POW BY ROW
C--FROM HUB TO TIP
C
t0 DO 100 J=I,MHTP1
C
C--CALCULATE BLADE MEAN CAMBER ANGLE A_ LEADING EDGE
I = ILE(J)-I
RXTRAP = SLEOM (J)-SOM (I,J)
ALPHLE = ALPHA(I,J) +EXTRAP* (ALPHA(I÷I,J)-ALPHA(I,J))/(SOM(I+I,J)-
ISOM (I,J))
CALL LININT (ZPC,RPC, DTHDZ, NPPC,NBLPC,51,51,ZLEOMR(J) ,#LEOMR(J) ,
IDTDZLE, II, JJ)
CALL LININT (ZPC,RPC,DTHDR,NPPC,NBLPC, 51,51,ZLEOMR (J) ,_LEOMR (J) ,
I DTDRLE, II, JJ)
TANBBL = RLEOM (J) _ (DTDRLE_SIN(_LPHLE) +DTDZLE*COS (ALPHLE))
IF (ITER.EQ.I) BTBFLE(J) =ATAN (TANBBL)
BTBLLE = ATAN (TANBBL)*DEGRAD
C
C--CALCULATE BLADF_ FLOW ANGLE AT LEADING EDGE, CO_FCTED FOP BIOCKAGE
BETAFS = BETA (I,J) +E_T_RAP*(BFTA(I,J)-BETA (I-1,J))/(SOM (I,J)-
ISOM (I-1,J))
_HOFS = _HO (I,J) ÷EXTRAP* (RHO(Y,J)-RHO(Y-1,J))/
1 (SOM(I,J)-SCM (I-1,J))
RHOBF = P.HOAV(I+I,J)- (SOM(I+I,J)-SOS(I,J) -EXTRAP) /
I (_OM (I÷2,J)-SOM(I+I,J))* (RHOAV(!÷2,J)-RHOAV(I+!,J))
TANBBF = TAN(BETAFS)*BTHLE(J)/PITCH*RHOBF/RHOFS
BETABF = ATAN (TANBBF)
C
C--CALCULATE DISTAN CE FOR DTHDS CORRECTION
BLDCRD = (RLE OM (J) +RTEOM (J))/2. * (THLEOM (J) -T HTEOM (J))
BLDCRD = SQRr (BLDCRD**2÷ (STEOM(J)-SLEOM (J))**2)
SLIDLE = BLDCRD/PITCH/RLEOM (J)
DISTLE = AMINI (.5,AMAXI (I./6., (11.-_.*SLIDLE)/18.)) *(STEOM (J)-
lSLEOM (J))
C
C--CORRECT DTHDS FOR INCIDENCE NEAP THE LEADING EDGE,
C--USING LINEAR CORRECTICN FOR ANGLE
I = ILE (J)
50 SDIST = SLEOM(J)÷DISTLE-SOM (I,J)
IF(SDIST.LE.0.) GO TO 60
TANBIJ = ROM(I,J)*(DTHDS (I,J)*CAMP(I,J) +DTHDT (I,J)*SAMP (I,J))
BETAIJ = ATAN (TANBIJ)
BETAIJ = BETAIJ+ (BETABF-BTBFLE(J))*SDIST/DISTLE
TANBIJ = TAN (BETAIJ)
156
DTHDS(I,J) = (TANBrJ/RO_(I,J)-DTHDT(I,J)*SAMP(T,J))/CAMP(T,J)
I = I÷I
GO TO 50
60 BT_FLE(J) = DETABF
C
C--CALCULATE INCIDENCE ANGLES
BLINC = BETABF*D_[GRAD-PTDLLE
UBINC = BETAFS*DEGR_D-BTHLLE
C
C--CALCULATE BLADE MEAN CAMBER ANGLE AT TRAILING EDGE
I = ITE(J) +I
EXTRAP = SOn (I,J)-STEOM (J)
ALPHTE = ALPHA (I,J) +EXTBAP* (ALPHA (I-I ,J) -ALPHA (I,J))/(SOM(I,J)-
ISOM(I-I,J))
CALL LININT (ZPC,_PC,D_HDZ,NPPC,NBLPC,_1,51,ZTEOMR(J) ,RTEOM_(J) ,
I DTDZTE, II, JJ)
CALL LININT (ZPC,RPC, DTHDR,NPPC,N_LPC,51,51,ZTFOM_ (J) ,qTEOMP (J) ,
1DTDRTE, II,JJ)
TANBBL = RTEOM (J)*(DTDRTE*_rN(ALPH_'E) +DTDZTF*COS (ALP|ITE))
IF (ITER.EQ.I) BTBFT_(J)=ATAN(TANBBL)
BTBLTE = ATAN (TANPBL) _DEGRAD
C
C--CALCULATE BLADE FLOW ANGLE AT TRAILING EDGE, CORRECTED FOR BLOCKAGE
BETAFS = EETA(I,J) +EXT[_AP*(DETA(I,J) -BETA(I+I,J))/(FOM(I+I,J)-
ISOM (I,J))
RHOFS = RHO (I,J) ÷EXTRAP* (RHO (I,J)-_HO(I+I,J)) /
I (SOM(I+I,J)-SOM(I,J))
RHOBF = RHOAV(I-I,J)÷ (SOM(I,J)-SOM(T-I,J) -EXT}_AP)/
I (SOM (I-I,J) -SOM(T-2,J)) _ (PHOAV(T-1,J)-RHOAV (I-2,J))
TANBBF = TAN(BETAFS)*BTHTE(J) /PI_CHeBHOBF/RHOFS
BETABF = ATAN (TANBBF)
C
C--CALCULATE DISTANCE [:OR DTHDS CORIIECTION
SLIDTE = BLDCRD/PITCH/RTEOM(J)
DISTTE = AMIN1(.5,AMAX1(1./6.,(11.-_.'SLIDTE)/1S.))'(_TEOM(J)-
ISLEOM (d))
C
C--CORRECT DTHDS FOR DEVIATION NEAR THE TRAILING EDGE,
C--USING LINEAR CORRECTION FOB ANGLF
I = ITE (J)
7_ SDIST = SOM(][,J)-STEOM(J)+DISTTE
IF (SDIST.LE.O.) GO TO 80
TANBIJ = ROM(I,J)_(DTHDS(I,J)'CAMP(I,J) +DTHDT(I,J) _SAMP(I,J))
BETAIJ = ATAN(TANBIJ)
BETAIJ = BETAIJ+ (BETABF-BTBFTE(J)) _SDIST/DISTTE
TANBIJ = TAN(BETAIJ)
DTHDS(I,J) = (TANBIJ/]_OM (I,J)-DTHDT (I,J)*SAMP(I,J))/CAMP(I,J)
I = I-I
GO TO 70
80 BTBFTE(J) = BETABF
C
C--CALCULATE DEVIATION ANGLES
BLDEV = BETABF_DEGRAD-BTBLTE
UBDEV = BETAFS_DEGRAD-BTBLTE
C
C--PRINT INCIDENCE AND DEVIATION ANGLES
IF (IPRNT.EQ.0) GO TO 100
IF ((LAMDAF(.5,ILE(1),II-RVTHTA(.5,ILE(1),lll.GT.O.) GO TO 93
BLINC = -BLINC
157
UBINC = -U[_INC
BLDEV = -BLDEV
UBDEV = -UBDEV
9.r WRITE (NWPT6,10_0) J, BLI NC, UB INC, BT BLLE, BLDEV, UBDEV, _T _LT E
100 CONTINUE
IF (IPRNT.GT. _) WgITE(NWRT6,1CS0)
RETURN
C
C--FORMAT STATEMENTS
C
100,3,. FORMAT (1H1////_4X,40(1H*)/4UX,4_H*_* INCID_NC_ AND DEVIATION ANG
ILES ***/@9X, 3t (IH_)//)
ID1'3 FORMAT (/53X,23 (IH*)/53×,23H* REDUCED MASSFLOW _/53X,23 (IH _) /
153X, 18H* ITENATION NO. ,I2,3H */53X,23 (1H*))
Iv2C FORMAT (/52X, 25 (IH*)/_2X,25H* FULL MASS FLOW */52X, 25 (IH*) /
152X,19H* ITERATION NO. ,I2,_H */52X,25(IR*))
103¢ FORMAT (//24X,1_H* MESH *,SX,qHINCIDENCF, 7_,IIHBLADE ANGLE,2H *,
18X,gHDEVIATION,7X,IIHBLADE ANGLE,2H _/2_X,1OH* LINE *,3X,
27HBLOCKED,3X,gHUNBLOCEED,_X,7HAT L.E.,3X,IH*,]X,7HBLOCKED,]X,
]9HUNBLOCKED,_X,7HAT T.E.,3X,1H*)
10_0 FORMAT (24X,1H*,2X,I3,3X,2(IH*,3(Fg.2,2X),3X),1H*)
1050 FORMAT (1H1)
END
SUBROUTINE _SONIN
C
C--TSONIN CALCULATES AND PRINTS OUT D_TA AS INPUT TO THE
C--TSONIC BLADE-TO-BLADE ANALYSIS PROGPA_
C
COMMON NPEAD, NWRIT, TTE_, IEND, NWPTI, NWPT2, NWPT3, N WRTU, NW_T5, NWPT6
COM_ON/INPUTT/GAM,_R,MSFI,OMEGA, REDFAC,VEITOL, FNEW,DNEW,MBI,MRO,
I MM, MHT, NBL, NHUB, NTIP, NIN, NOUT, NBLPL, NPPP, NOSTAT, NSL, NLOSS,
2 LSFR , LTPL, LAM _T, LROT , LBLAD, LPTEAN, ANG_OT, IMESH, TSL INF,
3 ISTATL, IPLOT, I_UPE_, ITSON, TDEBUG, ZOMI N, ZCMBI, ZOMBO, ZOMOUT,
4 BOMIN, ROMBI, RC_BO,RO_CHT, ZHIN, ZT TN, ZHOUT, ZTOUT, RHIN, _TY N, RHOUT,
5 F TOUT,TITLEI(2t) ,ZHUB(SO),RHUB(53),ZTIP(q0),_TIP(50) ,SFIN(<_),
6 _ADIN (50), TIP (St) ,P_IP(SC) ,LA_IN (5_)) ,VTHIN (50) ,SFOUT (50) ,
7 RADOUT(5C) ,P_OP(SC),LOSOUT(5C_),LAMOUT(50),VTHOUT(59),
S BETAL_(50) ,B_TATE(50) ,ZHST(S9) ,ZTST(S3) ,_HST(5 '_) ,_TgT(_0) ,
9 FLFR (53) ,PEECBD(SC) ,PE_LOS (5_) ,ZBL(50,5_,) ,PBL (50,59) ,
I THBL (53,50) ,TNBL (50,50) ,TTSL (50,50) ,THIBL (50,5") ,TH2BL(_O,50)
COMMON/CALCON/MMM 1 , M HTP I ,CP, EXPO N, TGPOG, PITCH, RLEH, _LET, RTEH, PTET,
I ZLE(5.%) ,RLE(50),ZTE(50),RTE(5_.),ZLEOM(IOI),RLEO_(101),
2 SLEOM (I0 ii , THLEOM (I0 I) ,ZTEOM (IC I) , _TEOM (10 I) ,STEOM (I01) ,
3 THTEOM(10_),ILE(ICI) ,ITE(I¢I) ,ZO_(Id0,101),ROM(IOe,IC1) ,
SO._(1_),1_1},_OM(190,1._1),BTH(1a,q,171),DTHDS(1_•
__ •
,101),
5 DTHDT(lnO,IO1),PLOSg(IOO,Irl),CPHI(IOO,1C!),SPH[ (100,101)
COMMON/VA_CO_/A(_,I'n, I_I) ,UOM(I_O, 1.31),K(1rO, I0_),_H0(100,I01),_
I WSUBS (IOC, I0 I) ,WSUBT (I00, I0!) , WSUBZ (13C, I0 I), WSUB_ (100, 101) ,
2 WSUBM(13¢,1_1),WTH(1q0,1CI),VTH(1C£,131) ,W(I00,101),
3 ALPHA(10C,I_'I),BETA(10n,I_I) ,WWCR(I '',_.,
ICI) ,CURV(10_,!CI),
4 WLSU_F(1 n_., Inl) ,WT_U_F(1C0,1nl) ,CAMP(100,1Ol),SA,P(IC_,101),
5 _HOAV (I@_, ICI) ,DELRHO (19C, I0 I) ,FT (In0, I0 I) , DFD_ (10n, 10 I),
6 ×IOM (1_.[, I$I) ,ZETOM (1.20, 1:1) , DLD[I (10n, 10 1)
COMMON/SLCOM/ILS(5)),ITS(5_),ZSL(10_,5 _) ,[_Sf.(1CO,59),MSL(1Cn,_),. ;
I WZSL(I_,5_),WRgL(10O,5?),WMSL(10_,50),WTHSL(10n,5_-) ,
158
2 ALPSL (I00,50) ,BETSL (I0_, 5_), wsn (IOC, 50), WWC_L (I00,50),
3 CURVSL (1_, 50), WLSSL (10n ,50) , WTSSL (I00,5C)
COMMON/INDCOM/NBLPC,NPPC,ZPC(51,51) ,RPC (51,51) ,TTPC (51,51) ,
I THPC (51,51) ,DTHDZ (51,51) ,DTHDR (5!,51), BTHLE (I_ 1) ,PTHTE (1C I),
2 BTBFLE (I01), BTBFTE (I01)
COMMON/ROTATN/ZHROT(5t) ,RH_OT(59) ,ZTROT(S¢) ,RTPOT(5_) ,
I ZLEOMP(101),RLEOMR(Inl),ZTEOMR(10!),_TEOMR(I_,I) ,
2 ZBLPOT (50,50) ,RBLROT (50,50) ,ZOMROT (10n, 1_I), POMROT (10_, I? I)
DIMENSION ZMgPI (10n) ,ZMSP2 (IOC) ,THSPI (iC0) ,THSP2 (100) ,DTDMI (I"0),
1 DTDM2(100),D2TDMI(10^),D2TDM2 (10_),CUPVI(100),CUPV2(ICn),
2 RADSPI (100) ,RADSP2 (I00) ,ALPHSP (I00) ,ZMP,_P (I00) ,RMSP (I00),
3 BESP (I00), PLOSSL (!00) ,DBDM (I0@), D2BDM2 (IC 0) ,DTET (I00),
4 AAA (1@0) ,BBB(100)
REAL MSFL,MSL,LAMDAF
C
C- -PR FLIMINAR¥ CALCULATIONS
C
IF (ITSON.LE.0) RETURN
IF ((ITER/ITSON)*ITSON.NF. ITER) RETURN
WRITE(NWRT_,1900)
IF (REDFAC.LT.I.0) WRITE(NWRT_,I010) ITER
IF (REDFAC.EQ.1.0.AND. IEND.L_.0) WRITE(NWRT_,I02O) ITER
IF (REDFAC.EQ.I.0.AND.IEND.GE.I.AND.ISUPER. LE.1) WRITE (NWRT_, IC 3")
IF (REDFAC. EQ.I.0.AND.IEND. GE.I.AND.ISUPER.EQ.2) W_ITE(NWRT4,1_4 _)
ARTEM = AR
ZMSFL = MSFL/IOO./REDFAC
OMTEM = OMEGA/REDFAC
REDTEM = 1.0
VELTEM = .01
MBITS = 21
MBOTS = 61
MMTS = 81
MBBI = 20
NRSP = MM
NSLTS = 0
LRVB = 0
LOSS = 0
IF (NLOSS.GT.0) LOSS=I
LWCR = 1
LIPS = 0
IIMESH = 0
IISLIN = 5
IIBSUR = I
IIPLOT = 1
IIDEBG = 0
DEGRAD = 18@./3.1415927
BFACTR = 1.0
C
C--CALCULATE AND PNINT OUT TSONIC DATA ALONG EACH OF THE ST_EAMLTNES
C--ONE STREAMLINE AT A TIME
C
DO 310 JS=I,NSL
II = I
JJ = I
TIPTEM = TIPF (FLFR (JS))
RHOIP = RHOIPF(ELFR(JS))
RVTHI = LAMDAF (FLFR(JS) ,ILE(i),I)/REDFAC
RVTHO = RVTHTA(FLFR(JS),ILE(1),I)/REDFAC
IF (GAM.NE.0.) GC TO 5
ARTEM = 0.
159
TIPTEM = 0.
_HOEP = AB
C
C--INTERSECTION OF STREAMLINE WITH BLADE LEADING AND TRAILING EDGES
C
5 CALL INPSCT(ZSL(1,JS),RSL(1,JS),MM,ZLE,RLE, NBiPL,ZLESL,_L_SL)
CALL INRSCT (ZSL(I,JS) ,RSL(I,JS) ,MM,ZT},RTE, NBLPL,ZTESL,RTESL)
C
C--CALCULATE STREA_SHEET LOCATION AND THICKNESS, AND LOSS DISTRIBUTION
C
CALL ROTATE (-ANGROT,ZSL(1,JS) ,RSL(1,JS),MM, 1,10e, I,DTST,RMSP)
DO 10 IS=I , MM
ZMRSP(IS) = MSL(IS,JS)-MSL(I,JS)
CALL LININT(ZOMROT,ROMPOT, RHOAV, MM,MRTPl,10P,101,ZSL(IS,JS) ,
1RSL (IS,JS), RHOSL,II, JJ)
CALL LININT (ZOMROT,ROMgOT, BTH,MM,MHTPI, I0_, 1OI,ZSL(TS,JS) ,
IRSL (IS,JS) ,8THSL,II,JJ)
CALL LININT(ZOMROT,ROMROT,PLOSS,MM, MHTP1,10.6,101,ZSL(IS,JS) ,
1PSi (IS,JS) ,PLOSSL(IS) ,II,JJ)
C&LL LININT (ZOMROT,ROMROT,DELRHO,MM,MHTPI,ICO, 191,ZSL (ES,JS) ,
IRSL (IS,JS) , DREIOSL, II, JJ)
CALL LININT(ZOMROT,ROMROT,WLSURF,MM,MHTP1, IP0,101,ZSL(IS,JS) ,
IRSL (IS,JS) , HLSFSL,II,JJ)
CALL LININT(ZOMROT,POMROT, WTqURF,MM,MHTP1,100,101,ZSL (IS,JS) ,
IRSL(IS,JS) ,WTSFSL,II,JJ)
ROWMAV = RHOSL*WMSL (IS,JS) +DPHOSL/12.*COS(BETSL (IS,JS))
I (HLSFSL-WTSFSL)
10 BESP(IS) = ZMSFL/9OWMAV/}_MSP(IS) /#THSL'_PFACTR
ZMSFL = ZMSFL*BFACTR
C
C--CALCULATE BLADE SURFACE COORDINATES WITH RESPECT TO ME_IDL OPIGTN
C--AT ALL POINTS ON BLADE WHERE VERTICAL OPTHCGONALS PASS THROUGH
C--THE STREAMLINE
C
II = 1
JJ = I
NBLPTS = ITS(JS)-ILS (JS) +3
ILSJ = ILS (JS)
ITSJ = ITS(JS)
ZMSP1 (1) = 0.
DELM = SQRT((ZSL(ILSJ,JS)-ZLESL) _''2+ (RSL(ILSJ,JS)-RLESL)**2)
CALL LININT(ZPC,RPC,THPC,NPPC,NBLPC,51,51,ZLESL,RLESL,
!THLESL, II, JJ)
ISB = 2
DO 20 IS=ILSJ,ITSJ
ZMSPI (ISB) = ZMRSP(IS)-ZMRSP(ILSJ) ÷DEL_
CALL LININT(ZPC,RPC,THPC,NPPC,NBLPC,51,51,ZSL(I_,JS) ,
1RSL (IS,JS) ,IHSL,II, JJ)
C_LL LININT (ZPC,_PC, TTPC,NPPC,NBLPC, _I, 5 _,ZSL _IS,JS) ,
IRSL (IS,JS) , DBL,II,JJ)
THSPI (ISH) = THSL-THLESL÷DBL/2.
THSP2 (ISB) = THSL-THLESL-DBL/2.
20 ISB = ISB+I
DELM = SQRT((ZTESL-ZSL(ITSJ,JS)) _2÷ (RTESL-RSL(TTSJ,JS))*'2)
ZMSPI (NBLPTS) = ZMSPI (NBLPTS-1) +DELM
CHORD = ZMSPI (NBLPTS)
CALL LININT(ZPC,RPC,THPC,NPPC,NBLPC,51,51,ZTESL,RTESL,
I THTESL, II, JJ)
CALL LININT(ZPC,RPC,TTPC,NPPC,NBLPC,51,51,ZLESL,RLRSL,
160
IDBL,II,JJ}
IF (DBL.LT. CHORD/10nC.) DBL--CHORD/10C_0.
THSPI(1) = DBt/2.
THSP2(1) = -DBL/2.
CALL LININT (ZPC,RPC,TTPC,NPPC,NBLPC,51,51,ZT_SL,RT_SL,
I DBL, II, JJ)
IF (DBL.LT.CHORD/IO$O.) DBL=CHORD/I]00.
THSP1 (NBLPTS) = THTESL-THLESI.+DBL/2.
THSP2 (NBLPTS) = THTESL-THLESL-DBL/2.
DO 25 IS=I,NBLPTS
25 ZMSP2 (IS) = ZMSPI (IS)
C
C--SHIFT STREAMSHEET MERIDIONAI COORDINATES TO ORIGIN AT BLADE
C--LEADING EDGE,
C--AND CALCULATE FIRST AND SECOND DE_IVATIVPS OF _T_EAMSHFET
C
DELM = ZMRSP(ILSJ)-ZMSPI (2)
DO 30 IS=I,HM
30 ZMRSP(IS) = ZMRSP(TS)-DELM
CALL SPLTNE(ZMRSP, BESP,MM, DBDM,D2BDM?)
C
C--ELIMINATE ANY BLADE SURFACF POINTS VERY CLOSE TO THE
C--LEADING AND TRAILING EDGES
C
ZLSJI = ILS(JS)
ILSJ2 = IiS(JS)
DEL_SP = C. 10',CHORD/FLOAT(NBLPTS-1}
40 IF ((ZMSPI (2)-ZMSPI (I)) .GT. DELMSP) GO TO 60
DO 50 IS=3,NBLPTS
ZMSPI(IS-I) = ZMSPI (IS)
ZMSP2(IS-!) = ZMSP2 (IS)
THSPI (IS-I) = THSPI (IS)
50 THSP2 (IS-I) = THSP2 (IS)
NBLPTS = NBLPTS-I
ILSJ1 = ILSJI+I
ILSJ2 = ILSJ2+I
GO TO £_0
60 IF ( (ZMSPI (NBLPTS)-ZMSPl (NBLPTS-I)) .GT.DELMSP) GO TO 70
ZMSPI (NBLPTS-I) = ZMSPI (NBLPTS)
ZMSP2 (NBLPTS-I) = ZMSP2 (NBLPTS)
THSPI (NBLPTS-1) = THSPI (NBLPTS)
THSP2(NBLPTS-I) = THSP2 (NBLPTS)
NBLPTS = NBLPTS-I
GO TO 60
C
C--CALCULATE GRADIENTS ON BOTH BLADE SURFACES
C--CALCULATE RADII FROM CENTERLINE, AT LEADING AND TRAILING EDGES
C
70 CALL SPLINE(ZMSPI,THSP1,NBLPTS,DTDM1,D2TDMI)
CALL SPLINE(ZMSP2,THSP2,NBLPTS,DTDM2,D2TDM2)
CALL SPLINT(ZMRSP, RMSP,MM,0.,I,RADLE,TEMI,TEM2)
CALL SPLINT(ZMRSP,RMSP,MM, CHORD,I,RADTE,TEMI,TEM2)
C
C--CALCULATE LEADING EDGE RADIUS, POINTS OF TANGENCY, AND
C--TANGENCY ANGLES
C
ICOUNT = 0
DAMP = I.
80 BETII = ATAN(RADiEeDTDMI (I))
E-8969 161
BETI2 = ATAN(RADLE*DTDM2(1))
R[I : RADLE*(THSPI(1)-THSP2(1))*COS ((BETII+PFTI2) /2.)/2.
90 ZLTANI = RII'_(I.-SIN(BETII))
ZLTAN2 = RII*(1.+SIN(BETI2))
CALL SPLINT (Z_SPI, THSPI , NBLPTS, Z LT h N1, !, TLT AN I, Dg'AN I, _"E_I)
CALL SPLINT(Z_SP2,TRSP2,NBLPTS,ZLTAN2,1,TLTAN2,DTA_f2,TEM2)
BET!I = ATAN(RADIE*DTANI)
BETI2 = ATAN(RADLE*DTAN2)
RIINEW = RADLE_(TLTANI-TLTAN2)/(COS (BETTI) +COS(BETI2) )
IF (ABS((RIINEW-RI1)/RII).LT..001) GO TO 119
ICOUNT = ICCUNT+I
IF (ICOUNT.LE.100) GO TO 100
WRI_"E (NWPT_, 1200)
GO TO 110
IC_3 RII = (DAMP*RII÷RIINEW)/(DAMP+I.)
IF (RII.GT.0.) GC TO 90
DAMP = DAMP+I.
GO TO 80
1111 _I! = RIINEW
RI2 = PIt
C
C--CALCULATE TPAILING EDGE _ADIUS, POIN'S OF TANGENCY, AND
C--TANGENCY ANGLES
C
ICOUNT = 0
DAMP = !.
12C BETOI = ATAN(RAD_E*DTDMI (NSLPTS))
BETO2 = ATAN(RADT_*DTDM2 (NBLPTR))
_O1 = RADTE *(THSPI (NBLPTS) -THSP2 (NBLPTS)) _'COS ((BETOI+HETO2)/2.)/?.
13._ ZTTANI = CHCRD-ROI*(1.+SIN(BETO1))
ZTTAN2 = CHCRD-HOI_(1.-._IN(BET02))
CALL SPLINT (Z_SPI,THSPI,NBLPTS,ZTTANI,I,TTTANI,Dq'AN1,TEM1)
CALL SPLINT(ZMSP2,THSP2,NBLPTS,ZTTAN2,I,TTTAN2,DTAN2,_"EM2)
BETOI = ATAN(RAD_E*DTANI)
BETO2 = ATAN(RAC_E*DTAN2)
ROINEW = RADTE_(TTTAN1-TTTAN2) /(COS (BETOI) +CO.q(BETO2) }
IF (ABS((ROINEW-ROI)/HOI).LT..9_I) GO TO 15t
ICOUNT = ICOUNT+I
IF (ICOUNT.LE.1O0) GO TO I_?
W[_ITE(NWPTa,1210)
GO TO 150
I_ ROt = (DAMP*_OI÷ROINEW)/(DAMP+I.)
IF (RO1.GT.0.) GC TO I]0
D_MP = DAMP+I.
GO TO 120
150 ROt = ROINEW
RO2 = ROI
C
C--SUBSTITUTE POINTS OF TANGENCY FOB FIRST AND LAST POINTS IN
C--SURFAC_ COOPDINATE ARRAYS
C
ZMSPI (I) = ZLTAN1
ZMSP2(1) = ZLTAN2
ZMSPI (NBLPTS) = ZTTANI
ZM_P2 (NBLPTS) = ZTTAN2
THSPI (I) = TLTANI
THSP2(1) = TL_AN2
THS?I (NBLPTS) = TTTANI
THSP2 (NBLPTS) = 7TTAN2
N qPLI = NBLPTS
162
NSPL2 = NBLPTS
C
C--ELIMINATE SURFACE POINTS BETWEEN BLADE FDGES AND TANGENCY POINTS
C--ALSO ELIMINATE ANY SURFACE POINTS TOO CLOSE TO TANGENCY _OINTS
C
DELMSP = 0.1_*CHORD/FLOAT(NBLPTS-I)
160 IF (ZMSPI(2).GT.ZMSPI(1)+DEL_SP) GO TO 180
DO 170 IS=3,NEPLI
Z_SP1 (IS-I) = ZMSP1 (IS)
17C THSPI(IS-I) = _HSPI (IS)
NSPLI = NSPLI-I
ILSJ1 = ILSJI+I
GO TO 16C
180 IF (ZMSP2[2).GT.ZMSP2(1)+DELM_P) GO TO 200
DO 19C IS=3,NSPL2
ZMSP2(IS-I) = ZMSP2(IS)
190 THSP2(IS-I) = THSP2(IS)
NSPL2 = NSPL2-1
TLSJ2 = ILSJ2÷I
GO TO 180
200 IF (ZMSPI(NSPLI-I).L_.ZMSPI(NSPLI)-DELMSP) GO TO 210
ZMSPI(NSPLI-I) = ZMSPI(NSPLI)
THSPI(NSPLI-I) = THSPI(NSPLI)
NSPLI = NSPLI-I
GO TO 20¢
21C IF (ZMSP2(NSPL2-1).LT.ZMSP2(NSPL2)-DFLMSP) GO TO 22C
ZMSP2 (NSPL2-1) = ZMSP2 (NSPL2)
TEISP2(NSPL2-1) = THSP2(NSPL2)
NSPL2 = NSPL2-1
GO TO 210
C
C--CALCULATE TANGENTIAL COORDINATE.SHIFT FROM MERIDL ORIGIN TO
C--TSONIC ORIGIN, AND SHIFT COORDINATES
C
220 DELTH = (TLTANI'_COS(BETI2)÷TLTAN2_COS(BETII))/(CO._(BF.TII)÷
ICOS (BETI2))
DO 230 IS=I,NSP[I
230 THSPI (IS) = THSPI (IS}-DELTH
DO 2_0 IS=I,NSPL2
2_C THSP2 (IS) = THSP2 (IS)-DEITH
C
C--CALCUL%TE STAGGER AND STACKING COORDINATE
C
STGR = (TTTANI_COS(BETO2)+TTTAN2_COS(BETOI))/(COS(BETOI)÷
ICOS (B_TO2)) -DELTH
THSTAK = THLESL+DELTH
C
C--CALCULATE _DII FROM CENTFR[IN_ TO BL_DF SURFACE POINTS
C
C._LL SPLINT (ZMRSP,RMSP,MM, ZMSPI,NSPLI,RADSPI,AAA,BBB)
CALL SPLINT (ZMRSP,gMSP, MM, ZMSP2,NSPL2,PAD_P2,AAA,BBH)
C
C--CALCULATE SLOPES, S_COND DERIVATIVES, AND CURVATUPES ON UPPER
C--BLADE SURFACE
C
SLOPE_ = TAN(BETII)/RADSPI (I)
SLOPEN = TAN(BETOlJ/RADSPI(N._LI)
CALL SPLISL (ZMSP1,THSPI,NSPLI,SLOPEI,_IOPEN,DTDMI,D2TDMI)
BETII = BETII_DEGRAD
163
BETO1 = BETOI*DEGRAD
TMSL = ZMSPI(1)-ZMRSP (1)
CALL SPLINT (MSL(I,JS) ,ALPSL(I,JS) ,MM,TMSL, I,ALPHSP(1) ,TkM!,TEM2)
NSPLM = NSPLI-I
DO 250 IS=2,NSPLM
ITEM = ILSJI+IS-2
250 ALPHSP(IS) = ALPSL(ITEM,JS)
TMSL = ZMSPI(NSPLI)-ZMRSP(1)
CALL SPLINT(MSL(I,JS) ,ALPSL(I,JS) ,MM,TMSL, I, ALPHSP(NSPLI),
ITEMI, TEM2)
DO 260 IS=I,NSPL1
260 CURV1 (IS) = (RADSPI(IS)*D2TDMI(IS) +SIN(ALPHSP(IS))_DTDMI (IS)) /
I (I.÷ (RADSPI (IS) _DTDMI (IS)) _'2)*_1.5
C
C--CALCULATE SLOPES, SECOND DERIVATIVES, AND CURVATURES ON LOWEP
C--BLADE SURFACE
C
SLOPEI = TAN(BETI2)/RADSP2(1)
SLOPEN = TA N (BETC2)/RADS _2 (NSPL2)
CALL SPLISL (ZMSP2,THSP2,NSPL2,SLOPEI,SLOPEN,DTDM2,D2TDM2)
BETI2 = BETI2_DEGRAD
BETO2 = BETO2_DEGRAD
TMSL = ZMSP2(1)-ZMRSP(1)
CALL SPLINT (MSL(I,JS) ,ALPSL (I,JS) ,MM,TMSL, I,ALPHSP(1) ,TEM1,TEM2)
NSPLM = NSPL2-1
DO 270 IS=2,NSP/M
ITEM = ILSJ2+IS-2
270 ALPHSP(IS) = ALPSL(ITEM,JS)
TMSL = ZMSP2(NSPL2)-ZMRSP(1)
CALL SPLINT (MSL(I,JS) ,ALPSL(I,JS) ,MM,TMSL, I,ALPHSP(NSPL2),
ITEMI,TEM2)
DO 280 IS=I,NSPL2
28O CURV2 (IS) = (RADSP2 (IS)*D2TDM2(Ig) +SIN(ALPHSP(IS))*DTDM2 (IS))/
1 (1.+ (RADSP2(IS) SDTDM2 (IS)) $_2)_'1.5
C
C--PRINT TSONIC DATA
C
WRITE(NWRT_,I050) JS, FLFR (JS)
IF (BFACTR.NE.I.0) WPITE (NWRT_, 1055)
WRITE(NWRT_,1060)
WRITE (NWRT4,1310) GAM, A_TEM, TIPTEM, RHOIP, OMTEM, ZMSFL
WRITE (NWRT4,1070)
WRITE (NWRTQ, 13_0) VELTEM
WRITE (NWRT_ ,I080)
WRITE (NWRTq, 1320) NBL, NSPLI, NSPL2, N RSP
WRITE (NWRTq,1090)
WRITE (NWRT_, 1330) LRVB, LOSS,LWCR, LIPS
@RITE (NWRT_,1100)
WRITE (NWRT_, 1_10) RVTHI, PVTHO
WRITE (NWRT_,1110)
WRITE (NWRT_, 1350) CHOR D, STGR, DELTH, THSTAK
WRITE (NWRT_,1120)
WRITE (NWRT_, 1360) RI!,BETII,ROI, BETOI
WRITE (N WRT_ ,1130)
WRITE (NWRT_, 1370) (IS,ZMSP 1 (IS) , THSP1 (IS) ,DTDMI (IS) ,D2TDM1 (I_) •
1CURVl (IS),RADSPI (IS) ,IS=I,NSPL1)
WRITE (NWRT_, 1t43)
WRITE (NWRT4,1360) RI2, BETI2,PO2, BETO2
WRITE (NWRT., 1150)
164
WRITE (NWRT4,1370) (IS,ZMSP2 (IS) ,THSP2 (IS) ,DTDM2 (IS) ,D2TDM2(IS),
1CURV2 (IS),RADSP2 (IS) ,IS=I,NSPL2)
WRITE(NWRT4,1160)
WRITE(NWRT4,138O) (IS,ZMRSP(IS) ,RMSP(IS) ,BESP(iS) ,WWCRSL(IS,JS) ,
1PLOSSL(IS) ,DBDM(IS),D2BDM2 (IS) ,!S=I,MM)
WRITE (NWRT4,1170)
WRITE (NWRT4,1300)
C
C--WRITE OUTPUT AGAIN IN CARD IMAGE FORMAT
C
30C ICA_DS = 0
NWRT7 = 6
IF (ICARDS._Q.O) GO TO 3 IC
WRITE (NWRT7, I _00) JS,FLFR (JS)
WRITE (NWRTT, 1450) GAM, ARTEM, TIPTEM, RHOIP, OMTEM, ZMSFL
WRITE (NWRTT, 1460) REDTEM, VELTEM
WRITE (NWRT7,1440) MBITS, MBOTS, MMTS, MBBI , NPL, NSPLI , NSPL2, NRSP, NSLTS
WRITE (NWRT7 ,I 440) LRVB, LCSS,LWCI_, LIPS
WRITE (NWRT7,1460) RVTHI, RVTHO
WRITE (NWRT7,1470) CHORD,STGR
WRITE (NWRT7,1480) RI1,BFTII,PO1,BETOI
WRITE (NWRT7,1420) (ZMSPl (IS) ,IS=I, NSPI.I)
WRITE (NWRT7,1430) (THSPl(IS) ,IS=I,NSPL1)
WRITE (NWRT7,1480) RI2, BETI2 , EO2, BET 02
WRITE (NWRT7,1420) (ZMSP2 (IS), IS=I,NSPL2)
WRITE (NWRT7,1430) (THSP2 (IS) ,IS=I,NSPI2)
WRITE (NWRT7,1420) (ZMRSP (IS) ,IS=I,MM)
WRITE (NWRT7, I _20) (RMSP (IS) ,IS=I,M_)
WRITE (NWRT7,1_30) (BESP(IS) ,IS=I,MM)
W_!TE (NWRT7,141¢) (WWCRSi (IS,JS) ,IS=I,MM)
WRITE (NWRT7,1410) (PLOSSL (IS) ,IS=1, MM)
W_ITE(NWRT7,1_0) IIMESH,IISLIN,IIBSUR,TIPLOT,IIDEBG
IF (NWRT7.EQ. NWRT4) WRITE(NW_T_,133_)
31C CONTINUE
RETURN
C
C--FOR MAT STATEMENTS
C
1000 FORMAT (///45X,39(1H*)/45X,39H_ _ INPUT DATA FOP TSONIC PROGRAM
1 • _/50X,29 (IHe)//)
1010 FORMAT (/53X, 23 (IH_)/53X,23H_ REDUCED MASSFLOW _/53X,23 (IH') /
1 53X, 18H_ ITERATION NO. ,12,3H _/53X, 23 (1H_)////)
1025 FORMAT (/52X, 25 (IH_)/52 X,25H _ FULL M AS._ FLOW _/52X, 25 (IH_) /
152X, 19H _, ITERATION NO. , 12,4H */52X, 25 (IH_)////)
1030 FORMAT (/52X,25(IH_)/52X,25H* FULL _AS_FLOW */42X,45(IH_)/
142X, IH*,I2X,19HTRANSONIC SOLUTION,12X, IH_/a2X,45H* BY VELOCITY G
2RADIENT APPROXIMATE METHOD _/35X,59(IH*)/35X,59H* ALL VELOCITIES
3 SMALLER THAN CHOKING MASSFLOW SOLUTION _/35X,59(1H*)////)
1040 FORMAT (/52X,25(1H*)/52X,25H_ FULL MASSFLOW */42X,45(1H_)/
I_2X,1H_,12X,19HTRANSONIC SOLUTION, 12X,IH_/_2X,_5H_ BY V_LOCITY G
2RADIENT APPROXIMATE METROD _/35X,59(IH*)/35x,5gH • ALL VELOCITIES
3 LARGER THAN CHOKING MASSFLOW SOtUTION _/35x,sg(1H_)////)
1050 FORMAT (2X,76 (IH_)/2X,38H_ TSONIC ZNPUT -- STREAMLIN_ NUMBER, 13
1,23H -- STREAM FUNCTION =,FS._,_H */2X, 110(1H_)/2X,IIOH_ NOTE
2 -- THE ORIGIN FOR MERIDIONAL AND TANGENTIAl. COOI_DINAT?,S ON THIS B
3LADE SECTION IS THE TSONIC ORIGIN, _/2X,93H* THAT IS, TH_ FARTHP_
4ST POINT UPSTREAM ON THE LEADING EDGE RADIUS. THE MERIDL COORDIN
5ATES,16X,1H_/2X,95He WHICH HAVE A DIFFEI_ENT ORIGIN, HAVE BEEN SHI
6FTED BY THE PROGRAM TO GIVE THESE TSONIC INPUTS.,14X, IH*/2X,
7110 (1H*)//)
165
I05_ FORMAT (2X,I16(1H_)/2X,99H* NOTE -- ZMSFL AND THE BESP _RRAY IN
1 THE FOLLOWING OUTPUT HAVE BOTH BEEN MULTIPLIED BY BFACTR =,GI_.7,
23H _/2X, 116 (1H_)///)
I06C FORMAT (5X ,3HGAM,13X,2HAR, 13X,3HTIP,11X,SHRHOIP,1P_,5HOMEGA,12X,
15HZMSFL)
I07_ FORMAT (5X ,6HREDFAC,SX,6HVELTOL)
I_80 FORMAT (5X ,53HMBI MBO MM MBBI NBL NSPL1 NSPL2 NRSP NS
IL)
1090 FORMAT (5X ,22HLRVB LOSS LWCR LIPS)
11,30 FORMAT (5X ,5HRVTHI,10X,5HRVTHO,11X,4HFSMI, 11X,_HFSMO, 11X,_HSSM1,
1 11X, 4HSSM2)
111C FORMAT (SX, 5HCHORD, I0 X, _HSTGR,a2X, 5HDELTA, IC X, 6HTHSTAR)
1120 FORMAT (//5X,25HHLADF SURFACE I ***_,!SX,3HRI1,12X,5HBETII,
110X,3HRO1,IIX,5HBETO1)
113£ FORMAT (//5X,5HPOINT,6X,SHZMSPI,ICX,5HTHSPI,6X,10HDERIVATIVE,3X,
11qH2ND DERIVATIVE,3X,gHCURVATURE,SX,6HRADIUS)
1140 FORMAT (//SX,25HBLADE SURFACE 2 **_**,15X,3HRI2,12X,SHBETI2,
110X,3HRO2,11X,5HPETO2)
1155 FOPMAT (//5X,5HPOINT,6X,5HZMSP2,!CX,_HTHSP2,6X,IOHDERIVATIVE,3X,
11_H2ND DERIVATIVE,3X,gHCURVATURE,SX,6HRADIUS)
1160 FOSMAT (//5X,29HSTREAM CHANNEL DATA _*_//5X,5HPOINT, 6X,
15HZMRSP, 10X,_HRMSP,10X,_HBESP,10X,SHWCWCR,I_X,5HPLOSS,19X, QHDBDM,
210X,6HD2BDM2)
117r FORMAT (//5X,36HIMESH ISLINE IBSURF IPLOT IDEBUG)
12_0 FORMAT (/2X,62HA LEADING EDGE RADIUS COULD NOT BE OBTAINED IN 160
1ITERATIONS./2X,64HRII, RI2, BETTI, BETI2, STGR, DELTA, AND THSTAK
2MAY BE IN ERROR/I//)
121C FORMAT (/2X,63HA TRAILING EDGE RADIUS COULD NOT BE OBTAINED IN 100
1 ITERATIONS./2X,_9HR01, R02, BET01, BET02, AND STGR MAY BE IN ERRO
2 R.///1)
!30C FORMAT (IHI)
1310 FORMAT (1X,GI_.7,7G15.7)
132C FORMAT (27X,I_, 2X, I_, 3X, Iq, 3X,I_)
133C FORMAT (2X,_I6)
134C FORMAT (19X,F6.4)
135 n FORMAT (1X,G1_.7,1X,G1_.7,32X,2G15.7)
136C FORMAT (_OX,_G15.7)
137C FORMAT (3X, I5,2X,6G15.7)
138C FORMAT (3X, I5,2X,5G15.7,8X, 2G15.7)
I_0C FORMAT (5X, 17HSTRE_MLINE NUMBER, I3,23H STREAM FUNCTION =,
IF8.4)
1410 FORMAT (8F10.5)
1420 FORMAT (8FI0.6)
1430 FORMAT (8_1o.7)
144C FORMAT (1615)
I_56 FORMAT (F10.5,2FIO. _,F10.7, F10. 3,FI0.8)
I_60 FORMAT (2F10. _)
I_70 FORMAT (F10.6,F10.7)
1480 FORMAT (F10.7,F10._, FlO. 7,FI0._)
END
SUBROUTINE SLPLOT
C
C--SLPLOT PLOTS THE STREAMLINES IN THE HUB-SHROUD FLOW PLANE
C
166
(v) ZSH3H3 q-fVD
2 ALPSL(I".0,5(_),BETSL(I(_0,_%),W_L(Ir(_,_9),WWCRSL(I(],50) ,
3 CURVSL(100,50) ,WLSSL(100,5 r) ,[4TSSL(1CO,5r)
COMMON/PLTCOM/ZLRNG,ZRRNG,RBRNG, RTRNG,ZHPLT (I06) ,R!{DL" (I$"),
I ZSPLT(100),RSPLT(10r),ZLPLT(lr0) ,RLPLT(If"),ZTPiT(10_) ,
2 RTPLT (100)
DIMENSION TITL1 (In) ,TITL2(?) ,TTTL3 (3) ,TITL_ (11) ,TTTI5 (5)
DATA TITL1/_TRE_,_AMLI_,'NE P_,'LOT$','CISL',_2IN ','ME_I_,'D_ON _
I,_AL P','LANE'/
DATA TITL2/'Z D',' IPEC','TION'/
DATA TITL3/_R DB,'IREC','TION_/
DATA TITL4/_SUBS_,_ONIC_,_CIS ', 'OLUT e, eTONSe,_C2IT _, _ERAT e, 'IONS _
I,'CINO', '.',' XXXX'/
DATA TITL5/_TRAN','SONI',_C$CIe, eSOLU _,,TIONe/
DATA SYM/'X'/
IF (IPLOT.LE.n) RRTURN
IF(( ITER/IPLOT) * IPLOT. NE. ITEP. AND. ITEP. NE. I) RETUI_N
C
C--PLOT TH E ITERATION NUMBER
CALL LRCHSZ (g)
CALL LRGRID(I, 1,C.C,0.0)
CALL LHCNVT (ITER,1,TITL_ (11) ,I,_,6)
IF (]_END.LE.n) CALL LRLEGN(TITL_,_,(_,_.2,6.0,1.0)
IF (IEND.GT.O) CALL LPLEGN(TTTLg,20,_,_.2,5.5,1.0)
C
C--P LOT BLA DE GEOMETRY AND STREAMLINES
C
CALL LRMRGN (I ._3, 1..0,2.'_,1.'_. )
CALL L]_ANGE (ZLI_N G, ZR}_ NG, _BP NG, RTRNG)
CALL LI+GRID (-I,-I,1._,I. _)
CALL LRLEGN (TITLI,_0,C_,3.5,C.7,9.0)
CALL LRCHSZ (2)
CALL LRLEGN (TITL2, 12,(_,;_.5,1.=,0.C)
CALL LI_LEGN (TITL3, 12,1,0. a, _. 5,0 ._)
CALL LI_CHSZ (_)
CALL LI_CURV(ZHPLT,RHPLT, I{'0,2,5YM,9._)
CALL LRCURV (ZSPLT,RSPLT,100,2,SYM,e.9)
IF (MBI.EQ.0) GO TO 5
CALL LRCURV (ZLPLT,RLPLT,100,2,SYM, _._)
CALL LRCURV(ZTPLT, RTPLT, 10O,2,SYM, ,'_.C)
C--PLOT STREAMLINES
5 EOP = _.0
CALL ROTATE (-ANGROT,ZSI,RSL,MM, NSL,ICO,50,ZSL,RSL)
DO 10 JS=I,NSL
IF (JS.EQ.NSL) EOP=I.0
16 CALL LPCURV(ZSL(I,JS),I_SL(I,JS) ,MM,2,SYM,EOP)
CALL LRCURV (ZSL,RSL,6, I,SYM, 1.0)
167
SUBROUTINE SVPLOT
C
C--SVPLOT PLOTS THE MEAN STREAM SUFFACE AND DLA_E SUEFAC_ O[ITPU?
C--VELOCITIES ALONG ALL STPEAMLINES
C
COMMON NREAD, NWPIT,ITE]_,IEND,NWRTI, _WPT2,NW[_T_,NWRTU,NWPTq,NWPT6
COM_ON/INPUTT/GAM,AN,MSFI,OMEC_A,PEDFAC, VELTOL,FNFW, DN=W,Mi%I,'_PO,
I MM, MHT, NBL, NHUB, N'IP, NIN, NOUT, NBLPL, NPPP, NOSTA_, NEL, NLOS_,
2 LSFR , LTPL, LAMVT, LROT, LBLAD,LET E;%N, ANGR_T, IMFSH, TSL INS,
3 TSTATL, IPLOT, ISUPER, ITSON, TDEBHG, ZnMI N, ZCMBI, ZO_BO, ZOMOUT,
4 _OMIN,ROMBI,ROMBO,ROMOUm,ZHIN,ZTIN,ZHOUT,Z_'OUT,_H[N,ETIN,RHOU _,
5 RTOUT,TITLEI(2_),ZHU_(5C),PHUB(SZ'),ZTIP(5_),PTIP(5g) ,_FIN(=') ,
6 RADTN(50),TIP(_) ,PPIP(_u),L_MTN(<_) ,VTHIN(5!'),SFOUT(5_),
7 [_ADOUT (50) ,PNOP (Sn) ,LOSOUT (59) ,LAMOUT (_C) ,VTHOUT (:0) ,
8 BETALE(50) ,BETATE(5O) ,ZHWT(5") ,ZTST(5 _) ,PHST(5 _) ,G_ST(_ _) ,
9 ELFIn(S0) ,PERCRD(59),PERLO$(50) ,ZBI(5 n,55) ,NBL(_3,S!)
I THBL(50,5O) ,TNBL(5¢,5 _) ,T"_BL(5],SF) ,TI]![_L(5n,SC _) ,TH2BL(Sn, %_)
COMMON/SLCOM/ILS(SC) ,TTS(SC) ,ZSL(10],SC) ,RSI (109,qq),_ZI.(1 7t,<_),
I WZSL (100,5C), WRSL (1C? ,50), WMSL (1_%F, 5n), WTH_L (10"., _) ,
2 _LPSL(103,5_),BETSI (1O0,5_),W_L(IC:_,5_),WWCRqL(I¢_,S¢),
9 CURVSL(160,50),WLSSL(170,5_) ,WTS_,L(IC_,5 _)
DIMENSION TITLI (12) ,TITL2(_) ,TITL3 (lU) ,TITL4 (15) ,
1 TITLS(16),TITI_(6),TITL7 (2)
_AL HSL,LRNG
DATA TITLI/'_EBI',_DION','AL A','ND .q', U[_FA','CE$C','I$_{I','_FL_'
I,'TIVE',' VEL','OCIT','I_S '/
DATA TITL2/_ ST_,'_EAM_,_LIN_', ' NO.', XXXX',' ','[! = ','Y×XX'
1 , 'XXXX'/
DATA TITL3/'_E}_I_,_DION_,'AL P','EL_.T ', TVE ','V_LO','CITI','_$C '
1,'ISR6','FOR ','ALL ',_STRE','AMLT','NE.g '/
DATA TITL4/'SUCT','ION ','SU_F','ACE ', _FLh','TTV_',' V-"L','.r)cIT '
I,'IF_S$','CISR','SFOR',' ALL',' STB','EAML','I.N_'S'/
DATA TITL5/'PRES','SU[_',' S!IP','FACE', [_EI','ATTV','E VE','IOCI'
I,'TIES','$CI$','RSFO','}_ AL','L ST','I_EAM','LIN_','-_ '/
DATA TITL6/' ME','RIDI','ONAL',' CO', ORDI','NAT_'/
DATA TITL7/'%'ELO','CITY'/
DATA SYB/' X'/
IF (IPLOT.LE.0) RETURN
IF ((ITER/IPLOT) _IPLOT.N][.ITE[_.AND.ITFP.NF. I) 5ETURN
C
C--COMPUTE RANGE OF PLOTS, AND SET UP FO_ PLOTTING
C
L_NG = MSL(I,I)
RRNG = MSL(I,I)
BRNG = 1C00.
T_NG = 0.
DO 30 JS=I,NSL
L_NG = ABINI (LBNG,gSL(I,JS))
RRNG = AMAXI(R_NG,SSL(MB,JS))
IF (MBI.EQ.0) GO TO !5
ILSJ = ILS(JS)
168
l_SJ = ITS (OS)
DO 1C IS:ILSJ,TTSJ
Bg_JG = A_INI ( L:I_NC_,_4LqSL (I£,JS))
?qNG = A_INI ( [_PNG,WT_SL (IS,.75))
TRNG = AMAXI ( T_NG,WLSSI. (IS,JS))
1: T,qNG = AFIAX1 ( r_NG,WTS:_L (TS, JC) )
15 DO 2¢ IS=I,_:_
B_NG = AMINI( 3PNG,:_SL(IS,JS))
2C T_NG = A_AXI( YENG,WSI(IS,JS))
3C CONTINUE
CALL L£M_GN (I .r,l.n,2.r,1.))
CALL L_ANGE(L 5NG,RPNG, PFNq,TFNq)
CALL LRGEID (I ,I,11.),11. _)
C
C--PLOT VELOCITIES ON EACH 5TPEAMZT}:R
C
DO UC JS=I,NSL
EOP = r
IF (MBI.EQ._) EOP=I._
CALL LFCHSZ (_)
IF (JS.EQ.I) CALL L}?L£GN(TT_[ I,_q,_,2.-5,'_.7,C. '_)
CALL LPCHSZ(3)
CALL LPCNVT (JS,I,T:TL2 (_) ,1 ,a,')
CALL LPCNVT (FLFP (J S) , q,Ti'?L2 (_) , ?,_],a)
CELL LRLEGN(TITL__,_6,n,2.2,q.5,":. ")
C :_I,],L " _" (2)
_.CH.,Z
C_IL LI_LFGN (TT'[L£,L_, , 3._, I. ?, ". ")
C._I.L L}RL_GN {TITL7,_, 1,:';.2,'4.q,f. )
CALL LRCHSZ (_)
CALL L_CUI?V(MSL(I,JS),WSL(I,JS) , _M,),SY_,].:)
C_LL LRCURV (_SL(1,JS) ,WS/(1 ,J_) ,M_,_,_YM,EOP)
IF (MBI. EQ.0) GO TO _C
ILSJ = ILS(JS)
MBLD = ITS (JS) -liS (JS) +I
CALL LRCURV (MSL (ILSJ,JS) ,WLSSL(II. SJ,Jq) ,MP_LD,2,gYM,C _)
CALL LRC[_V (MSL(ILSJ,JS) ,WLSqL(ILSJ',JS) ,MRLD,a,SY_,r. ")
CALL LIRCU_V (_SL (ILSJ,JS) ,WTSSL (ILSJ,JS) ,_BLD,2,SY_,_'._)
CALL L_CURV (_SL (ILSJ,JS) ,WTSSL(ILSJ,JS) ,MBLD,_,CYV, I.")
40 CONTI NUE
C
C--PLOT MERIDIONAL VFLCCITIFS FOR ALL STREAmLINeS
C
C_LL LEGRID (3,3,11.C,11 .n)
CALL LRLEGN (TITL3,56,9, 1.7,C.7, n.0)
CALL LRCHSZ (2)
CALL LBLEGN (TITL6,2_,e,3._, 1.3,6.0)
CALL LRLFGN (TITL7,8, I ,0.2,a.9,0. ")
CALL LRCHSZ(_)
EOP = 0.0
DO 50 JS=I,NSL
IF (JS.EQ.NSL) EOP=1.n
5C CALL LECURV (MSL(1,JS) ,WSL(I,JS) ,_,2,SYM,EOP)
CELL LRCHSZ (0)
IF (MBI.FQ.0) I?E'_URN
C
C--PLOT SUCTION SURFACE VELOCITIES FOR ALL STREAMLINES
C
CALL LRCHSZ(_)
CALL LRLEGN(TITLa,6C,0,1.2,0.7,O.n)
CALL LRCHSZ(2)
169
CALL L_ LvGN. ([ITI,_,2_,',._._, 1. _,( .>)
C.ELL I, FLFG_ ("ITL7,,], 1,n.2,_.O,C. ")
CALL LRCU_Z (_)
ZOP = r .<
DO 6'-'[JS=],NSL
IF (JS. EO. NSL) FOl":1.r
ILSJ : TI, S(JS)
MBLD = ITS (J_) -ILS (JS) +I
t_ CAI. L LFCUPV (t4SL(ILSJ,JS) ,WLSSL(TLSJ,JS) ,_DLD, 2,SY_,EOP)
c
C--PLO l' [,REscr;_._ SU_FACF VELOCTT'IES _OF< ALL S_.R. AMLI
C
C_LL LLiLEGN (TITLS,6_,'_,I.2,'].7,'. r)
,_,,I_:, LF,CHSZ (2)
,_i,], LPLF3N('elYLh,21_,n,3._,I.J,_. _)
CALL LPLFqN(TI'rL7,_, 1,'.?,_.q, ")
C_,I,L LPCHSZ (q)
FOP -- r r"
DO 70 JS:I,NSL
IF (JS.EQ. N_L) EOP=I..;
ILSJ : ILS (JS)
MBLD = IT._ (J_) -IL_(JS) +I
7" CALL LRCURV (MSL (ILSJ,JS) ,WTSSL(ILSJ,JS) ,MBLD,2,SYM, EOP)
CALL LSCUEV (ZSL,r'SL,_, !,SYM, 1._)
C:%LI. LRCHSZ (O)
RZ._U RN
SqEPOIITINE TVZLCY
C
C--7VEI, CY CALCULATES TUg FULL MAqSFLOW, TRANSO)JIC SOLUTION
C--USINq V_I.f_CITY GE&DIENT FQIIATION_
C
CONNON NP_AD,NWRIT,IT_N,IEND,NWgTI, _IWI_T2,NWgT_,NWPT_,_'WI_T_,NWPT6
CONMON/INPUT_'/GAM,AN,MSFI,OMEGA, PEDFAC,VELTOL,FNEW,DNE_,MBI,MPO,
"_M,MHT,NDL,NHI]D,NTIP,NIN,NOUT, NB LPL, NPPP, NOST&T,NSL,NLOSS,
LS FN, LT PL, LA_VT, LROT, LHL&D, LETE A N,ANGROT,IMESH,ISLINE,
I STATL, I PLOT, ISUPFD, ITSON, IDE BUG , ZO_IN, ZOMBI, ZO_IBO, ZOMOUT,
POMIN,RO_BT,[{O_BO,RO_O, UT,ZHTN,ZT IN,ZHOUT,ZTOIIT,RH!N,RTIN,RHOUT,
I_TOUT, TI TLEI (20) , Z}IUP (5¢ ) , }_II;] B (5 _) ,ZTIP(=0) ,RTIP (<9) ,_FIN (<'_) ,
9ADIN (5_') ,TIP (5 _) ,PPIP(5;),LAMIN (_£) ,VTHIN (_s) , SFO[IT (¢0) ,
i_ADOUT (50) , PlleP (5 _) ,1CSOIJT (5C) ,L AMOIIT (5_') ,VTHO!]" (5 _) ,
BETALE(E0) ,BEI&TE (_") ,ZHST (5") ,Z TST (50), PHST (5¢) ,_'ST(_O) ,
FLF_(5 '_) ,PEPCI_D(Sa) ,PERLOS(50) ,Z BL (5n,50) ,RBL (59,5_) ,
I THBL(50,S¢) ,TNBL(SC, _) ,TTBL(Zr, 50) ,THIBL (5n,5C) ,TH2BI,(5_,_'?)
COM MON/CALCON/MMM I , MHTPI ,CP, EXPON ,T GP,OG, PITCH ,RLEH, I_LET, R"_EH, PTRT,
I ZLE (5C) , RLE (5C) , ZTE (5C) , RTF(<¢) , ZLEOM (I('I),t_LEO_ (1," 1),
2 SLEOM (IS 1) , THLEOM (I0 I) ,ZT£OM (_) _ ) ,PTEO_(lr_I) ,STEOM (107) ,
THTEO_(101),ILE(IC1),I]?E(101),ZO_(!g0,1CI),POM(10#,Ia_) ,
gOM (la0, I0 I), TOM (100, I._.1),HTH (10_, I_ I) ,DTHDS (IC'l, !0 I),
5 DTHDT (1C0, Ig I), PLOgS (10,%, I_I) ,CPHI (IOn, I0 I) ,gPHI (107, I_ 1)
COMMON/VARCC._/A (_, IC._",ICI) , UO_ (In_.._,!CI) ,K (1C0,1C1) ,RI{O (10_,_1) ,
I WSUBS(I_.t,ICI),WSUBT(100,1CI) ,_UBZ(13_,I01),W.qUBR(100, 101),
2 ,.
WSUBM(I_'r,IC1),'_TH(Ine,I_I),VTH(IO_,lnl),W(lO_. ,1CI),
3 ALPHA(1On,lnl),_P.TA (ICq,I01) ,WWCR(100,1Q1),CURV(10n,101),
lq0
'4 WLSU£F(IOO,IO1),_T'_[]PF(1Cc',IO1),CAMP(IOt',I_I),St_MP(lCO,101),
5 RHOAV(1OC,1C1),DELRHO(10_,101),FT(l$_,IO1),D';DM{13q,101),
6 )[IOM(IOO,lr'I),Z_TnM(I"_O,I:'I),DLDU(IOO,, 1_1)
DIMENSION DW_DS(100) ,DWTDS('_C;'].) ,TVERT(1C1),
1 WMVERT (I01) , W_VERT (I; I) ,TWLMP (!9 I) ,CPTIP (10 I), RCARq (I0 I),
2 DWMVER(ICI),DWTVEP(IO!),ATVEL(IOl),BTVEL(ICI) ,CTVEL(IOI) ,
3 DTV£L (101) ,STV£L (131) ,F_'VFL (191) ,LAM£DA(IOI),LAMBDO(I_I),
u TIPT(IOI),RHOIP(I_I) ,UNEW(I?I),DWMDM(IC6,101) ,DWTDM(IO^,I_I),
5 DWMDT (I00, I0 I), DWTDT (I0£, I01)
REAL MSFL, LAMDDA, LA _nDO, I.AMOUT, LA_TN, LAM DAF, MAXFLO, MINFLO
LOGICAL _EPEAT
C
C--RESTOR£ FULL _ASS FLOW V_LUES, AND RETNITIALIZE LAMDAF AND _VTHTA
C
IZND = IEND+I
JZ = I
IF (ISUPER.EQ.2) JZ=2
IF (ISUPER.EQ.2) GO TO 55
W_ITE(NW_IT,I_0)
OMEGA = OMEGA/_EDFAC
MSFL = MSFL/gEDFAC
DO 10 J =I,NIN
LAMIN (J) = LAMIN (J)/_FDFAC
VTHIN (J) = VTHIN (J) /_EDFAC
DO 20 J =I,NOUT
LAMOUT (J) = LA_OU_{J)/REDFAC
2 '_ VTHOUT(J) = VTHOUT(J)/REDFAC
CALL LA_NIT
IF (MBI.NE.C) CALL RVTNIT
C
C--CALCULATE PARTIALS WITH _ESPECT TO T OF WS[IBM AND WTH
C
DO _0 I=I,MM
DO 3C J=I,MHTPI
DFDM (I,J) = DFDM (I,J)/REDFAC
TVERT(J) = TO_ (I,J)
WMVERT(J) = WSUBM(I,J)
30 WTVERT(J) = WTH(I,J)
CALL SLOPES (TVE_[,WMVERT,MHTPI,DW_VER)
CALL SLOPES (TVENT,WTVERT,MHTPI,DWTVER)
DO _0 J=I,MHTPI
DWMDT(I,J) = DWMVER (J)
_C DWTDT(I,J) = D_TVER(J)
C
C--CALCULATE PARTIALS WITH RESPECT TO S OF WSUBM AND WTH, AND THEN
C--CALCULATE PARTIALS WITH RESPECT TO M OF WS{fBM AND WTH
C
DO 50 J=I,MHTPI
CALL SLOPES (SOM (1,J) ,WSUBM(1,J) ,MM, DWMDS)
CALL SLOPES (SOM (1,J) ,WTH(1,J) ,MM,DWTDS)
DO 50 I=I,MM
DWMDM (I,J) = (DWMDS(I) _CAMP (I,J) +DWMDT(I,J)*SAMP(I,J)) /REDFAC
5(' DWTDM (I,J) = (DWTDS(I) _CAMP(I,J) +DWTDT(I,J) _S_MP(I,J) )/REDFAC
RTOLER = 1. E-_
MEAN = MHT/2+I
55 CHLIM = MSFL_FLOAT(NBL)
UNE_{I) = O.
C
C--INITIALIZE VARIABLES FOR LOOP ON VERTICAL MESH LINES
171
C
LINC = 0
ICOUNT = 0
IREVRS = 0
ITE_IN = MM
ITEMP = MM
IMAX = 0
INCR = 1
I = ¢
C
C--SOLVE VELOCITY GRADIENT EQUATION ON EACH VERTICAL MESH LINE
C
C--BFGINNING OF LOOP ON VERTICAL MESH LINES
6t I -- I+INCF
IF (I.GT.MM) GO TO 290
WHUB = W(I,1)/REDFAC
DFLMAX = W(I,MEAN)/20./REDFAC
WMAX = WH[JD
WMIN = WHUB
_AXFLO = -I.EIC
MINFLO = I.EIC
NADD = O
NSUB = 0
N_EP = 0
NCOUNT = 0
C
C-'CALCULATE COEFFICIENTS A, B, AND D FOR THE VELOCITY G_ADIENT EQ[IATION
C--INITIALIZE COEFFICIENT C TO ZERO
C
DO 80 J=I,MHTP1
LAMBDA(J) = LAMDAF(UOM(I,J),I,J)
IF (MBI.NE.O) LAMBDO(J) = RVTHTA (UOM(I,J),I,J)
TIPT (J) = TIPF(UGM (I,J))
RHOIP(J) = R_OTPF(_JOM([,J))*(_.-PLOS_(I,J))
BTVEL(J) = O.
CTVEL(J) = O.
DTVEL (J) = O.
IF(I.LT.ILE(J).OI_.Y._T. ITE(J)) GO TO 7_
SAL = SIN (ALPHA(I,J))
SBETA SIN (BETA(I,J))
CBETA = COS (BETA (I,J))
ATVEL(J) = CBETA_*'2*CA_P(I,J)_CURV(I,J)-SBETA_'_2_CPHI(I,J) /
1 ROM(I,J) +DTHDT(I,J) _'SAL_CBETA*SBETA
BTVEL(J) = CBETA_SAMP(I,J),DWMDM (I,J)-2.*OMEGA_SBETA*CPHI(I,J)
1 +ROM (l,J) _DTHDT(I,J) _'CBETA • (DWTDM(I,J) +2.*OMEGA_SAL)
GO TO 72
7_ ATVEL(J) = CAMP(I,J|_CURV(I,J)
DTVEL(J) = DWMDM(I,J)_S_MP(I,J)
C
C- -COR RECT FLOW ANGLES AT LERDING AND TRAILING EDGES, ANALOGOUS TO INDEV
C
72 IF (INCR.LT.O) GO TO 75
IF (I.EQ. ILE(J)) CALL LINDV(J,LINC,ICOUNT)
IF (LINC.NE.I) GO TO 80
IMAX = I
IREVRS = !
ICOUNT = 0
GO TO 80
75 IF (I.EQ.ITE(J)) CALL TINDV(ITEMP,J,ICOUNT)
1'12
ITEMIN = MIN_ (ITEMIN,ITEMP)
8G CONTINTIE
IF (LINC.EQ.I) INCR=-I
C
C--CALCULATE C COEFFICIENT FOR THE V_LOCITY GRADIENT EQUATION AND OTEIFR
C--CONSTANTS FOl_ CHECKING CONTINUITY -- BEGIN OUTER ITERATION PROCED[TRE
C
go DO 120 J=I,MHTPI
O_R2 = OMEGA*ROM(I,J|**2
TWLMR(J) = 2.*OMEGA*LAMBDA (J)-OMEG_*OMR2
CPTIP (J) = 2. *CP*TIPT (J)
IF(I.GE.ILE(J)) GO TO 100
WHIRL = LAMPDA (J)
C,O TO 11_
I0¢ IF(I.LE. ITE(J)) GO TO 120
WHIRL = LAMBDO(J)
11n CTV_.L(J) = -(WHIRL-OMR2)/POM(I,J)**2*(CURV(T,J)*(WHIPL-OMP2) *
ICAMP (I,J} + (WHIRL÷OM[_2)/ROM(I,J) *CPH]:(I,J))
12C PC_RB(J) = CAMP(I,J)*ROM (I,J)*BTH(I,J)
C
C--CALCULATE COEFFICIENTS E AND F FOR THE VELOCITY GRADIENT EQUATION
C
TPP = TIPT(1)-TWLMZ¢ (I)/2./CP
IF (_'PP.LT.$.) GO TO 360
P_FL = PHOIP(1) _AI_TIPT(1)', (TPP/TiPT(1)) **(GAM*E_tPON)
DO 130 J=2,MHTP1
DTIP = TIPI(J)-TIPT(J-I)
DL_M = LAMBDA (J)-LAMBDA (J-l)
TPPN = TIPT(J) -TWLMP (J)/2./CP
IF (TPPN.LT.0.) GO TO 300
Pi_ELN = _HOIP(J) *AI_*TIPT(J)*(TPPN/TTPT(J))** (GAM*EXPON)
DTPP = TPPN-TPP
DP_EL = P_ELN-P_EL
ETVEL(J-I) = CP*DTIP-OMEGA*DLAM-CP*DTPP+AR/(PRELN+PREL)*(TPPN÷TPP)
*DPREL
FTVEL(J-I) = DTPP/(TPPN+TPP)-AR/CP*DP[_FL/(PPELN+PT?EL)
TPP = TPPN
130 PREL = PBELN
C
C--OBTAIN NUMERICAL SOLUTION TO THE VELOCITY GRADIENT EQUATION
C--FOR AN ESTIMATED VAIUE OF W AT THE HUB
C
REPEAT = .FALSE.
C
C--RESTART OF INNER ITERATION PROCFDURE
lqO IND = I
C
C--CONTINUATION OF INNER ITERATION PROCEDURE
C--BE_IN VELOCITY GRADIENT SOLUTION AT !IUB
150 W(l,1) = WHUB
NCOUNT = NCOUNT+I
C
C--CALCULATE RVA AT THF HUB
WSQ = WHUB**2
TTIP = I.-(WSQ+TWLMR (I) |/CPT[P(1)
IF (TTIP.LT.O.) GO TO 220
RHO(I,I) = RHOIP[I)*TTIP**EXPON
IF (I.GE.ILE(1).AND.I.LE.ITE(1)) GO TO 160
1'73
C--PVA OUTSIDE OF THE ELADE
WF{IRL = LAMBDA (I)
IF (I.GT. ITE(1)) WHIRL = LAMBDO(1)
SBETA = (WHIRL/ROM{I,1)-CM_'GA*ROM(I,1))/WHUB
IF(ABS(SBETA).GT.I.) GO TO 219.
BETA (I,I) = ARSIN(SBETA)
CBETA = COS(BETA (I,I))
BVA = RHO(I,I)*WHUB*CBETA*RCARB(1)
GO TO 170
C--RVA INSIDE OF THe. BLADE
16C WLSRF = WHUB+DFDM(I,I)/2.
_S0 = WLSRF*I2
TTIP = I.- (WSQ÷TWLMR (1))/CPTIP(1)
IF (TTIP.LT.0.) TTIP=O.
RHOL = RHOIP(1)*TTIP**EXPON
WTSRF = WHUB-DFDM (I, I)/2.
WSQ = WTSRF**2
TTIP = I.- (WSQ+TWLMR (!))/CPTIP(1)
IF (TTIP.LT.0.) TTIP=O.
RHOT = RHOIP(_)*TTIP**EXPON
RHOWAV = (RHOL*WL_PF_.*RHO (I,I)*WHUB+RHOT*WTSRF) /6.
CBETA = COS(BETA(I,I))
I_VA = RHOWAV*CBETA*RCARB (I)
C
C--CONTINUE VELOCITY GRADIENT SOLUTION UP VERTICAL MESH LINE FROM HUB
C--@O SHROUD
C
170 DO 200 J=I,MHT
DFLTA = TOM (I,J+I)-TOM (I,J)
WAS = W(I,J)+(ATVEL(J)*W(I,J)+BTVEL(J) +CTVEL (J) /W (I ,J) +CBETA*
IDTVRL (J)) *DELTA+ETVEL (J)/W (I, J) +FTVEL (J) *W (I, J) .
C
C--CALCULATE RVAS AT POSITION J+1 ON VEnTICAL _ESH LINE
IF (I.GE. IL_(J÷I).AND. I.LE. ITE(J+I)) GO TO 180
C--RVAS OUTSIDE OF THE BLADE
WHIRL = LA_IBDA(J+I)
IF (I.GT.IIE(J÷I}) WHIRL = LAMBDO(J+I)
WTHETA = (WHIRL/ROM(T,J+I)-OMEGA*ROM(I,J_I))
SBETA = W_HETA/WAS
IF(ABS(SBETA) .GT.I.) GO TO 21 _
BETA(I,J+I) = ARSIN(SBETA)
18C CBETA = COS(BETA(I,J÷i))
WASS = W (I,J) + (ATVEL(J+I)*WAS+BTVEL (J+1) +CTVEL(J÷I)/WAS÷CBETA*
1DTVEL(J+I))*DELTA+ETVEL (J)/WAS+FTVEL (J)*WAS
W(I,J÷I) = (WAS+WASS)/2.
WSQ = w(I,J+1)**2
TTIP = I.-(WSQ÷TWLMR (J+I))/CPTIP (J÷1)
IF(TTIP.LT.0.) GC TO 220
RHO(I,J+I) = RROIP(J+_) _TTrPW_*E_PON
IF(I.GE.ILE(J*I}.AND.I.LE. ITE(J÷I)) GO TO 190
SBETA = WTHETA/W (I,J+1)
IF(ABS(SBETA).GT.I.) GO TO 210
BETA(I,J÷I) = ARSIN(SBETA)
CBETA = COS(BETA(I,J+I))
RVAS = RHO(I,J+I)*W(I,J+I)*CFETA_RCARP(J+I)
GO TO 195
C--RVAS INSIDE OF THE BLADE
190 WLS_F = W(I,J÷I) +DFDM(I,J+I)/2.
WSQ = WLSRF**2
TTIP = I.-(WSQ+TWL_R (J+I))/CPTIP (J+1)
174
IF (TTIP.LT.0.) TTIP=0.
RHOL = RHOIP(J+I)*TTIP*_EXPON
WTSRF = W(I,J+I)-DFDM(I,J+I)/2.
WSQ = WTSRF**2
TTIP = I.-(WSQ+TWLMP(J+I))/CPTIP(J+_)
IF (TTIP.LT.0.) _TIP=0.
RHOT = RHOIP(J÷I)_TTTP*_'EXPON
RHOWAV = (RHOL_WLSRF+_.*RHO(I,J+I)*W(I,J_I) +RHOT_'WTSRF)/6.
CBETA = COS (BETA (I,J+1))
RVAS = RHOWAV_CBETA_RCARP(J+I)
C
C--INCREMENT THE MASSFiO_
195 UNEW (J+1) = (_VA+RVAS)*DELTA/2.+UNEW(J)
2_O BVA = RVAS
C
C--STORE MAX AND MIN VALUES FOH WHr;B AND INTEGRATED MASSFLOW
C
MAXFLO = AMAXI (HNFW(MHTP1) ,MAXFLO)
MINFLO = AMINI (UNEW(_HTP1),MINFLO)
WMAX : AMAXI (WHUB,WMAX)
WMIN = AMINI(WHUB,WMIN) .....
C
C--CHECK CONTINUITY AND ESTIMATE NEW VALUE FOR W AT THE HUB
C
IF (IND. GE.6.AND.AB_ (MSFL-[!NEW(MHTPI)) .LE.MSFL_TOLER) GOTO 250
CALL CONTIN(WHUB,UNEW(MHTPI) ,IND,JZ,MSFL,DELMAX)
IF(IND.LT.10) GO TO 150
C
C--END OF INNER ITERATION PROCEDURE
C
C--IND=IC INDICATES CHOKED FLOW
IF (IND. EQ. 10) GO TO 250
C--IND=11 INDICAT _S NO SOLUTi0N FO[IND IN 100 ITERATIONS
GO TO 230
C
C--CHANGE WHUB FOR RESTART. VELOCITIES TOO SMALL. SBETA.GT;1.0 ' '
C
210 WHUB = WHUB÷.45_'DELMAX
NADD = NADD÷I
IF (NCOUNT. LT. I000) GO TO 140
GO TO 230
C
C--CHANGE NHUB FOR RESTART. VELOCITIES Too BIG. TEMPERATURE NEGATIVE
C
220 WHUB = WHUB-.45"DELMAX
NSUB = NSUB÷I
IF(NCOUNT.LT.1000) GO TO lq, O
C
C--NO SOLUTION CAN BE FOUND. PRINT MESH O_TP_T ONLY, AND
C--OMIT STREAMLINE AND STATION LINE OUTPU_
C
230 IMESH = 1
ISLINE = 0
ISTATL = 0
DO 240 J=I,MHTPI
2_0 UOM (I,J) = UOM (I,J)/MSFL
GO TO 275
C
C--SOLUTION OBTAINED -- CHECK ACCURACy OF UOM
1'75
C
250 NREP = NREP÷I
DO 260 J=2,MHTPI
UTEMP = UNEW(J)/MSFL
IF (ABS(UTEMP-UOM(I,J)).GT. RTOLER) REPEAT = .TRUE.
260 HOM(I,J) = UTEMP
C
C--UPDATE PLOSS, TIPT, RHOIP, LAMBDA, AND LAMBDO
C
CALL LOSSTV(I)
DO 265 J=2,MHTPI
UTEMP = UOM (I,J)
TIPT(J) = TIPF(UTEMP)
RHOIP(J) = RHOIPF(UTEMP)*(I.-PLOSS (I,J))
LAMBDA(J) = LAMDAF(UTEMP,I,J)
265 IF (MBI.NE.O) LAMBDO(J) = RVTHTA(UTEMP, I,J)
C
C--SET _HUB, AND CHECK IF ANOTHER OUTER ITERATION IS NECESSARY
C
WHUB = W (I,I)
IF(REPEAT. AND. NCOUNT.LT.1900) GO TO 90
C
C--END OF OUTER ITERATION PPOC_DURE
C
IF(IND. NE.10) GO TO 270
CHFL = UOM (I,MHTP1) _MSFL_FLOAT (NBL)
CHLIM = AMINI (CHLIM,CHFL)
WRITE (NWRIT,1000) I,CHFL
270 IF (.NOT.REPEAT) GO TO 280
C
C--PRINT ERROR MESSAGES IF A SATISFACTORY SOLUTION CANNOT BE OBTAINED
C
275 WRITE (NWRIT,1010) I
IF (IND.EQ.11) WRITE(NWRIT, 1050)
IF (NCOUNT.GE.1000) WRITE(NWRIT,1060)
WRITE (NWRIT, I070) MAXFLO, MINFLO, WMA X, WMIN
NRES = NADD+NSUB÷NREP
IF (NRES.GT.0) WRITE(NWRIT, 1080) NRES,NADD, NSUB,NREP
WRITE (NWRIT, I C90)
C
C--CHECK IF ALL VERTICAL MESH LINES HAVE BEEN DONE
C
280 IF (INCR.GT.9) GO TO 60
IF (IREVRS.EQ. 1) I=MM+I
IREVRS = 0
IF (I.GT.ITEMIN) GO TO 60
IF (I.GT.IMAX+I) GO TO 60
IF (ICOUNT.LT.MHTP1) GO TO 60
C--END OF LOOP ON VERTICAL MESH LINES
290 CONTINUE
C
C--FINISHED VELOCITY GRADIENT SOLUTION ON EACH VERTICAL MESH LINE
C--CHECK CHOKE LIMIT
C
OMSFL = MSFL_FLOAT(NBL)
CHFRMS = CHLIM/OMSFL
IF (CHLIM.GT. (0.9999_OMSFL)) RETURN
WRITE (NWRIT, I030) CHFRMS,OMSFL, CHLIM
RETURN
300 WRITE (NWRIT, I020)
176
STOP
C
C--FORMAT STATEMENTS
C
1000 FORMAT (IHL,10X,68HMSFL EXCEEDS CHOKING MASS FLOW FOR VERTICAL ORT
IHOGONAL MESH LINE I =,I3/12X,19HCHOKING MASS FLOW =,C_15.6)
1010 FORMAT (IHL,10X,85HA VELOCITY GRADIENT SOLUTION CANNOT BE OBTAINED
I FOR VERTICAL ORTHOGONAL MESH LINE I =,I3/12X,56HANY SUBSEQUENT OU
2TPUT FOR THAT MESH LINE MAY BE IN ERROR)
1020 FORMAT (IHL,10X,60HTHE UPSTREAM INPUT WHIRL OR TANGENTIAL VELOCITY
I IS TOO LARGE)
1030 FORMAT (IHL,10X,19HCHOKING MASSFLOW I_,F9.5,22H OF THE INPUT MAS_F
ILOW/12X,16HINPUT MASSFLOW =,G13. 5/12X,26HMINIMUM CHOFING MAgSFIOW
2=,G13.5)
1040 FORMAT (IH1//52X,25(1H*) /52X,25H* FULL MASSFLOW */42X,
I"5 (IH*)/42X, IH*, 12X, 19HTRANSONIC SOLUTION, 12X, IH*/;42X, _ 5H* BY VE
2LOCYTY GRADIENT APPROXIMATE METHOD */_2X,_5(IH*)/////)
1050 FORMAT (10X,51HCONTIN COULD NOT FIND A SOLUTION IN 100 ITERATIONS.
I)
1060 FORMAT (10X,81HITERATION PROCEDURE F{AD TO BE RESTARTED TO AVOID NE
1GATIVE TEMPERATURE OR VELOCITY/12X,87HMAGNITUDE LESS THAN TANGENTI
2AL VELOCITY, OR AFTER ADJUSTMENT OF STAGNATION TEMPERATURE,/12X,29
3HSTAGNATION DENSITY, OR WHIRL./10X,8_HRESTART OF ITEPATION PROCEDU
4RE (LOOP TO STATEMENT 9C) WAS ABORTED AFTER I00_ OR MORE/12X,_1HTO
5TAL ITERATIONS (LOOP TO STATEMENT 150).)
1070 FORMAT (IHL,10X,63HTHE MAXIMUM MASSFLOW FOR WHICH A SOLUTION COULD
I BE OBTAINED WAS,GI6.';/10X,63HTHE MINIMUM MASSFLOW FOR WH]'CH _ _OL
2UTION COULD BE OBTAINED WAS,GI6.7/10X,76HTHF MAXIMUM VALUE OF W AT
3 THE HUB FOR WHICH A SOLUTION COULD BF OBTAINED WAS,G16.7/10X,76HT
_HE MINIMUM VALUE OF W AT THE HUB FOR WHICH A SOLUTION COULD BE OBT
5AINED WAS,G16.7)
1080 FORMAT (IHL,10X,37HTHE ITERATION PROCEDURE WAS RF_STARTED, I5,6H TIM
1ES/12X,18HWHUB WAS INCREASED,I_,6H TIMES/12X,18HWHUB WAS DECREASED
2,I_,6H TIMES/12X,53HBOUNDARY VALUES (TIPBDY, RHOIP, LAMBDA) WERE A
3DJUSTED, I_, 6H TIMES)
1090 FORMAT (/IOX,120 (IH*))
END
SUBROUTINE LINDV(JARG,LINC,ICOUNT)
C
C--LINDV AND TINDV CORRECT THE BETA FLOW ANGLES INTO THE
C--LEADING AND TRAILING EDGES RESPECTIVELY
C
COMMON NREAD,NWRIT,ITER,IEND,NWRT1,NWRT2,NWRT3,NWRT_,NWRT5,NWRT6
COMMON/INPUTT/GAM, AR,MSFL, OMEGA,REDFAC,VELTOL,FNEW,DNEW,MBI,MBO,
MM, MHT, NBL, NHUB, NTIP, NIN, NOUT, NBLPL, NPPP, NOSTAT, NSL, NLOSS,
LSFR, LTPL, LAMVT, LROT, LBLAD, LETEAN, ANGROT, IMESH,ISLINE,
ISTATL,I PLOT, ISUPER,ITSON, IDEBUG, ZCMIN, ZOMBI, ZOMBO, ZOMOUT,
ROMIN, ROMBI, ROMBO, ROMOUT, ZHIN,ZT IN, ZHOUT, ZTOUT, RHIN, RTI N, RHOUT,
RTOUT,TITLEI(20) ,ZHUB (50) ,RHUB(50),ZTIP(50) ,RTIP(50) ,SFIN (_0),
RADIN (50) ,TIP (50) ,PRIP(50),LAMIN (50) ,VTHIN(50) ,SFOUT(50) ,
RADOUT(50) ,PROP(50),LOSOUT(50),LAMOUT(50.) ,VTHOUT(50) ,
BETALE(50) ,BETATE(50) ,ZHST(50) ,ZTST(50),EHST(50) ,RTST(50) ,
FLFR(50) ,PERCRD(50),PERLOS(50) ,ZBL(50,50) ,RBL(5O,50) ,
THBL(50,50) ,TNBL(50,50) ,TTBL(50,50),THIBL(50,5_),TH2BL(50,50)
177
COMMON/CALCCN/MMM 1 , MHTP I , CP, EXPON, TC'ROG, PITCH, RLEH, PLET, RT EH, RTET,
I ZLE (50) , PLE (50) , ZTE (50) , RTF(50) , ZLFOM (I0 I) ,RLF_OM (InI),
2 SLEOM(1OI),THLEOM(1OI),ZTEOM(101),RTEOM(101),STEOM(101) ,
3 THTEOM(1¢1),ILE(101),ITE(101),ZOM(1n0,101),ROM(ICe,101) ,
SOM (100, lq I) ,TOM (1C0 ,I01) ,RTH (10n, lC I) ,DTHDS (I00, I0 I),
5 DTHDT (106, I0 I), PLOSS (I0_, I01) ,CPHI (I00, le 1), SPHI (I00, I0 1)
COMMON/VARCOM/A(q,10G,ICI) ,UOM(I.00, 101) ,K(100,101) ,RHO(100,1_I),
I WSUBS (I0_, 1C I), WSUBT (100, IC 1) , WSUBZ (I00, I0 I), WSUBR (I00, I0 I),
2 WSUBM (100,1CI), WTH (I_.0,101), VTH (1_0, I01) , W(10n, IC!) ,
3 ALPHA (100, I0 !) ,BETA (10_, 101), WWCR (100, IC 1) ,CURV (100, I01),
WLSURF(100,101),WTSUEF(100,101),CAMP(100,1nl) ,S_MP(10_,I01),
5 RHOAV (100, I0 I) ,DELPHO (I(_0, !e !), FT (!00, I0 I) ,DFDM (109,101),
6 XIOM (I00, IC 1) ,ZETOM (I00, IC 1), DLDU (100, 10 1)
COMMON/ROTATN/ZHROT(50) ,RHROT(5C) ,ZT_OT(50) ,RT[_OT(50) ,
I ZLEOMP (101) , RLEOMR (I0 1), ZTEOMR (I01), RTEOMR (I0 I),
2 ZBL_OT (50, 50) , RBLPOT (50,5C), ZOMI_OT (I00,10 I), ROMROT ( IC_, I0 1)
COMMON/INDCOM/NBIPC,NPPC,ZPC(51,51) ,_PC(51,51),TTPC(51,51) ,
I THPC (51,51) ,DTHDZ (51,<1) ,DTHDR(51,51),BTHLE(101) ,BTHTE(101),
2 BTBFLE (lCl), BTBFTE (IC I)
DIMENSION BLINC(101) ,UBINC(I_I) ,BTBLLE(101) ,BLDEV(101) ,UBDEV (I_I),
I BTBLTE (101)
REAL LAMDAF
C
C--LINDV CORRECTS THE BETA FLOW ANGLES INTO THE LEADING EDGE
C
II = 1
JJ = 1
J = JARG
ICOUNT = ICOqNT+I
DEGRAD = 180./3.1415927
1';8
l"J RHOBF = RHOBFN
TANBBF = CONSTI*RHOBF
WSQBF = CONST2/RBOBF*_2 " (I. +TANBBF_*2)
TBFTIP = 1.- (WSQBF+TWLMR)/CPTIP
IF(TBFTIP.LT.O.) GO TO 16
_HOBFN = RHOIP_TBFTIP*_EXPON
IF (ABS(RHOBFN-RHOBF)/RHOBFN.GT..CO01) GO TO 10
GO TO 18
I_ RHOBF = RHOBFN
TBFTIP = (RHOBF/RHOIP)** (I./EXPON)
WSQBF = (I.-TBFTIP) _CPTI_-TWL_R
RHSQBF = CON_T2/ (WSQBF-CONST2*CONSTI*_2)
IF(_HSQBF.LT.0.) GO TO 16
RHOBFN = SQRT (RHSQRF)
IF(ABS(RHOBFN-RHOBF)/RHOBFN.C.T..0001) GO TO I_
WRITE (NW[_IT, I060} J
GO TO 18
16 _HOBFN = PHOFS
W_ITE (NWRIT, I070) J
18 TANBBF = CONSTI,RHOBFN
BETABF = ATAN (TANBBF)
C
C--CALCUI_ATE DISTANCE FOR BETA CORRECTION
BLDCRD = (RLEOM(J) +RTEOM(J) )/2.'_ (THTEOM(J) -THLEOM (J))
BLDC_D = SQRT (BLDCRD_'*2÷ (STFOH(J)-SLEOM(J) }*.2)
SLIDLE = BLDCRD/PITCH/RLEOM(J)
DISTLE = AMINI (.5,AMAX1 (I./6., (11.-_.*SLIDLE)/18.)) _(STEOM (J)-
ISLEOM (J) }
C
C--CORRECT BETA FOR INCIDENCE N_AR THE LEADING EDGE,
C--USING LINEAR CORRECTION FO_ ANGL_
I = ILE (J)
2_ SDIST = SLEOM (J) +DISTLE-SOM (I,J)
IF (SDIST.LE.0.) GO TO 3_
BETA (I,J) = BETA(I,J) ÷(BETABF-BTBFLE(J)) _SDIST/DISTLE
I = I+1
GO TO 20
C
C--CALCULATE INCIDENCE ANGLES
30 BLINC(J) = BETABF*DEGRAD-BTBLLE(J)
UBINC(J) = BETAFS_DEG_AD-BTBLLE(J)
IF (ICOUNT.EQ.MHTPI) LINC=I
RETURN
C
C--TINDV CORRECTS THE BETA FLOW ANGLES INTO THE TPAILING EDGE
C
ENTRY TINDV (IARG,JARG,ICCUNT)
J = JARG
ICOUNT = ICONNT÷I
C
C--CALCULATE BLADE MEAN CAMBER ANGLE AT TRAILING EDGE
I = ITE(J) +I
ALPHTE = ALPHA (l,J)+ (STEOM(J)-SOM (I,J)) *(ALPHA(I,J)-ALPHA(I-1,J))/
I (SOM (I,J)-SCM(I-I,J))
CALL LININT (ZPC,RPC,DTHDZ,NPPC,NBLPC,51,51,ZTEOM_ (J) ,RTEOMN{J) ,
1DTDZTE, II, JJ)
CALL LININT(ZPC,RPC, DTHDR,NPPC, NBLPC,51,51,ZTEOMR (J) ,RTEOMR(J) ,
IDTDRTE, II,JJ)
TANBBL = RTEOM (J)_(Dg'DRTE_SIN(ALPHTE) +DTDZTE*COS(ALPHTE))
179
RTBLTE(J) = ATAN (TANBBL) _DEGRAD
C
C--CALCULATE BLADE FLOW ANGLE AT TRAILING EDGE, CORPECTED FOR BLOCKAGE
EXFRAC = (SOM(I,J)-STEOM(J))/{SOM(T+I,J)-SOM (I,J))
BETAFS = BETA (I,J) +EXFRAC_(BETA (I,J)-BETA(I+I,J))
RHOFS = RHO (I,J) ÷EXFRAC • (WHO (I,J)-R._O(I+I,J))
WFS = W(I,J)+EXFRAC_(W(I,J)-W(I+I,J))
UTE = UOM(I,J) +EXFRAC* (UCM(I,J)-UOM(I+I,J))
PLOSTE = PLOSS(I,J) +EXFRAC_ (PLOSS(I,J)-PLOSS (I+1,J))
TWLMR = 2._OMEGA_LAMDAF(UTE,ITE(J) ,J)- (OMEGA*RTEOM (J)) _'2
TIPRIM = TIPF (UTE)
CPTIP = 2._CP_TIPRIM
RROIP = RHOIPF(UTE)_ (I.-PLOSTE)
CONSTI = TAN(BETAFS)/RHOFS_BTHTE(J) /PITCH
CONST2 = (RHOFS_PITCH_WFS/BTHTE(J)) _2/(I.+(TAN(BETAFS))_2)
RHOBFN = RHOFS
TPP = TIPRIM-TWLMR/2./CP
WTHETA = WFS_SIN(BETAFS)
WMSON = SQRT(2.$GAM_ARSTPP/(GAM+I.) -(GAM-I.) /(GAM+I.) _WTHET_*2)
IF(WFS_COS (BETAFS) .GT. WMSON) GO TO _
40 RHOBF = RHOBFN
TANBBF = CONSTI_RHOBF
WSQBF = CONST2/RHOBF**2_(I.+TANBBF_2)
TBFTIP = I.-(WSQBF+TWLMR)/CPTIP
IF(TBFTIP.LT.0.) GO TO 46
RHOBFN = RHOIP_TBFTIP_EXPON
IF (ABS(RHOBFN-RHOBF)/RHOBFN.GT..O0_) GO TO 40
GO TO 48
44 RHOBF = RHOBFN
TBFTIP = (RHOBF/RHOIP) _(I./EXPON)
WSQBF = (1.-TBFTIP)_CPTIP-TWLMR
RHSQBF = CONST2/(WSQBF-CONST2_CONSTI**2)
IF(RHSQBF.LT.0.) GO TO 46
RHOBFN = SQRT(RHSQBF)
IF(ABS(RHOBFN-RHOBF)/RHOBFN.GT..00Ol) GO TO 4_
WRITE (NWRIT, I080) J
GO TO 48
46 RHOBFN = RROFS
=WRITE(NWRIT,1090) J
48 TANBBF = CONSTI_RHOBFN
BETABF = ATAN(TANBBF)
C
C--CALCULATE DISTANCE FOR BETA CORRECTION
BLDCRD = (RLEOM(J) +RTEOM(J))/2._(THTEOM(J)-THLEOM(J))
BLDCRD = SQRT(BLDCRD_2v(STEOM(J)-SLEOM(J))_2)
SLIDTE = BLDCRD/PITCH/RTEOM (J)
DISTTE = AMINI(.5,AMAXI(I./6., (1_.-_._SLIDTE)/18.))*(STEOM (J)-
1SLEOM (J))
C
C--CORRECT BETA FOR DEVIATION NEAR THe, TRAILING EDGE,
C--USING LINEAR CORRECTION FOR ANGLE
I = ITE(J)
50 SDIST _ SOM(I,J)-STEOM(J}+DISTTE
IF (SDIST.LE.0.) GO TO 60
BETA(I,J) = BETA(I,J}v(BETABF-BTBFTE(J))*SDIST/DISTTE
I = I-I
GO TO 50
C
C--CALCULATE DEVIATION ANGLES
180
60 BLUEr(J) = BETABF_DEGRAD-BTBLTE(J)
UBDEV(J) = BETAFS_DEGRAD-BTBLTE(J)
IARG = I+1
RETURN
C
C--PINDV PRINTS THE INCIDENCE AND DEVIATION ANGLES
C
ENTRY PINDV
IF ((LAMDAF(.5,1LE(1),I)-RVTHTA(.5,ILE(1),I)).GT.O.) GO TO 80
DO 70 J=I,MHTPI
BLINC(J) = -BLINC(J)
UBINC(J) =-UBINC(J)
BLDEV(J) = -BiDEr(J)
70 UBDEV(J) = -UBDEV(J)
80 WRITE (NWRT6,1000)
IF (ISUPER.LE.I) WRITE(NWRT6,1010)
IF (ISUPER.EQ.2) WRITE(NWRT6,102O)
WRITE (NWRT6,1030)
WRITE (NWRT6,10_0) (J, BLINC (J), _BINC (J), BTBLLE (J), BLDEV (J),
1UBDEV (J) ,BTBLTE (J) ,J=1, MHTPI)
WRITE (NWRT6,1050)
RETURN
C
C--FORMAT STATEMENTS
C
1000 FORMAT (IHI////_4X,40(IH_)/_X,_0H_'_'_ INCIDENCE AND DEVIATION ANG
ILES _*_/ 49X,30 (IH*)//)
1010 FORMAT (/52X,25(IH_)/52X,25H _' FULL MASSFLOW */42X,_5(1H*)/
1_2X,IH_,I2X,19HTRANSONIC SOLUTION,12X,1H*/_2X,_5H _ BY VELOCITY G
2PADIENT APPROXIMATE METHOD _'/35X,59(IHe)/35X,59H_ ALL VELOCITIES
3 SMALLER THAN CHOKING MASSFLOW SOLUTION */35X,59(!H*))
1020 FORMAT (/52X,25(1H*)/52X,25H* FULL MASSFLOW */_2X,45(IH*)/
142X,IH_,I2X,19HTRANSONIC SOLUTION,12X,1H*/42X,45H _ BY VELOCTTY G
2RADIENT APPROXIMATE METHOD */35X,59(1H*)/35X,59H_ ALL VELOCITIF.S
3 LARGER THAN CHOKING MASSFLOW SOLUTION "/35X,59(IH_))
1030 FORMAT (//2_X,10H_ MESH _,RX,9H[NCIDENCE, TX,11HBLADE ANGLE,2H _,
18X,9HDEVIATION,7X,IIHBLADE ANGLE,2H */24X,16H_ LINE _,3X,
27HBLOCKED,3X,9HUNBLOCKED,_X,7HAT L.E.,3X,IH _,3X,7HBLOCKED,3X,
39HUNBLOCKED,_X,7HAT T.E.,3X,IH _)
1040 FORMAT ((24X, 1H*,2X,13,3X, 2(1H*,3(Fg.2,2X),3X),1H*))
1050 FORMAT (1HI)
1060 FORMAT (45HLSUPERSONIC COI_RECTION - LEADING EDGE FOR J =,13)
1070 FORMAT (45HLNO DENSITY CORRECTION - LEADING EDGE FOR J =,I3)
1080 FORMAT (46HLSUPERSONIC CORRECTION - TRAILING EDGF FOR J =,I])
1090 FORMAT (_6HLNO DENSITY CORRECTION - TRAILING EDGE FOR J =,I3)
END
FUNCTION LAMDAF(SF,I,J)
C
C--LAMDAF CALCULATES PREWHIRL, LAMBDA, AS A FUNCTION OF STREAM
C--FUNCTION UPSTREAM OF THE BLADE
C
COMMON NREAD,NWRIT,ITER,IEND,NWRTI,NWRT2,NWRT3,NWRT_,NWRT5,NWRT6
COMMON/INPUTT/GAM,AR,MSFI,OMEGA,REDFAC, VELTOL,FNEW,DNEW,MBI,MBO,
I MM,MHT,NBL,NHUB,NTIP,NIN,NODT,NBLPL, NPPP, NOSTAT, NSL,NLOSS,
2 LSFR,LTPL,LAMVT,LROT,LBLAD,LETEAN,ANGROT, IMESH,ISLINE,
- 181
ISTATL, I PLOT, IS UPER, ITSON, IDEBUG, ZOMIN, ZOMBI, ZOM BO, ZOMOUT,
ROMIN, ROMBI, ROMBO, ROMOUT, ZHIN , ZT rN, ZHOUT, ZTOUT, mHI N, RTI N, RHOUT,
RTOUT,TITLEI (2n) ,ZHUB (50) ,PHUB(53) ,ZTIP(50) ,RTIP(59) ,SPIN (5_),
RADIN (50) ,TIP (50) ,PRIP(5('),LAMTN (50) ,VTHIN(50) ,SFOUT(50),
RADOUT(50) ,PRCP(5?) ,LOSOUT(5 a) ,LAMOU_(5O),VTHOUT(59) ,
BETALE(50) ,BETATE(50) ,ZHST (50) ,ZTST(50), _HST(50) ,RTST(50) ,
FLFR (50) ,PERCRD (50) ,PERLOS (5_) ,ZBL(50,50) ,RBL (50,5C),
THBL(50,50) ,TNBL(5C,SO) ,TTRL (50 ,50) ,THIBL(50,sn),TH2BL(50,50)
COMMON/CALCON/MMM I , MHT P I ,CP, F XPON,TGROG, PITCH, RLEH, RLET, RTEH, RTET,
I ZLE (50), RLE (50), ZTV (50), RTE (Sq) , ZLFOM (10 I) ,RLEOM (I0 1),
2 SLEOM(IC1) ,THLEOM(101),ZTEOM(I"}I),RTEOM(101),STEOM(I01) ,
3 THTEOM(1OI),ILE(101),ITE(ICI),ZOM(100,101),ROM(10C,101) ,
5OM (I00, I0 I), TOM (100, I_I), BTH (I00,10 I) ,DTHDS ( 10g, 10 I),
5 DTHDT (100, 101), PLOSS (10n, lr 1) ,CPHI (100, If"I) ,SPH[ (I_0,10 1)
COMMON/V_RCOM/_ (q, 10C, I01) ,UOM(InC, 101) ,K (100,101) ,RHO (I00,I01) ,
I WSUBS(100,101),WSUBT(100,1$1),WSUBZ(100,101),WSUBR(100, I01),
2 WSUBM (1C0, IC1) ,WTH (1_0,101), VTH (10P, 101) ,W (100, I01) ,
3 ALPHA (I00, 101), BETA (1C0, I_}1) , WWCN (I00,10 1) ,CURV (I00, I01),
WLSURF (I00, I0 I), WTSURF (!0_, I0 I), CAMP (100, 13 I), SAMP (100, I0 I),
5 [_HOAV (100, I01), DELRHO (I00, I01) ,FT (100, le I) ,DFDM (100, I01),
6 KIOM(100,1n1),ZETOM(1CO,1nl),DLDU(100,10 I)
COMMON/I_OTATN/ZHROT(5_) ,RHROT(50) ,ZTROT(50) ,RTROT(50) ,
I ZLEOMR (IC1) , RLEOMR (101) , ZTEOMR (191), RTEOMR (I0 I),
2 ZBLROT (50, 50) ,8BLROT (50,50), ZOMROT (I00, le 1), ROMROT ( I00, 10 I)
DIMENSION SLOPE (50), EM (_CJ ,AAA(50) ,BBB(50) ,RILOM (101) ,UILOM(I01)
REAL L_MD_F,LAMIN
KK = 2
IF(_BS(SF-SFIN(I}) .GT.TOLER) GO TO 10
LAMDAF = LAMIN(!)
IF (I.LT.ILE(J)) DLDU(I,J)=SLOPE(1)
RETURN
I0 IF(SF-SFIN (I)) 20,20,30
2O LAMDAF = LAMIN (I) +(SF-SFIN(1) |_SLOPE(1)
IF (I.LT.ILE(J)) DLDU (I , J) =SLOPE (1)
]RETURN
3C IF(ABS(SF-SFIN(KK)).GT.TOLER) GO TO a0
LAMDAF = LA_I_(KK)
IF (I.LT.ILE(J)) DLDU (I ,J) =SLOPE (KK)
RETURN
40 IF(SF-SFIN (Kg)) 70,70,50
50 KK=KK+I
IF (KK-NIN) 30,30,60
65 LAMDAF = LAMIN(NIN) + (SF-SFIN(NIN)) _SLOPE (NIN)
IF (I.LT.ILE(J)) DLDU(I,J)=SLOPE(NIN)
RETURN
70 SK = SFIN(KK)-SFIN(KK-1)
LAMDAF = EM (KK-I)_ (SFIN(KK)-SF) _3/6./SR+EM(KK) _(SF-SFIN(KK-I)) _'3
I /6./SK+ (LAMIN (KK)/SK-EM (KR) $S K/6. ) • (SF-SFIN (RK-I)) + (LAMIN (KR-I)
2 /SK-EM(KK-I)_'SK/6.)_ (SFIN(KK)-SF)
IF (I.LT.ILE(J)) DLDU(I,J) = -EM(KK-1)',(SFIN(KK)-SF) $$2/2./SK+
I EM(KK)_(SFIN(KK-I)-SF)_2/2./SK+ (LAMIN(KK)°LAMIN(KK-1))/SK-
2 (EM(KK)-EM(KK-I))"SK/6.
_ETURN
ENTRY LAMNIT (NNN)
IF (ITER.EQ.0) GO TO 100
IF (LSFR.EQ.0.AND.LAMVT.EQ.0) GO TO 100
II = MBI
JJ = I
182
CAN = COS (ANGROT)
SAN = SIN(ANGROT)
ZHINI_O = ZHIN*CAN+RHIN*ZAN
RHI_PO = ,qHIN*CAN-ZHINeSAN
ZTIN_IO = ZTIN*CAN+NTIN_.qAN
RTINRO = RTI_*CAN-ZTIN*SAN
DO 80 EK=I,MHTPI
DIST = FLOAT(KK-I) /FLOAT(MHT)
RILOM (KK) = RHIN+DIST_ (RTTN-P_IN)
ZIPOT = ZHINRO÷DIST* (ZTINRO-ZHINRO)
RI[_OT = RHINRO+DIqT*(RTINPO-_HINRO)
80 CALL LINTNT (ZOMROT,_OMROT,'JOM,_M'MHTPI,IC0, I_I,ZIROT,RI_OT,
IUILOM (KK),II,JJ)
IF (LSF_.EQ.0) CALL SPLINT(UILOM,_ILCM, MHTPI,SFIN,NIN,PADIN,AAA,
1BBB)
IF (LSFR.EQ.1) CALL SPLINT(RTIOM,UILOM,MH?PI,_ADi_,NIN,_FTN,A_A,
183
1 ZLEOMR (I01) , RLEO._R (I0 I) , ZTEOMR (1% I), RTEOMR (I0 1),
2 ZBLPOT(50,50),RBLROT(50,Sn),ZO_ROT(10_,ICl),ROMROT(I$0,101)
DYMKNSION SLOPE(5_) ,EM(50) ,AAA(S() ,BBB(50),POLOM(191) ,UOLOM(I_I)
REAL LAMOUT
KK = 2
IF(ABS(SF-SFOUT(1)) .GT.TOLEP) GO TO IQ
_VTHTA = LAMOUT(1)
IF (r.GT.ITE(J)) DLDU(I,J)=SLOPE(1)
PETURN
10 IF(SF-SFOUT (1)) 2_,2_,30
20 RVTHTA = LAMOUT (I) + (SF-SFOUT(1)) _LOPE(1)
IF (I.GT.[TE(J)) DLDrT(I,J)=SLOP_(1)
RETURN
3O IF(ABS(SF-SFOUT(KK)) .GT.TOLEP) GO TO _0
RVTHTA = LAMOUT(KK)
IF (I.GT.ITE(J)) DLDU(I,J)=SLOPE(KK)
RETURN
_C IF (SF-SFOUr (KK)) 70,79,5_
50 KK=KK+I
IF (KK-NOUT) 3_,3C,6C
6C PVTHTA = LAMOHT(NO_IT) + (SF-SFOUT(NOUT)) _,_LOPF(NOUT)
IF (I.GT. ITE(J)) DLDU (I,J) =SLOPF (NOUT)
RETURN
7O SK = SFOUT(KK)'SFOUT(KK-1)
RVTHTA = EM (KK-I)_' (SFOUT (KK)-SF) '_'3/6./SK+EM (KK) '_(SF-SFOUT (_[_[-I))
1 _3/6./SK+ (LAMOUT (KK)/SK-EM (_K) _SK/6.)* (SF-SFO[IT (KK-I)) +
2 (LAMOUT(KK-I)/SK-EM(KK-1)eSK/6.) _(SFO[JT(KK)-SF)
IF (I.GT.ITE(J)) DLDU(I,J)= -EM(KK-I)_(SFOUT(KK) -SF)_2/2./SF(+
1 EM (KK) * (SFOUT (KK- 1) - SF) *'2/2./SK+ (LAMOUT (KI<) -LAMOUT (KK- I) )
2 /SK-(EM(KK)-EM(KK-I)) _'SK/6.
RETURN
ENTRY RVTNIT(NNN)
IF(ITER.EQ.£) GO TO 1C0
IF (LSF[_.EQ.0.AND.LAMVT.EQ.C) GO TO I_0
II = MBO
JJ = I
CAN = COS(ANG_OT)
SAN = SIN(ANGROT)
ZHOPO = ZHOUT_CAN+RHOUT_SAN
RHORO = RHOUT'_CAN-ZHOUT_SAN
ZTORO = ZTOHT_'CAN+RTOUT*SAN
RTORO = RTOHT_'CAN-ZTOUT*SAN
DO 80 KK=I,MHTP1
DIST = FLOAT(KK-I) /FLOAT (MHT)
ROLOM(KK) = RHOUT+DIST'_ (RTOUT-RHOUT)
ZOROT = ZHORO+DIST*(ZTORC-ZHORO)
ROROT = RHOPO÷DIST_ (RTORO-RHO_O)
8O CALL LININT(ZOMROT,ROMROT,UOM,MM,MHTPI, 10C,101,ZORO_,ROROT,
I UOLOM (KK) ,II, JJ)
IF (LSFR.EQ.0) CALL SPLINT(UOLOM,ROLOM,MHTPI,SFOUT,NO[IT,RADOOT,
1 AAA, BBB)
IF (LSFR.EQ.1) CALL _PLINT(ROLOM,UOLOM,MHTPI,RADOUT,NOUT,SFOI]T,
1 AAA,BBB)
IF (LSFR.EQ.I.OR.LAMVT.EQ._) GO TO 100
DO 9C KK=I,NOUT
90 LAMOUT(KK)= RADOUT(KK)_VTHOUT(KK)
IC0 CALL SPLINE(SFOUT,LAMO_IT,NOHT,SLOPR,EM)
TOLER = ABS (SFOUT (NOUT)-SFOUT (I))/FLOAT(NOUT)._I.E-6
R_TURN
END
184
FUI_CTION TIPF (SP)
C
C--TIPF CALCULATES UPS_RFA_I ABSOLUTE TOTAL TFMPERAT!IRE
C- -AS A FUNCTION OF STREAM F[INCTION
C
CO_MON/INPUT!"/GAM,AR,MSFL, OMEGA,REDFAC,VELTOL,FNEW,DN_.W,M_T,MBO,
I MM , MHT, N}_L, NH UB, NTIP, NIN, NOUT , NBLPL, NPPP, NOST AT, NSL, NLOSS ,
2 LS FP , LT PL, LA_VT, L.qOT, LBLAD, LET _ % N, _NGROT, IMESH,T St INE,
3 ISTAT! , I [:LOT, I.RUPFN, ITSON, IDESUG , ZOHTN, ZOMBI, ZOM BO, ZOMOUT,
PO_IN, ROMBI, [_OMBO, ROMOUT , ZHIN , ZT IN, ZHOUT, ZTOUT, RHTN, RTI N, PHOU',
5 RTOUT,rIILEI (2C),ZHUB(5C),[_HrI_(5_) ,ZTIP(50),RTIP (5¢),SFIN (sn),
6 [_ADIN (50) ,TTP (57) ,P[_IP(5C),LAMIN (5(') ,VTHIN(50) ,gFOUT(59) ,
7 [_ADOUT(50) ,P_OP(50) ,LOSOUT(5(_) ,LAMOUT(50) ,VTHOUI" (St),
8 BETAL]I (50) ,HETATF(50) ,ZHST (50),ZTST(50),_HST(50) ,.RTST(_O) ,
g FLFR (53) ,PFRCRD(5?) ,PERLO_(5t) ,ZBL(50,SC) ,RBI.(59,5_) ,
1 THBL(50,Sn_) ,YNBL(5 _,$0) ,TTBL(_r,50) ,THIBL(50,SC) ,_"H2BL(5 _,50)
CO_I _ON/CALCON/MMM I, MHTPI ,CP, EXPON, TGROG, PITCH, RLEH, RLET, RTEH, _T ET,
ZLE(5e) ,RLE(50) ,ZTE(5C) ,RTF(50) ,ZLEOM(101) ,RL_OM (IQI),
SLEOM (1_I) ,IHLEOM (101),ZTEOM (10 I) ,RT_OM(101) ,STEO[_ (101) ,
THTEOM(lr_I) ,ILE(Itl) ,ITE(IC1) ,ZOM(1C0, 1C1) ,ROM (100,101) ,
SO_(1¢0, I,31) ,TOM (100,191) ,BrH (10_,I0.1) ,DIHDS (10 :_,InI),
DTHDT (1¢0,16 I) ,PL(_S_ (I('0,101) ,CPHI(100,1 r I) ,SDHI (I0 '_,I _I)
DIM_NS!rON SLOPE(50) ,E_i(50)
K = 2
IF(ABS(SF-SFIN(1)) .GT. TOLE._) GO TO 10.
TIPF = TIP(1)
RETUPN
10 TF(SF-SFIN (1)) 2C,2t,3_
2n TIPF = TIP(1)+(S_-_FIN(1))'_SLOP_(1)
RET_IRN
30 IF(ABS(SF-SFIN(K)).GT.TOLER) GO TO _0
TIPF -- TIP(K)
R_TURN
[_0 IF(SF-SFIN(K)) 7C,7_,50
50 K=K+I
IF (K-NIN) 30,3C,60
60 TIPF = TIP(NIN)+(SF-SFIN(NIN))_qI, OPE(NIN)
}_ETURN
7O SK = SFIN(K)-SFIN(K-I)
TIPF = EM (K- I) _'(SFIN (K) -S P) _'_'3/6./SK+FM (K) • (SF-SFIN (K- I) ) _',]/
1 6./SK÷ (TIP (K)/SK- EM (K) *SK/6. ) * (SF'SFIN (K- 1) ) ÷ (TIP (K- I) /
2 SK-EM (K- I) _SK/6. ) * (SFIN (K) -SF)
RETURN
ENTRY TIPNIT (NNN)
CALL SPLINE (SFIN,TIP,NIN,SLOPE,EM)
TOLF. R = AB_(SFIN(NIN)-SFIN(1))/FLOAT(NIN)'I.E-6
RETURN
END
FUNCTION RHOIPF(SF)
C
C--RHOIPF CALCULATES UPSTREAM ABSOLUTE TOTAL DENSITY
C--AS A FUNCTION OF STREA_ FUNCTION
C
COMMON/INPUTT/GA_,AR,MSFI,OMEGA, REDFAC, VELTOL,FNEW,DNEW,MBI,MBO,
185
I
MM,MHT,NBL,NHUB,NTIP,NIN,NOUm,NRLPL,NPPP,NOgTAT,N_L,NLO_S,
2 LSFR,LTPL,LAMVT,L_OT,IBLAD,L_TE_N,ANCi_OT, IMESH,TSLTNE,
3
ISTATL,I_LOT,I._UPER,ITSON,IDEBUG,ZO_IN,ZCMPI,ZO_I{O,ZOMOUT,
ROMIN,ROMBI,RCMBO,ROMOUT,ZH rN,ZTIN,ZHOUT,ZTOUT,_HIN, RTTN,RHOUT,
5
RTOUT,TITLE[(20) ,ZHUB(5 n) ,DHUB(5°) ,ZTIP(Sq) ,RTIP (5_) ,SFIN (_n) ,
6
RADIN(5D),TIP(50) ,PRIP(_¢) ,L._MIN(_) ,VTHIN(_r) ,ZFOUT (5 _) ,
7
RADOUT(50) ,PROP (_3) ,LO_OUT (5C) ,LAMOUT (50) ,VTHOUT (5 _) ,
8
BETALE(5C) ,BETATE(50) ,ZHST(50) ,ZTST(Sn) ,_HST(_ _) ,RT._T(qr) ,
FLFR (£0) ,PERCRD (5_) ,PERLOS (5C) ,ZSL(_P,5n) ,RBL (5_,_[) ,
I THBL(5O,SO) ,TNHL(5:_,59) ,TTBL(%_,_) ,TH!BL(50,5 _) ,_H2BL(50,_)
COMMON/CALCON/MMMI,MHTPI,CP,£ZPON,TGROG,PITCH,_LEH,RLET,PTEH,PTET,
I ZLE (5_) , _LE (50) ,ZTE (50) , RTE (5_) , ZLEOM (19 i) , RI,EOM (I- 1) ,
2 gLEOM(I%I),THLEOM(In!),ZT_OM(I_I),RTEOM(lnl),gTEOM(_I) ,
3 _HTEOM(IOI),IiE(I01) ,ITE(IOl) ,ZOM(IOO,191),_OM(16n,I01) ,
SOM(100,I01) ,TOM(19,3,101),BTH(100,1r1),DTHD_(1Cn,1_1) , -_
5 DTHDT(IG0,!@I),PLCSS(IO_,I¢I) ,CPHI(10a,1_!),gPHi(1.)0,_nl)
DIMENSION SLOPE (5 _),EM (50),RHOIP (5_)
K = 2
IF(ABS(SF-SFIN(1)).GT.TOLE_) GO TO 10
RHOIPE = RHOIP(1)
RETURN
Ir IF(SF-SFIN(1)) 2C,26,30
2¢ _HOIPF = RHOIP(1)+(SF-SFIN(1))_SLOPE(1)
RETURN
3C IF(ABS(SF-SFIN(K)).GT.TOLER) GO TO _9
RHOTPF = RHOIP(K)
RETURN
_C IF(SF-SFIN(K)) 70,70,50
56 K=K+ I
IF (K-NIN) 30,30,6C
6._ [_[{OTPF = RHOIP(NTN)+ (SF-SFIN(NIN))_SLOPE(NIN)
RETURN
70 SK = SFIN (K)-SFIN (K-l)
RHOIPF = EM (K-l) • (gFIN(K)-SF) _%/6./SK+EM(K)* (SF-SFIN(K-I)) _*_/
I 6./SK+ (RHOrP (K)/SK-EM(K) "9K/6. ) * (_F-SFIN (K-I)) + (RHOTP (K- I) /
2 SK-EM (K-l) "SK/6.)* (SFIN (K)-SF)
RETUN N
ENTRY RHINIT(NNN)
DO 80 J=I,NIN
8C FHOIP(J) = PRIY(J)/AR/TIP(J)
CALL SPLIN E (g FIN, RHOI-, NIN, _LOD_, EM)
TOLSR = ADS (SFIN (NIN) -SFIN(!) ) /FLO_T (NIN) _1.E-6
RETURN
END
186
10 NCALL = I
XORIG = XEST
IF (YCALC.GT.YGIV. AND.JZ.EQ.I) GO TO 20
IND = 2
][(I) = YCALC
X(1) = O.
XEST = XEST÷XDEL
RETURN
2C IND = 3
Y(3) = YCALC
X(3) = O.
XEST = XEST-XDEL
RETURN
C--SECOND CALL
36 IND = 4
Y(2) = YCALC
X(2) = XEST-XORIG
XEST = XEST+XDEL
RETURN
_0 TND = 5
Y(2) = YCALC
X(2) = XEST-XORIG
XEST = XEST-XDEL
RETURN
C--THIRD OR LATER CALL - FIND SUBSONIC OR SUPERSONIC SOLUTION
50 ¥(3) -- ¥CALC
X(3) = XEST-XORIG
GO TO 70
60 Y(1) = ¥CALC
X(1) = XEST-XORIG
70 IF (YGIV.LT.AMINI (Y (1) ,Y(2) ,Y(3))) GO TO (12_,130),JZ
80 IND = 6
CALL PABC(X,¥,APA,BPB,CPC)
DISCR = BPB**2-4.*APA*(CPC-YGIV)
IF (DISCR.LT.0.) GO TO 140
IF (ABS (_00.*APA" (CPC-YGIV)).LE.BPB**2) GO TO 90
XEST = -BPB-SIGN(SQRT(DISCR) ,AP )
IF (JZ.EQ.I.AND.APA.GT.0..AND.Y(3).GT.Y(1)) XEST =-BPB+
ISQRT (DISCR)
IF (JZ.EQ.2.AND.APA.LT.0.) XEST = -BPB-SQRT (DTSCR)
XEST = XEST/2./APA
GO TO 100
90 IF (JZ.EQ.2.AND.BPB.GT.0.) GO TO 130
ACB2 = APA/BPB*(CPC-YGIV)/BPB
IF (ABS(ACB2) .LE.I.E-8) ACB2=0.
XEST = - (CPC-YGIV)/BPB* (I.+ACB2÷2.*ACB2**2)
100 IF (XEST.GT.X(3)) GO TO 130
IF (XEST.LT.X(1)) GO TO 120
XEST = XEST+XORIG
RETURN
C--FOURTH OR LATER CALL - NOT CHOKED
110 IF(XEST-XORIG.GT.X(3)) GO TO 13_
IF(XEST-XORIG.LT.X(1)) GO TO 120
Y(2) = YCALC
X (2) = XEST-XORIG
GO TO 70
C--THIrD OR LATER CALL - SOLUTION EXISTS,
C--BUT RIGHT OR LEFT SHIFT REQUIRED
12£ IND = 5
187
C--LEFT SHIFT
XEST = X(1)-XDEL+XORIG
XOSHFT = XEST-XOR[G
XORIG = XE_T
y (3) = Y (2)
x(3) = X(2)-XOS_FT
Y (2) = Y (I)
X(2) = X(1)-XOSHFT
RETURN
13C IND =
C--RIGHT SHIFT
XEST = X (3) +XDEL+XOPIG
XOSHFT = XEST-XORIG
XORIG = XEST
Y(1) = Y(2)
X(1) = X(2)-XOSHFT
Y {2) = Y (3)
X(2) = X(3)-XOSHFT
RETURN
C--THIRD OR LATER CALL - APPEARS TO BE CHOKED
140 XEST = -BPB/2./APA
IND = 7
IF (XEST.LT.X(1)) GO TO 120
IF(XEST.GT.X(3)) GO TO 130
XEST = XEST+XORIG
RETURN
C--FOURTH OR LATER CALL - PROBABLY CHOKED
150 IF (YCALC. GE. YGIV) GO TO 110
TND = 10
RETURN
C--NO SOLUTION FOUND IN 10C ITERATIONS
160 IND = 11
RETURN
END
SUBROUTINE INRSCT(XCURVI,YCURV1,NI,XCURV2,YCURV2,N2,XCROSS,YCROSS)
C
C--INRSCT CALCULATES THE COORDINATES (XCROSS,YCROSS) OF THE POINT
188
C--OF INTERSECTION OF TWO SPLINE CURVES, YCURVI=F(XCUPVI) _ND
C--XCURV2=G(YCURV2), LYING ON A PLANE
C
COMMON NREAD,NWPIT
DIMENSION XCURVI (NI) ,YCU_Vl (NI) ,XCURV2 (N2) , YCUPV2 (N2)
NCOUNT = 0
TOLER = (ABS(XCHPVI(N1)-XCURVI(1))÷ABS(YCURV2(N2)-YCUPV2(1)))/I.E5
XTEMP = XCURVI (I)
YTEMP = YCURVI (I)
XCROSS = (XCURVI(1)+XCURVI(NI))/2.
C--COMPUTE INTERSECTION POINT AND SLOPE ON CURVE I
10 Xl = XCROSS
CALL SPLINT (XCURVI , YCURVI,NI, XI, I,Y I,SI,TEMP)
C--COMPUTE INTERSECTION POINT AND SLOPE ON CURVE 2
Y2 = YI
CALL SPLINT(YCURV2,XCURV2,N2,¥2, I,X2,S2,TEMP)
C--COMPUTE COORDINATES OF POINT WHERe, TWO SLOPE_ INTERSECT
SIS2 = SI_,S2
XCROSS = X2+SIS2*(X2-XI)/(1.-SIS2)
YCROSS = YI+SI _(X2-X1)/(1.-SIS2)
C--COMPUTE DISTANCE AWAY FROM PREV[OUS SLOPE INTERSECTION POIN _"
DIST = SQRT ((YCROSS-YTEMP) _=2÷(XCROS_-XTEMP)_t2)
IF (DIST.LT.TOLER) R_TU[%N
NCOUNT = NCOrINT+I
IF (NCOUNT.GT.20) GO TO 20
XTEMP = XCROSS
YTEMP = YCROSS
GO TO 10
20 WRITE(NWRIT,10O0) TOLER,DIST
RETURN
I00C FORMAT (6X,_6HINRSCT HAS FAILED TO CONVERGE IN 20 ITERATIONS/
110X, IIHTOLERANCE =,GI_4.6/10X,_7HDISTANCF BETWEEN LAST TWO INTER qEC
2TION POINTS =,GI_.6)
END
189
15 ABOVE = - I
RIGHT = -I
IF(YO.GE.Y (I,J) +(X _-X (I,J))/(X(I+I,J)-X (I,J)) _ (Y(T+I,J) -¥(I,J)))
1 _BOVE = ABOVE+I
IF(Y¢.GT.Y (l,J+l) +(X_-X (T,J+I))/(X (I+I,J+I)-X(I,J+I))*
I (Y(I+I,J+I)-Y(I,J+I))) ABOV_ = ABOVE+I
IFIX0.gE.X (I,J) + (Y_-Y (I,O))/(Y(I,J+I)-Y (I,J))* (X(T,J+1) -X(l,J)))
I RIGHT = RIGHT+I
IF(XO.GT.X (I+I,J)+(YO-Y (I+1,J)) /(Y(I÷!,J+I)-Y(I+I,J)) "
I (X(I+I,J+I)-X(I+I,J))) RIGHT = RIGHT+I
IN = I÷RIGIIT
JN = J+ABOVE
IF(IN.LT.1.OR.IN.GE.NX) RIGHT = a
IF(JN.LT.I.OR.JN.GE.NY) ABOVE = _
IF(ABOVE_2+RIGHT*_2.EQ.O) GO TO 2_
I = I+RIGHT
J = J+ABOVE
ICOUNT = ICCUNT+I
IF(ICOUNT. GT.ICNTMX) GO TO 11e
GO TO I0
2C IJEX = 1
C-- SET EXTRAP TO INDICATE EXTRAPOLATION
EXTRAP(1) = O.
EXTRAP (2) = 0.
IF(IN.LT.1) EXTRAP(2) =-I.
IF(IN.GE.NX) EXTRAP(2) = I.
IF(JN.LT.I) EXTRAP(1) =-1.
IF(JN.GE. NY) EXTRAP(1) = I.
C--CALCULATE CONSTANTS TO CALCULATE FY
Y13 = Y(I,J)-Y(I,J÷I)
X13 = X(I,J)-X(I,J+I)
Y_2 = Y(I+I,J+I)-Y(I+I,J)
X_2 = X(I+I,J+I)-X(I÷I,J)
Y01 = YO-Y (I,J)
X31 = XO-X (I,J)
Y02 = YO-Y(I+I,J)
X02 = XO-X(I+I,J)
Y21 = Y(I÷I,J)-Y(I,J)
X21 = X(I+I,J)-X(I,J)
C--CALCULATE COEFFICIENTS OF QUADRATIC EQUATION FOR FRACTIONAL DISTANCE
C--IN QUADRILATERAL
30 QA = YI3_X42-X13_¥_2
QB = X13_Y02-YI3_X02÷YOI_X_2-X01_Y_2
QC = Y_I*X21-X01_Y21
DISCR = QB_2-_._QA_QC
IF(DISCR.LT.0.) GO TO 110
C--CHECK TO SEE IF QUADRATIC EQUATION IS CLOSE TO LINEAR
IF(ABS(4._QA*QC).LE. QB_2_.01) GO TO 80
_A : -QB/2./OA
FB = SQ_T(DISCR)/2./QA
FI = FA+EB
F2 = FA-FB
C--CHECK TO DETERMINE WHETHER FI OR F2 IS THE PROPER SOLUTION
CASE = -I.
IF(EXTRAP(IJEX)) _0,50,6C
C--EXTRAPOLATION BELOW OR TO LEFT (FF LESS THAN 0.)
40 IF(FI.LT..01) CASE = CASE+I.
IF(F2.LT..01) C_SE = CASE+2.
IF(CASE.LT.I.5) GO TO 70
190
CASE = CASE-1.
IF(F2.LT.F1) CASE = CASE-I.
GO TO 70
C--NO EXTRAPOLATION
50IF(ABS(F]-.5).LT..51) CASE = CASE÷I.
IF(ABS(F2-.5) .iT..51) CASE = CASE+2.
GO TO 70
C--EXTRAPOLATION ABOVE OR TO RIGHT (FF C,RE ATER THAN I.)
60 IF(F1.GT..99) CASE = CASE+I.
IF(F2.GT..99) CASE = CASE+2.
IF(CASE.LT.I.5) GO TO 70
CASE = CASE-I.
IF(FI.LT.F2) CASE = CASF_-I.
70 IF(ABS(CASE-.5).ST..6) GO TO 110
FF = (I .-CASE) _.FI÷CASE_F2
GO rO 90
C--IF QUADRATIC EQUATION IS NEAR LINEAR, US_ BINOMIAL EXPANSION FOR FF
8C ACH2 = QA/QB_QC/QB
IF(ABS(ACB2).LT.I.E-8) ACB2 = 0.
FF = -QC/QB_(I.+ACB2+2._ACB2_'*2)
9C IF(IJEX.EQ.2) GO TO 1OC
IJEX = IJEX+I
FY = FF
C--INTERCHANGE CORNER POINTS TO GET FX
Y13 = Y(I,J)-Y(I+I,J)
X13 = X(I,J)-X(I÷I,J)
Y%2 = Y(I+I,J+I)-Y(I,J+I)
X_2 = X(I+I,J+I)-X(I,J+I)
Y%2 = Y0-Y (I,J+1)
Xn2 = X0-X (I,J+1)
Y21 = Y (T,J+I) -Y (T,J)
X21 = X(I,J+I)-X(I,J)
GO TO 30
C--CALCULATE INTERPOLATED VALUE
100 FX = FF
Z0 = Z(I,J)W'(I.-FX)_'(I.-FY) +Z(i+i,J)_'FX_'(1.-F¥)+Z(i,J+I)*(I.-FX)
1 _FY+Z (I+I,J+1) _FX_FY
RETURN
C-- PRINT ERROR MESSAGE IF THERE IS A PROBLEM IN OBTAINING A SOLUTION
110 Z0 = 0.
WRITE(NWRIT,IOCO) l,J
RETURN
1000 FORMAT(38HILININT CANNOT FIND INTERPOLATED VALUE/_H I =,I6,_H J =,
116)
END
SUBROUTINE ROTATE(ANGROT,X,Y,NX,NY,NDIMX,NDIMY,XROT,YROT)
DIMENSION X (NDIMX,NDIMY) ,Y (NDIMX,NDYMY) ,XROT (NDIMX, NDIMY) ,
I YROT (NDIMX, NDIMY)
CAN = COS(ANGROT)
SAN = SIN(ANGROT)
DO 10 J=I,NY
DO 10 I=I,NX
TEMP = X(I,J)*CAN+Y(I,J)_SAN
YROT (l,J) = Y (I, J) _CAN-X (I,J)'_SAN
I0 X_OT (I,J) = TEMP
191
RETURN
END
192
IAY/( 17X,2G13. 5} )
1030 FORMAT (IHI)
END
193
70 IF (K.GE.N) GO TO 90
K = K+I
GO TO 50
8C S2 = X(2)-X(1)
yC = EM(1)*S2**2+2._Y(1)-Y(2)
DYDX(I) = (Y (2) -Y (1) ) /S2-7. *_M (1) /6. *S2
YINT(I) = ¥0+DYDX(I)* (Z (I)-X(1) +$2)
D2YDX2(I) = 0.
GO TO !20
90 IF (Z(I).LT.2.*X(N)-X(N-I)) GO TO 100
SN = X(N)-X(N-1)
YNPl = EM(N)_SN*$2+2.$Y(N)-Y(N-I)
DYDX(I) = (¥(N)-Y(N-I))/SN+7._EM(N)/6._SN
YINT(I) = YNPI +DYDX (I) _ (Z (1) -X (N) -SN)
D2YDX2 (I) = 0.
GO TO 120
I0C SK = X(K)-X(K-I)
YINT(1) = EM(K-1)_ (X(K)-Z(1))'_3/6./SK +EM (K) . (Z (1) -K (K-I) ) ''3/6.
I /SK+(Y(K)/SK -EM(K)_SK /6.)_ (Z(I)-X(K-I))+(Y(K-I)/SK -EM(K-I)
2 _SK/6.) • (X(K)-Z(I))
110 DYDX (I) =-EM (K-I) _ (X (K) -Z ([)) _2/2.0/SK ÷EM (K) " (X (K-I) -Z (T)) _12/2.
1 /SK+ (¥ (K) -Y (K-I)) /SK - (EM (K) -EM (K- I) ) _SK/6.
D2YDX2(I) = EM(K)- (X(K)-Z(I))/SK_(EM(K)-EM(K-1))
120 CONTINUE
IF (IERR.EQ.0) RETURN
130 WRITE(NW_IT,1090)
WRITE(NWRIT,1020) N, (X(I),Y(1),I=I,N)
IF (IERR.EQ.0) STOP
WI{I TE (NWRIT,1030)
RETUI_N
I_C WRITE (NWRIT,1010)
WRITE(NWRIT,1O20) N, (X(I),Y(I),I=I,N)
STOP
1000 FORMAT (IHI,10X,_HSPLINT ERROR -- ONE OF THREE POSSIBLE CAUSES/
117X,51HI. ADJACENT X POINTS ARE DUPLICATES OF EACH OTHER./
217X,38H2. SOME X POINTS ARE O[IT OF SEQUENCE./
317X,32H3. SOME X POINTS ARE UNDEFINED.)
I01C FORMAT (1H1,10X,62HSPLINT ERROR -- NUMBER OF SPLINE POINTS GIVEN I
IS LESS THAN TWO)
1020 FORMAT (//17X,18HNUMBER OF POINTS =,I@//17X,SHX ARRAY,6X,SH¥ ARIR
IAY/( 17X, 2G13.5) )
1030 FORMAT (IHI)
END
194
DO IC I=2,NI
X3X2 = X(I+I)-X(1)
X2XI = X(I)-X(I-I)
X_XI = X(I÷I)-X(I-I)
Y3Y2 = ¥(I÷I)-Y(I)
Y2YI = Y (1)-Y (I-1)
I_ SLOPE(I) = (X2X1**2*Y_Y2+K3X2**2*Y2YI)/(X3X2*X2X1*X3X1)
C--FINST POINT
X3X2 = X (3)-X (2)
_.2XI : X(2)-X(1)
X3Xl : X(3)-X(1)
Y3YI : Y (3)-Y (I)
Y2YI = Y (2)-Y (1)
SLOPE(l) = (X3Xl)*2*Y2¥1-X2XI'_*2*Y3YI)/(X3X2_X2XI'kX3X1)
C--LAST POTNT
X3X_ = X(N)-X(N1)
X2XI = X(N1)-X(N2)
X3XI = X (N)-X (N2)
Y3Y2 = Y (N) -Y (NI)
Y3YI = Y (N)-Y (N2)
SLOPE(N) = (X3XI)*2_Y3Y2-X3X2_*2*Y3Y1)/(X3X2_X2XI_X3XI)
RETURN
C--TWO POINT FUNCTION
20 SLOPE(1) = (Y(2)-Y(1))/(X(2)-X(1))
SLOPE(2) = SLOPE(1)
RETURN
END
SUBROUTINE SPLISi(X,Y,N,YIP,YNP,SLOPF,,EM)
C
C--SPLISL CALCULATES FIRST AND SECOND DERIVATIVES AT SPLINE POINTS
C--END CONDITION FIRST DERIVATIVFS SPECIFIED AT END POINTS
C
CCMHON N_EAD, NWRIT
DIMENSION X(N) ,Y (N) ,SLOPE(N) ,EM (N)
DIMENSION G(I01) ,SB(101)
IERR = C
C = X(2)-X (1)
IF (C.EQ.O.) GO TO 50
SB(1) : .5
F : (Y(2)-Y (I))/C-YIP
G(1) = 3._/C
NO = N-I
IF (NO. LE.0) GO TO 60
IF (NO.EQ.I) GO TO 20
DO 10 I=2,NO
A = C
C = X(I÷1)-X(I)
IF (AeC.EQ.0.) GO TO 50
IF (A*'C.LT.0.) IERR = I
W = 2.)(A+C)-A_SB(I-I)
SB (I) = C/W
F = (¥(I÷I)-Y(1))/C-(¥(1)-¥(I-I))/A
10 G(1) = (6.'_F-A*G{I-I))/W
20 w : C*(2.-SB(N=I))
F = ¥NP- [¥ (N) -¥ (N-I))/C
195
EM(N) = (6._E-C_G (N-I)) / W
DO 30 I=2,N
K = N+I-I
3O E_(K) = G(K)-SB(K)_EM(K ÷I)
SLOPE(1) = YIP
DO _0 [=2,NO
SLOPE(I) = (X (I) -X (I- I) )/6. $ (2. _EM (1) *EM (I- I)) + (¥(I)-Y (I-I))/
I (x(i)-x (i-I))
SLOPE(N) = YNP
IF (IERR.EQ.O) RETURN
5C WRITE (NWPIT, I000)
WRIT_(NWRIT,1320) N, (X(I),Y (1) ,I=I, N)
IF (I£RR.EQ.0) STOP
WRITE(NWRIT,1930)
RETURN
6C WRITE (NWRIT,I_10)
WRITE(NWPIT,1920) N, (X(1),Y(1) ,I:!,N)
STOP
1000 FONMAT (IHI,10X,44HSPLISL ERROR -- ONE OF THREE POSSIBLE CAUSE_/
117X,51HI. ADJACENT X POINTS ARE DUPLICATES OF EACH OTHER./
217X,38H2. SOME X POINTS ARE OUT OF SEQUENCE./
317X,32H3. SOME ]( POINTS ARE UNDEFINED.)
1010 FORMAT (IHI,IOX, 62HSPLISL ERPOR -- N[IMBER OF SPLINE POINTS GIVEN I
IS LESS THAN TWO)
102_ FORMAT (//17X,18HNUMBER OF POINTS =,I_//17X,qHX ARRAY,6X,8H¥ APE
1A¥/(17X,2G1 3.5) )
1030 FORMAT (1HI)
END
196
F = (Y(T+_)-Y(1))/C-(Y(_)-Y(T-I))/_
1,_ G(I) = (6.*F-A*G(I-I))/W
2C W = C*(2.-SB(N-1))
F = YNP-(Y(N)-Y(N-I))/C
_(_) = (6.*_-C*G(N-I))/_
DO 30 I=2,N
K = N+I-I
3C E_(K) = G(K)-SB(K)*F_(K+I)
IF (MAX.LE.3) _ETURN
C
ENTRY SPENSL (Z,MAX,YINT,DYDX,D2YDX2)
DO 120 I=I,MAX
K=2
IF (ABS(Z(I)-X(1)).LT.TOiER) GO TO _0
IF(Z(T).GT.X(1)) GO TO 50
GO TO 80
40 YINT (I) = Y(1)
SK = X(K)-X (,_-1)
Go TO 110
50 IF (ABS(Z(I)-X(K)).LT.TOLER) GO TO 6_
IF (Z(1).GT.X(K)) GO TO 70
GO TO 160
6P YINT(1) = Y(K)
SK = X(K)-X(K-1)
GO TO 110
70 IF (K.GE.N) GO TO 90
K = K+I
GO TO 50
8C DYDX(I) = YIP
YINT(1) = Y (1) +YIP* (Z (I) -X (1) )
D2YDX2 (I) = 0.
GO TO 120
90 DYDX(I) = YNP
YINT(1) = Y(N) +YNP* (Z (1) -X (N) )
D2YDX2(I) = O.
GO TO 120
10o SK = X(KI-X(K-1)
YINT(1) = EM(K-1)*(X(g)-Z(I))**3/6./SK +E_ (E) * (Z (I) -X (K-1) ) **3/6.
1 /SK+ (Y (K)/SK -EM (K) *S_ /6.) * (Z (I) -X (K-l)) + (Y (K- 1)/SK -EM (K-l)
2 *SK/6. ) * (X (K) -Z (I))
110 DYDX (I) =-ER (K- I) • (X (K) -Z (I)) _.2/2. ¢/S_ +EM (K) • (X (K-I) -Z (I)) _2/2.
1 /SK+ (Y (K)-Y (K-l))/SK - (EM (K) -EM (K-l)) *SK/6.
D2YDX2(I) = E_ (K)- (X (K) -Z (I) )/SK* (EM(K)-EM(K-I))
120 CONTINUE
IF (IERR.EQ.O) RETORN
130 WRITE (NWRIT, I000)
WRITE(NWRIT,1020) N, (X(1),Y(1),l=1, N)
IF (IERR.EQ.O) STOP
WRITE (NWRIT, I030)
RETURN
140 WRITE(NWRIT,I010)
WRITE(NWRIT,1020) N, (K(1),Y(I),I=I,N)
STOP
1000 FORMAT (IHI,IOX,44HSPINSL ERROR -- ONE OF THREE POSSIBLE CAUSES/
117X,51H1. ADJACENT X POINTS ARE DUPLICATES OF E_CH OTHER./
217X,38H2. SOME X POINTS ARE OUT OF SEQUENCE./
317X,32H3. SOME X POINTS ARE UNDEFINED.)
1010 FORMAT (1H1,IOX,62HSPINSL ERBOR -- NUMBER OF SPLINE POINTS GIVEN I
IS LESS THAN TWO)
1020 FORMAT (//17X,18HNUMBER OF POINTS =,I4//17X,BHX ARRAY,6X,BHY ARR
197
-4
1A¥/(17X,2G13.5) )
1030 FORMAT (1H1)
END
t98
0.228744 0.228745 0.228756 0.228772 0.228790 0.228814 0.228P38 0.22RR62
0.228888 0.228914 0.228940 0.22R961 0.228979 0.228993 0.22899_ -0.
0.243892 0.243883 0.243832 0.243759 0.243671 0.2_3560 0.243445 6.243328
0.243208 0.243085 0.2_2960 0.2_2859 @.2_277t 0.242706 0.242697 -0.
0.258213 0.258196 0.258095 0.2579_I _,257781 0.257563 0.2573_9 C.257109
0.256873 0.256632 0.256387 0.256188 @.256012 0.255885 0.255869 -_.
0.271827 0.271804 0.271664 0.271464 0.271231 0.270930 0.270621 _.270303
0.269978 0.26q646 0;269308 0.269032 0.268788 0.268613 0.268591 -0.
0.284826 0.284799 0.284630 0.284388 0.284106 6.2837_4 0.283370 0.282488
0.282597 0.282196 0.281788 0.281656 0..281161 0.280949 e.280q23 -r.
0.297289 0.297259 0.297070 0.2968_2 C.296688 0.2_6085 0.295672 0.295248
0.294814 0.294370 0.293917 0.293549 0.293222 0.292987 0.292958 -0.
0.309276 0.309245 0.30q_52 0.308776 n.308_55 C.308042 0.307618 0.307184
3.3)67_0 0.306286 0.305823 0.3(5446 0.305111 0.3_4870 0.3_4841 -D.
-0. 0.003439 0.018370 0.037211 0.055758 0.074409 0.087979 0.096_7
0.099821 0.098149 0.0q1503 0.082670 0._72_27 0.063700 0._62213
-0.013224 -C.010074 0.004766 0.023910 0.0_341_ 0.064167 0.080826 0.093339
0.191676 0.105831 0.165819 0.102830 0.098@63 _.09_440 0.092668
-0.023111 -e.020171 -0.005378 0.014009 0.034235 0.056558 0.075521 0.091061
0.103130 0 111696 0.116741 0.118239 0.117703 0.115_68 0.116000
-0.029779 -0 C27018 -0.012353 0.007090 0.02772_ 0.051073 0.0716_1 0.089362
0. I¢4184 0 116061 0.124961 0.129922 0.132681 0.133747 _.133841
-0.034282 -0 031670 -0.317193 0.002177 0.023000 0.047005 0.068698 0.088021
0.104918 0 11934_ 0.131259 0.138962 0.1%4355 @.147_33 0.147798
-0.037269 -0 034785 -0.020532 -0.001322 0.019542 0.043942 0.066421 0.086925
0.105407 0 121820 0.136124 0.146026 _.153552 _.158271 0.158843
-0 0390_0 -0036662 -0.022655 -0.003667 0.017126 0.041714 C.064700 0.086037
0.195681 0 123592 0.139731 0.i51345 _. 160545 0.I_6562 0.167290
-6.0_0000 -0 037711 -0.923963 -0.005234 _.015412 0.040050 0.063351 0.085277
0.165790 O. 24854 0. I_2_37 0.I_415 _.16596_ 0.173032 0.173882
-0.0_n327 -0. 38112 -0.924628 -0.006183 _.014263 0.0388_7 0.062317 0.084£42
0. I_5790 O. 25739 0.144440 0.158498 0.17012_ 0.178039 0.178986
-0.039946 -0. 37791 -0.024571 -0.006431 S.n13762 0.038175 0.061644 0.084141
O. I_5641 O. 2611q 0.145548 0.I_0322 0.172676 0.181170 0.182184
-C.039061 -0. 36953 -0._23993 -0.C06169 0.013734 0.027894 0.061235 0.083735
0. I$5370 O. 26120 0.145962 0.161168 0.173978 0.182840 C.183o00
0.0@2362 0.C02624 0.003829 0._05310 0.006707 e.008007 P._08809 0.0_9!I0
0.008862 0.008018 0.006572 0.004975 0.00325_ 0.0r!83_ 0.091613
0.002173 0.092395 0._03490 0._04832 0.C06094 0._07261 0.097972 6.098226
0.C_7986 0.007221 0.005926 0.6C4504 0._02976 0.001723 0 001535
0.092335 0.002228 0.003234 0.004464 0.005618 0.006682 0 007_24 _.097545
0.607318 0.@36615 0.005435 0.C041_6 0.002765 0.001632 0 001470
9.901933 0.C_2103 0.0_3036 0.004178 _.005246 0.006228 0 0n68!8 0.0070i6
0.006799 0.006147 0.005058 5.003870 _.002600 0.001560 0 001_17
0.001855 0.002009 0.0_2885 0.C03955 0._04956 0.005874 0 006423 0.006604
0.006397 6.005784 0.004765 0.PC36_6 _.6_2_72 0.001502 0 001373
0.001798 0.001939 0.302769 0.0t3784 0.004732 0.005601 0 0_6119 0.006286
3.0_6_87 0.C05505 0.0m_546 0.003492 _.m02373 0.0r1457 0 001339
0.001755 0.6_1887 0.002683 0.0_3655 0.00_563 0._05394 0 005889 0.006_47
0.005855 0.605296 0.004372 9.003368 0.0022q8 0._01422 _.001311
0.001724 0.091850 0.002622 0.@03563 0.004442 0.005246 _.005723 0.005875
0.C05687 0.C05146 0.004250 @.00_279 0.002243 _.001_97 0._01292
0.031705 0.001827 0.902581 0.0035n2 _.004361 0.005147 _.005613 0.005769
0.005576 0._05045 0.004170 0.0£3220 0.@02207 0.001379 0.001277
0.0016q4 0.001814 C.002559 e._03_68 0.0_316 0.065090 _.005550 0.005695
0.005513 0.004999 6.004124 0._03186 0.n¢2186 0,001369 0.001269
0,@01692 0.001811 0.002552 0.h03_57 #.004301 0.005072 0.005530 _.005675
0.035493 0._0_972 0.004116 0.Ct3176 0.n02180 0._01366 0,001267
-0.015213 C. 0.112819 n,13719C -0. -0, -0. -n.
-0.015210 0.613207 0.103595 _.13719C -0. -0. -_. -_.
0.00 0.10 0.20 C.30 0.40 0.50 0.60 n.7_
C.80 0.90 1.00
C.O 0.1 0.2 _.3 0.4 0.5 0.6 _.7
199
0.8 0.9 1.0
0.0 0.080 O. 158 0.235 0.31_ 0._0 0._90 0.584
0.693 0.822 1.0
20 20 20 5 1 20 0
200
APPENDIX A
The stream-function equation was derived as equation (B17) of part I (ref. 6):
a2u a2u
_+
as 2 at 2
au
as
+ 1 aB+
Bas pas at )
1 Op_ ___ _ au cos5_
_---_ +---
1 aB 1 Op
B at +-p Ot + 0s
=0 (A1)
where
(A2)
at T,,;}
Ft = a__oo
I Op (A4)
0t p 00
201
. t 2 s
3
hi
Figure 24. - Notation for adjacent mesh points and mesh spaces.
noted by using the subscript 0, and similarly for the neighboring points. It can be shown
that equation (A1) can be approximated by
1(hl + h 2)
+ h2(h 1 + h 2)
o_ol+r+ :u4_ uol
hlh2J Lh3(h3 + h 4) h4(h 3 + h 4) h3h4J
u 4 ' u 3 [sin _0
+
h3 + h4 _L r0 B 0 \h 3 + h
_ u,[co,_o
_,_.___
_,+_,r:
h+_,L -- r0 +B0\hl+_22 ) P0\hl+_2 +(as
_o L _0L _<i0
where _(rV0)/_t is calculated by different methods upstream, downstream, and within
the blade row. Upstream and downstream of the blade, equations (B21) and (B22) of
part I are used. Within the blade row, a finite-difference approximation is used with
values of V8 from the previous iteration. The final result to be used in equation (A5)
is
2O2
upstream
w 0
u0 = Z aiui + k0 (AT)
i=l
ao=..2_ + 2
hlh 2 h3h 4
c I = h I + h2
c2 = h 3 + h 4
(continued)
203
if
c_co_
_o
sin _o2 - sin _o1
B2-BI P2-Pl
+_
B0 P0 cos _0 (A8)
dI = +
cI r0
B4-B3 P4-P3
B0 P0 sin _0
+
d2 =
c2 r0
0
a I =
a0c 1
a2
a0c 1
a0c 2
a4
aoC2
204
upstream
aow(Ws)o
r0B0P 0
k0= r(We)0 [.r2(Ve)2 - rl(Ve)ll
within blade row
+ _0 + (Ft)ot
%W(Ws)o
rd -I
r0B0P 0 CWo)oBOPo(Ws)
o (rVe)ol downstream
W
aow(Ws)o "J0+ w2 + _01
(Ag)
Equation (AS) is written in the form corresponding to the calculation of the coefficients
(A2) and (A3). The quantity Ft is calculated in subroutine BLDVEL when the blade
surface velocities are calculated. The quantities dk/du and d(rV0)o/dU are calculated
by subroutines LAMI)AF and RVTHTA when they are called_by NEWRHO to calculate k
or (rYe)o.
Equation (A8) is used at all interiorpoints of the mesh region. Along the bound-
aries, the boundary conditions give differentcoefficients. The stream function is known
to be 0.0 at the hub and 1.0 at the shroud. At the upstream and downstream boundaries,
the boundary condition is that the normal derivative of the stream function is zero. The
finitedifference expression for this is
Since the coefficients for these equations do not depend on the solution, they are speci-
fied in subroutine INIT.
2O5
APPENDIX B
TO STRBAM-FUNCTION SOLUTION
The work done by each blade row is determined by the change in whirl along stream-
lines. That is,
(BI)
In this program, whirl can vary as desired from hub to tip, but for each streamline the
work done is determined by equation (B1). Also, the equation relating velocity W to
temperature and density requires knowledge of upstream total temperature and whirl for
that particular streamline. For this reason, it is most desirable to express upstream
and downstream conditions as a function of stream function rather than radius. However,
if experimental data are being used, measurements are obtained as a function of posi-
tion or radius. In this case the stream function is not known, but the distribution by
radius can be used for input to the program. Then by estimation and iteration the cor-
rect distribution by stream function will be obtained.
If whirl is given as a function of stream function as input (i. e., LSFR =
LAMVT = 0), no changes need be made after the first initialization. If tangential veloc-
ity V0 is given as input (LAMVT = 1), certain subroutines must be reinitialized in
every iteration. There are two possibilities: one that V o is given as a function of
stream function {LSFR = 0), and the second that V 8 is given as a function of radius
(LSFR = 1). In either case, what is needed is the relation between stream function and
radius along the input lines. This relation is determined by the stream-function solution
obtained by SOR. In each iteration, then, reinitializatton calls are made by LOSSOM
if LAMVT = 1. If LSFR = 0, SFIN and SFOUT are given as input, and RADIN and
RADOUT are corrected by the initialization calls to LAMNIT and RVTNIT. If LSFR = 1,
P,ADIN and RADOUT are given as input, and SFIN and SFOUT are corrected by the same
calls. In either case, SPLINT calls are made to readjust the spline-fit coefficients for
all four subroutines- LAMDAF, RVTHTA, TIPF, and RHOIPF.
206
APPENDIX C
In the THETOM subroutine, ao/as and ao/at are calculated at the orthogonal mesh
points that lie between the leading and trailing edges of the blade. The information
needed to make this calculation exists as O(z, r) on the input blade sections. The
THETOM procedure is designed so that an accurate calculation is maintained in the
transition from input blade mesh to orthogonal mesh.
The orthogonal mesh on a typical blade is illustrated in figure 25. Note that some
of the t mesh lines cross the leading and trailing edges of the blade. To alleviate the
problem of calculating 0-gradients on this mesh, they are first obtained on an alternate
mesh, shown in figures 26 and 27, of s'- and t'-coordinates. Then, by interpolation,
ao/as and ao/at are obtained at the desired orthogonal mesh points.
There are several reasons why it is convenient to use an alternate mesh to calcu-
late ao/as and ao/at. First, there are usually not sufficient input planes or points
_al or "verlical"
ogonals
2O7
to permit an accurate direct calculation of _0/Os and a0/Ot using the input blade-
section points alone. Second, corresponding points on adjacent input blade planes are
not required to fall on smooth curves from hub to shroud. Finally, the angle _p is
known only on the orthogonal mesh, and not at input points, so that _0/as and o0/at
cannot be obtained directly at the input points and then interpolated to the orthogonal
mesh. Therefore, a fine-grid alternate mesh is used on which O0/_z and _0/0r are
calculated. These are then interpolated to the required orthogonal mesh points and
transformed to a0/Os and ao/at. Note that it is more accurate to calculate partial
derivatives first and then interpolate and transform the partials to the s- and t-
directions, than it would be to interpolate 0 itself from the input mesh to the orthog-
onal mesh and then calculate the partials along mesh lines.
The step-by-step procedure to obtain a0/as and a0/ot is as follows:
(1) Calculate rotated z-coordinates (ZPC) of points along the input blade sections
at 5-percent-meridional-chord locations, that is, at the semi-alternate mesh points of
t I
7%s
_Z
208
figure 26.
(2) Use SPLINT calls along each input blade section to obtain corresponding rotated
r-coordinates (RPC) and angles with respect to the unrotated z-axis Orbs (fig. 28).
(3) Calculate arc length SZRBL along each input blade section (Sbs direction) using
the ZBL, RBL coordinates.
(4) Calculate arc length SZRPC along the same blade sections using the calculated
ZPC, RPC coordinates of the semi-alternate mesh.
(5) Use SPLINT calls in the Sbs-direction (or SPINSL if BETALE and BETATE
are specified) to calculate 0 and _8/SSbs at the ZPC, RPC points from known 8 at
the ZBL, RBL points.
(6) Use SPLINT calls in the Sbs-direction to calculate blade thickness in the 8-
direction (TTPC) at the ZPC, RPC points from TTBL at the ZBL, RBL points. This con-
cludes the calculation of variables at the semi-alternate mesh points of figure 26.
(7) A procedure is then begun to obtain required distances, angles, and gradients on
a finer grid of points along the lines in the t'-direction, that is, at the points of the full
alternate mesh of figure 27. Store values of z, r, 8, blade thickness, Orbs , and
aS/aSbs into arrays along the t'-lines.
(8) Calculate arc length SZRBL along the t'-lines using the ZPC, RPC coordinates
(stored for each line in ZPCT1, RPCT1).
(9) Calculate r-coordinates (RPCT2) of points along the t'-lines at 5-percent dis-
tance increments from hub to shroud (where s' and t' cross, fig. 27). Use SPLINT
calls to obtain corresponding z-coordinates-(ZPCT2).
(10) Calculate arc length SZRPC up the t'-lines using the ZPCT2, RPCT2 coordi-
nates of the full alternate mesh. Also calculate angles with respect to the unrotated
(12) Use SPLINT calls in the t'-direction to obtain C_bs, aS/aSbs , and blade thick-
ness at the full alternate mesh points (ZPCT2, RPCT2) from known values at the semi-
alternate mesh points (ZPCT1, RPbT1).
(13) Store calculated values of z, r, a, blade thickness, _bs' and 88/aSbs at the
full alternate mesh points into two-dimensional arrays ZPC, RPC, THPC, TTPC,
ANGZ, and DTHDSP. This procedure, from step 7 to step 13, is executed for each of
the t'-lines of the alternate mesh.
(14) Calculate _8/az and _8/ar from _8/aSbs and _O/St' at the s'- and t'-
points of the full alternate mesh with the following equations:
209
ae _e cos a t, a_ sin _bs
- (Cl)
az aSbs cos(_bs + at,) at' cos(_bs + at,)
(The 0e/az and ae/_r gradients are the ones that will be interpolated back to the
orthogonal mesh and then transformed to get ae/0s and as/at.)
(15) Interpolate, by using LININT calls, from 0e/az and ae/ar on the s'-t'
alternate mesh to obtain aO/az and a0/_r on the orthogonal mesh points that He
between the leading and trailing edges of the blades.
(16) Transform the ae/oz and aS/ar to obtain ae/_s and ae/st at the ortho-
gonal mesh points within the blade (fig. 25). The following equations are used:
_.._8= a.__8
cos ¢ - a__esin (C4)
at Or az
210
APPENDIX D
total pressure loss, as/_t = 0. By definition, I = H i - _X. For uniform upstream stag-
nation conditions, Hi is constant, so that
For incompressible flow, equation (D1) is used instead of equation (B16) of part I in
equation (B14) of part I. The result is that equations (A1) and (A4) are unchanged and
equations (A2) and (A3) are replaced by
tj = 0 (D2)
= _ a___x (D3)
at
However, in the program, the variable ZETA is not used for this purpose, but _ ax/at
is added at the proper point in subroutine COEF.
211
APPENDIX E
rle will be used for all points in the leading-edge region, not just those at A and B.
(2) Initially set a counter (ICOUNT) to zero and a damping factor (DAMP) to 1.
rlee
Jb
rleel
-V
rlee2 rl_
T,
_I_-LM,
_u rface tangency
212
/
P' _ /Mean camber line
otential TSONIC H I , -
input points_ / I I ,' /
re
I /'(_%_' by TSONIN
(3)Initiallyestimate the tangency angles /31 and _2 (atpoints 1 and 2, fig. 30)
from the slopes of the two blade surfaces at their end points (A and B in fig. 29).
(4) Initiallyestimate a leading-edge radius, RI, using 0-coordinates at points A
and B:
RI=rleOA'rleSB2 c°sCl+_2/2
(5) With the estimated RI, calculate m-coordinates of tangency points from (fig. 30)
m 1 = RI_.-sin(_l) ]
m 2 = RI_.+ sin(fl2) ]
(6) With SPLINT calls on each of the blade surfaces and m 1 and m2, calculate new
estimates of the tangencypoint 8-coordinates 01 and 02 and surface slopes d01/dm
and d02/dm at these points.
(7) Using rle and the surface slopes, calculate a new estimate of the tangency
angles fll and /32:
213
191 = tan- 1 rle dSl
dm
(8) Estimate new leading-edge radius, using updated tangency point 0-coordinates
and i3's:
rleO1 - rle82
RIne w =
cos _i + cos _2
(9) Check relative change in RI. If tolerance is met, RI is set to RIne w and ac-
cepted. If the tolerance is not met, RI is recalculated as follows:
(DAMP)(RD + RIne w
RI =
DAMP + I.
A0 = 01 cos _2 + 02 cos _1
cos _ 1 + cos _2
and is subtracted from the surface coordinates relative to MERIDL origin to obtain
those relative to TSONIC origin.
214
APPENDIX F
within the blade row to use in this process. However, this density, Pbf' can be calcu-
lated from the free-stream density Pfs by making a blockage correction with the con-
tinuity equation. Iteration is required to solve the equation involved in this calculation.
This calculation is done in subroutine LINDV.
From the assumption of continuous angular momentum and from continuity across
the leading and trailing edges (but allowing Wm to be discontinuous), the following
equation is derived as equation (F1) of part I:
(F1)
tan _bf \pfs_l>itch] firs
By using the relation cos2¢t = 1/(1 + tan2¢l), we can solve for Wb2f to obtain
where
215
, tt _ pt!
Pldeal
Ploss =
vt
Pideal
Equations (F1) to (F3) can be solved iteratively. The procedure to be used depends,
however, on whether the meridional component of velocity is subsonic or supersonic.
Also, it should be noted that with high subsonic velocity (Wm)fs , there may be no solu-
tion possible for (PWm)bf , especially with large blockage.
The equations used for the iterative solution are as follows: Let
(tan _fs)Ble
k 1 =- (F4)
pfs(Pitch)
fsWfs Pit_.._ch_
Ble / 2
k2 = (F5)
1 + tan2/3fs
In the program code, k 1 is the variable CONST1 and k2 is CONST2. For the initial
estimate in the iteration, use Pbf = Pfs' which is already known.
The usual case is when Wm is subsonic. In this case the sequence is to calculate
tan _bf' then 2 , followed
Wbf by the new Pbf" The equations for this (from eq. (F1)
to (F3)) are
(F8)
pbf = pi(1- Ploss)[1- Wb2f + (_r)211/(_/-1)2Cp
2_
TI- --
Equations (F6) to (F8) are then iterated. This will converge to the subsonic solution if
it exists.
The other case is when Wm is supersonic. In this case the sequence is reversed
to calculate Wb2f, followed by the new Pbf" The equations for this (from eq. (F1)
216
to (F3)) are
(F10)
Equations (F9) and (F10) are then iterated. This will converge to the supersonic solu-
tion if it exists.
Win+W2+ 2wk-(wr)
2 21 1/('Y" 1)
PWm = P[ - 2CpT[ (1 Ploss)W m
we obtain
d(pW m)
=p(1- Ploss)[1 Y2 .]=0
dWm (7- 1)CpTJ
Hence,
as expected. But
W -- W t!
217
(F12)
(Win)sonic _,+ 1 -_7+ 1) 9
218
APPEND_ G
There are several instances where It is required for the program to interpolate
from a two-dimensional array of values on a grid. If the grld were }rect_ular, this
would be straightforward. However, usually this is not the case. In most cases the
grid is a rectangular grid that is deformed like a net that has stretched out of shape.
Thus, each region hms four sides, but the corners are not necessarily right _ngles.
The method of interpolationis the simplest possible. First, we find the particular
quadrilateral containing the point, as shown in figure 31. All that is necessary is to
interpolate linearly within the quadrilateral. The interpolation is linear along the
boundary and between corresponding points along the boundary.
An illustration should clarify the manner of interpolation. Suppose it is desired to
find the value at point P in figure 32. It is assumed that values of the function are
known at the corner points A, B, C, and D. The function values at these points will
be designated FA, FB, FC, and F D. Suppose that the point P lies on a line between
points three-quarters of the way along AB and CD, as shown. Also suppose that P
lies on a line between points two-thirds of the way along BD and AC, as shown. Then,
we can interpolate linearly along AB and CD, followed by linear interpolation along
the vertical line through P. If F is the interpolated value of P, we obtain
F =l FA + 1 1
FB rc+ 1 FD
containin_QUadrilateral
",
!snterporla_io n
219
II i..\---"'I
...............
$4 _ _ S
At -3S /"
P4
P3
P2
P1
The same result is obtained if we interpolate linearly along BD and AC, followed by
linear interpolation along the horizontal line through P.
Figure 33 shows a quadrilateral containing a point P0 where it is desired to inter-
polate. It is assumed that the values of the function to be interpolated are known at the
four corners and that the coordinates of the point P0 are given. The function values
are denoted by z, and the coordinates by x and y. Subscripts are used to indicate
the point. There are 14 values required to perform the interpolation: the coordinates
of the four corners (eight values), the coordinates of the interpolation point (two values),
and the function values at the four corners. If these 14 values are known, an equation
for linear interpolation can be derived.
220
P8 _ P4
P3
PO
P5
P2
PI
Figure 34 shows the same quadilateral as figure 33 but with the added lines P5P6
and PTP8 , The line PSP6 passes through the point P0 and is chosen so that
P1P5:PlP3 = P2P6:P2P4. Similarly, P7P8 passes through P0 and PlPT:PlP2 =
P3Ps:P3P4 . Now let
PlP7
fX =_
(GI)
PlP2
PIP5
(O2)
fy = plP3
Y- Y5 Y65
(c,4)
x - x5 x65
221
By using equation (G3), Y5' Y6' x5' and x6 can be expressed in terms of fy and the
known values. For example,
Y5 = Yl + Y51 = Yl - fyYl3
Y5 = Yl - fyYl3
Y6 = Y2 + fyY42
(G5)
x 5 = x I - fyXl3
x 6 = x 2 + fyX42
This line passes through P0' so when x = x0, y = Y0" When this substitution is made
and we multiply through by the denominators, we obtain a quadratic in fy:
2
afy+bfy+ c =0
(GT)
where
a = Y13X42 - x13Y42
c = YolX21 - xolY21
222
2
af x+bf x+ c=0 (G9)
where
a = Y12X43 - x12Y43
c = Y01X31 - x01Y31
If a _ 0 in equation (G7) or (G9), there are two solutions for fx or fy. However,
there will be only one value between zero and 1. When two sides are parallel, a will
be zero and only one solution exists. Caution is needed when a is not zero but is very
small. In this case there is one and only one solution between zero and 1; but if the
usual quadratic formula is used, the answer will be inaccurate. The solution, howeverp
can be accurately calculated by using a binomial expansion.
If we let f represent either fx or fy, the solution to either (G7) or (G9) can be
written as
(GII)
+
When a is zero or small in magnitude, we want the root that is closest to zero. This is
obtained by choosing the minus sign for the last term. Now we expand
1- 4ac_ 1/2
(G12)
1 = 4a_.__qc=
1 - 2a_.__c=2a2c 2 4a3c 3 10a4e 4 =
b2 b2 b4 b6 b8
for 14acl <_b 2. Substitutingequation (GI2) into equation (GII), with the minus sign,
gives
223
c_ ac 2a2c 2 5a3c 3
Equation (G13) is used when ac/b 2 is small. Otherwise, the usual quadratic formula
is used. In the program (i.e., in subroutine LININT and also in subroutine CONTIN),
equation (G13) is used whenever 14acl _< b2/100. Only three terms of the series are
used; the term 5a3c3/b 6 is dropped. This leads to a maximum relative error of less
than 10-7. When [4ac I > b2/100, the quadratic formula will lose no more than two or
three decimal places in accuracy.
There is one further point that must be considered. Up to this point, it has been
assumed that the interpolationpoint is within the overall grid area, and thus we only
need to interpolatewithin a quadrilateral. However, there are cases where extrapola-
tion is necessary. In this case, the nearest quadrilateral is identified,and extrapola-
tion is used. The procedure is similar, but one of the f's must be either negative or
greater than 1. The problem, then, is to determine which f to use. Since the direc-
tion of the extrapolation is known, itis known whether f is negative or greater than I.
For example, suppose it was necessary to extrapolate below the bottom of the grid area.
Then fy must be negative. If only one of the two possible values is negative, the ques-
tion is settled. Ifboth are negative, the larger value (closest to zero) is used.
z7 = zI + fx(Z2- zl)
224
APPENDIX H
SYMBOLS
I
rothalpy, CpT_ - wk, meters2/sec 2
P pressure, N/meter 2
T temperature, K
t distance along orthogonal mesh lines in direction across flow (fig. 25),
meters
225
angle between meridional streamline and axis of rotation (fig. 4, part I), rad
angle between relative velocity vector and meridional plane (fig. 4, part D, rad
7 specific-heat ratio
P density, kg/meter 3
(F angle between s-coordinate line and axis of rotation (fig. 25), rad
overrelaxation factor
Subscripts:
b blade
bf blade flow
cr critical
fs free stream
hub hub
i inlet
le leading edge
mid midchannel
O outlet
S component in s-direction
t component in t-direction
te trailing edge
tip tip
226
tr blade surface facing direction of negative rotation
Superscripts:
227
REFERENCES
7. McCracken, Daniel D. ; and Dorn, William S.: Numerical Methods and FORTRAN
Programming. John Wiley & Sons, Inc., 1964.