SUBROUTINE CROTOR User Guide 28 April 2008 Philip Carter ESOTEC Developments philip (at) esotec (dot) org What is CROTOR? =============== CROTOR automates the manual VPUT/VGET procedure for designing or analysing counter-rotating rotors in XROTOR while providing an effective user interface and reporting. When a rotor filename is specified within CROTOR, the rotor is loaded into XROTOR. The geometry, wake radius, names and imposed slipstream are stored in CROTOR's arrays to be loaded into XROTOR as required. CROTOR converges the dual-rotor system by loading and analysing the forward and aft rotors alternately, the imposed slipstreams being updated after each iteration. When the thrust of each rotor converges, output for both rotors is displayed and the iteration stops. Each rotor can then be run independently in the converged slipstream for closer inspection. To reduce the complexity of multiple rotors and input, a Default Input system is used which allows the user to progress efficiently through a design study. Menu ==== CROT at Top Level: .CROT c> ? INPU Input default CR specifications ROTF f Change forward rotor ROTA f Change aft rotor POWF r Change power - forward rotor POWA r Change power - aft rotor RPMF r Change rpm - forward rotor RPMA r Change rpm - aft rotor VELO r Change flight speed VELW Change slipstream velocity weights POWE r Run CR iteration (spec. power, fixed pitch/rpm) RPM r Run CR iteration (specified rpm, fixed pitch) FWD r Run forward rotor in current slipstream AFT r Run aft rotor in current slipstream DESC Design MIL rotor to current input and slipstream BLEN r Interpolate between loaded rotor geometries ANGL r Change blade angles - current rotor PRPM Fixed pitch/rpm toggle SYNC Synchronize rpms toggle NAME s Set or change CR case name CLCR r Change lift coefficients for MIL design ATMO r Set fluid properties from standard atmosphere CRIT i Change CR iteration limit CCON r Change CR convergence delta (del_thrust/thrust) FORM Toggle between Graded Mom.and Potential Form VRTX Toggle between Graded Mom.and Vortex Form WAKE Toggle between rigid and self-deforming wake DISI Display current CR Default Input and status DISS Display current CR external slipstreams DISV Display current CR average induced velocities DISP Display current prop operating state WRIT f Write current prop operating state to disk file WRIV f Write current induced velocities to disk file INIT Initialize next analysis case VCLR Initialize slipstream velocity profiles REIN Re-initialize rotor to known operating state TERS Toggle between terse and verbose output PLOT i Plot various rotor parameters ANNO Annotate plot HARD Hardcopy current plot SIZE r Change plot-object size .CROT c> Many commands are the same as those in OPER or at Top Level. Only the differences will be explained here. INPU ==== Must be run before any analysis commands become available. Reads in Default Input values analogous to the subsequent seven commands. Can be run later at any time. Note that rotors cannot be designed in CROTOR from scratch. Rotors must initially be loaded from disk. AFT rotor filename 's' sets the same filename as FWD rotor. Since synchronized rpms at 1:1 ratio is the default, when first running INPU the user is asked to enter rpm only once. The rpm ratio can be changed after the Default Input has been entered, or rotor rpms can be set independently (see SYNC). Run DISI at any time to display the current Default Input along with slipstream and rotor status. ROTF ---> RPMA ============== Change Default Input. Self-explanatory. ROTF and ROTA are used to load rotors from disk. If rotors are synchronized, RPMF and RPMA will affect each other accordingly. VELO ==== To maintain stable Default Input, CROTOR imposes its flight speed setting over that imported with rotors or set elsewhere in XROTOR. Settings beyond those covered by Default Input will take the value of the last rotor loaded from disk. Altitude is not imposed but is displayed with Default Input data. VELW ==== Default velocity weights represent the most common case: counter-rotating rotors close together or in a duct. (see XROTOR User Guide) POWE RPM ==== Analogous to the same commands in OPER, while converging a counter-rotating system. Running either POWE or RPM is required to converge a CR system. When the system is converged, CROTOR displays output data for both rotors, along with some system-wide data and an induced- velocities plot for the converged system. (This plot can be accessed later as PLOT 12). No input: Default Input is used. POWE (input): Total power input. Each rotor is assigned input power: (input)/2. RPM (input): Rpm of both rotors (if not synchronized). Rpm of forward rotor (if synchronized). If command input is used, or when dependent variables vary from the Default Input, the Default Input is updated when the system is converged. Henceforth the Default Input will reflect the current converged state until some parameter is changed. POWE and RPM will run at least 6 iterations even if the slipstream is already converged. 2 iterations per rotor are required to set the converged flag, then the iteration runs twice more to display output data. POWE runs different routines according to the state of the fixed pitch/rpm toggle (PRPM) and synchronization toggle (SYNC) (see below). POWE run with fixed pitch and synchronization converges to an approximation of specified total power (being the commmand input or the sum of the Default Input power settings). If the power input settings are then adjusted proportionally, the system will converge more accurately on total input power. FWD AFT ==== Use these commands to run the respective rotors in the current slipstream (converged or not). Equivalent to running RPM in OPER with an external slipstream present, including all output, reporting and plotting. FWD and AFT do not affect the stored converged slipstreams. No input: If the slipstream is converged, output will reflect the specified rotor at the converged CR state (Default Input). FWD/AFT (input): Runs rotor at specified rpm. Messages will remind the user that operation is off the converged state. Use FWD and AFT to switch between loaded rotors. These commands are most useful for looking specifically at one rotor in a converged slipstream. DESC ==== Replaces current rotor with MIL rotor designed to current Default Input and imposed slipstream. Equivalent to designing a rotor in DESI to the same specifications in the same slipstream and returning to CROTOR, but without having to leave CROTOR or reenter input data. The user is asked to enter a new rotor name, is shown the current design CLs and is given a chance to abort. No other input is required. Use CLCR to change root and tip design lift coefficients (see below). A warning is displayed if the slipstream is not converged. BLEN ==== Interpolates between geometries of loaded rotors. The usefulness of this feature remains to be seen. The idea is that a MIL rotor designed in a slipstream will compensate for characteristics of the first rotor to achieve MIL of the system. Hence the rotor geometries are coupled through the slipstream, and the BLEN command can provide a means to redistribute loading, etc. The user is asked for an interpolation factor (FWD 0 <---> 1 AFT), and whether chords, blade angles, or both are to be interpolated. BLEN replaces the current rotor with the interpolated rotor. The BLEN command requires that the loaded rotors have the same radii and blade stations. A graceful exit is provided if this is not the case. PRPM (default: fixed rpm, variable pitch) ==== Toggles between fixed pitch or fixed rpm. Sets analysis mode for POWE. SYNC (default: synchronized at 1:1 ratio) ==== Toggles between synchronized and unsynchronized rpm. Unsynchronized rpm corresponds to rotors that are not mechanically connected, synchronized rpm to rotors that are mechanically connected. Rotors can be synchronized at any rpm ratio. The ratio is set when turning synchronization on. To change the rpm ratio, turn SYNC off then on again. The aft rotor will be adjusted to the correct rpm relative to the forward rotor. With synched rotors, changing either rpm (RPMF or RPMA) will change the other accordingly. The ratio feature is intended to permit this line of inquiry, but more importantly to accommodate practical compromises in transmission geometry. NAME ==== With multiple rotors, naming becomes more important than in stock XROTOR. Five names are stored in CROTOR's variables: the name and filename of each rotor and the CR case name. - Rotor names are set at Top Level or when designing/blending rotors. - Filenames are set when saving rotors. - The CR case name is set in CROTOR. CLCR (defaults: 0.6, 0.6) ==== Sets root and tip lift coefficients for MIL design within CROTOR. CRIT (default: 20) ==== Converging a CR system will rarely take more than 20 iterations unless the system is highly stressed through blade stall or mach effects. Rather than increasing the interation limit, running the same command again will continue converging the slipstream where the previous iteration left off. Note that the POWE command run with synchronized rotors and fixed pitch converges the system twice (first unsynchronized, then synchronized at an averaged rpm), and thus requires more iterations to converge. CCON (default: 0.001) ==== The CR iteration runs until del_thrust/thrust is less than CCON for each rotor (del_thrust being the change in thrust output from the previous iteration on that rotor), then runs twice more to display output. DISI ==== Displays current Default Input along with slipstream and rotor status. Displayed also when Default Input is changed. DISS ==== Displays current external slipstreams at each rotor. A tabular format is used for rotors of identical radii and blade stations; otherwise a serial format is used. DISV ==== Displays current average induced velocities generated by each rotor, along with CR system totals. A tabular format is used for rotors of identical radii and blade stations; otherwise a serial format is used. DISP ==== Displays current rotor operating state. Identical to the same command in OPER. WRIT ==== Writes current rotor operating state to disk. Equivalent to the same command in OPER except that the CR system Default Input is appended. WRIV ==== Writes current average induced velocity profiles to disk. VCLR ==== Zeros the current external slipstream in XROTOR as well as the stored slipstreams in CROTOR. PLOT ==== Plot 12 brings up a combined induced velocities plot for the current converged CR system (displayed also when a CR system is converged with POWE or RPM). Convergence Menu (used also in PARA) ================================================================ When an analysis routine does not converge during a CR iteration, the user is presented with the convergence prompt: ..CONV c> ? Continue AUTO Auto-initialize blade angles and continue ANGL r Change blade angles manually FORM Toggle between Graded Mom.and Potential Form VRTX Toggle between Graded Mom.and Vortex Form WAKE Toggle between rigid and self-deforming wake INIT Initialize next analysis case REIN Re-initialize rotor to known operating state ASET Change AUTO settings STOP Abort and return to CROTOR prompt .CONV c> Most commands duplicate those in OPER and at Top Level. tries to converge the current analysis point, regardless of any changes to the rotor or settings. AUTO is available only for the POWE command with variable pitch. In this mode the analysis routine is sensitive to initial blade angle. In some cases the routine likes to converge from higher loading, in other cases from lower loading. The AUTO command calculates the velocity vector at a specified blade location and rotates the blade to match it before the analysis is run. If that fails, the blade is rotated to progressively greater increments above and below the velocity vector. If the routine fails to converge after a specified number of attempts the user is returned to the convergence prompt. ASET ==== Change AUTO settings: - Maximum number of convergence attempts (default: n = 5). - Maximum deviation from the velocity vector to which the blades will be rotated, in degrees (default 10.0). - Blade location where the velocity vector is sampled (default: 0.7). (Note that this is the relative distance from root to tip, not the radius.) From this information increments are calculated (2*deviation/(n-1)). The blade is rotated through the following sequence: VV VV + incr VV - incr VV + 2*incr VV - 2*incr etc. Entering and leaving CROTOR =========================== When first running CROTOR the INPU command must be issued before any analysis commands become available. Upon leaving CROTOR the currently loaded rotor remains the loaded rotor in XROTOR, including the external slipstream profile. When returning to CROTOR, the name of the loaded rotor is compared to the name of the current rotor in CROTOR. If the names are the same, the current rotor's geometry is automatically updated in CROTOR (whether or not the geometry has been modified). If the filename has changed, this also is updated. Messages are displayed to this effect. If the name of the loaded rotor is not the same as the current rotor in CROTOR, the user is asked to specify a new current rotor filename. Upon returning to CROTER the Default Input remains in place, with the system unconverged. Limitations =========== While the core code should work with rotors of arbitrary geometry, plotting (Plot 12) and blending (BLEN) require identical radii and blade stations. Slipstream and induced velocity data are displayed in serial format when blade stations are dissimilar. ADDENDUM: An approach to designing CR systems ======================================================= 1. Clear slipstreams at Top Level (VCLR). 2. Go to DESI, design a MIL rotor to forward rotor specs and save. 3. Go to CROTOR and enter Default Input. Specify the designed rotor for both forward and aft rotors. 4. Converge the system using POWE or RPM. 5. Forward rotor - options: a. Design a new forward rotor in the converged slipstream (DESC with the forward rotor currently loaded). b. Look at the slipstream profiles at the forward rotor (DISS). Take an approximate average axial induced velocity, weighted towards the tip. Go to DESI (with forward rotor loaded), add this induced velocity to the flight speed (VELO) and design a new MIL rotor at this modified flight speed. Save and return to CROTER. If the rotor name has not changed, CROTOR will update the forward rotor geometry automatically. If the name has changed, save and specify the designed rotor as the forward rotor. 6. Converge the system using POWE or RPM. 7. Aft rotor - options: a. Design a new aft rotor directly in the converged slipstream (DESC). b. If rotor specs are similar, modify the forward rotor in MODI (typically reduce twist), save with a new name and specify as the aft rotor. (This method can be surprisingly effective). Option 7(a) will typically yield an aft rotor with exaggerated chord towards the root as the MIL routines try to deal with the tangential slipstream from the forward rotor. In some cases the resulting designs may be practical and effective, in others not. In this case careful application of the BLEN command may help. ADDENDUM: Modifications to XROTOR Code ====================================== CROTOR can be integrated with XROTOR 7.3 code as follows (line numbers reflect XROTOR 7.3e - other versions may vary and have not been tested). Source: ======= XROTOR.INC Lines 29-58 appended. Declarations and Common. xrotor.f line 39 CALL CRINIT (calls CROTOR initialization) line 119 IF(COMAND.EQ.'CROT') CALL CROTOR (command) line 294 & /' .CROT Counter-Rotation analysis' (menu format) xio.f Subroutine LOAD lines 548 and 554 LFILER = .TRUE. (to return from file errors when loading rotors in CROTOR) plotlib/plt_base.f Recommend commenting out lines 158-161 (redundant in CROTOR). if(LGW_GEN) then if(LGW_CHANGED) write(*,1000) X_WIND, Y_WIND 1000 format(/1x,'X-window size changed to ',f6.2,'" x',f6.2,'"') endif Makefile: ========= Link crotor.f Note: esotec.f requires crotor.f (not vice-versa). Most Defaults can be modified in Subroutine CRINIT =================================================================== ** END: CROTOR.DOC **