); ) j, 3'2”“. M?' "v 2' I, ' X . , «w; 4. w} ,A U. ‘ .: 3. 9‘9 '4 gap: é)- - ‘éwv‘r.~ + 5"" H") VI'I|H O - n I. "V”- 0 ' I Alhg‘ ' ué? ~- ‘ ",H I'L ‘ I. :a‘ n3 '1' . Mg}.- I lbw M. y—H‘» (3 ul‘- -3- - u-‘ g? § 4"“ .t. .rr ‘? 2 ’. -.‘ i’ “' ‘fi‘J-‘UJOAgl—flwe vow ' Q: ~' ." J"#~’Hu’. ”. ... l ‘- v .t '_ H . ”hin‘n .. V “AA: n-P"-l".‘1.“, v T .f.‘.n~i:.~ .‘ .I‘- ° gr :3" W5 3‘." “.6 ..\.’v I ‘1 .“ e) . {3.4330414 ' . '«\. ". *‘III 1%.. ,2 M f r f -‘.’.- This is to certify that the thesis entitled FREQUENCY RESPONSE PROCESSING FOR A VARIETY OF SYSTEM MODELS presented by Geraid A. Gregorski has been accepted towards fulfillment of the requirements for MaSter' S degree in 1985 flc Major professor W014 ML, 1486 0.7639 MS U is an Affirmative Action/Equal Opportunity Institution RETURNING MATERIALS: IVIESI_J Place in book drop to LIBRARIES remove this checkout from w. your record. FINES wiII be charged if book is returned after the date stamped be10w. 5-. A. - 4‘- FBIEUENCT RESPOISE PROIHESIMG I FOR A VARIETY OF SYSTEH HODELS By , Gerald L. Gregor-k1 . A THESIS Sublittod to flichigan Stat. Univor-ity >- . in partIII tultilllont of tho roqutrnlnntn .4 tor tho door.- at ‘ EASTER or screw: ' ' ‘,~4 Depart-Int at flochanicnl Engineering 1985 ABSTRACT FREQUENCY RESPONSE PROCESSING FOR A VARIETY OF SYSTEII IIODELS BY Gerald A. Gregorski Froquency response aethods are cos-only eaployed in the design and analysis of dynalic systems. These techniques can be applied to various types of probleae such as control systea pertorlance and resonance of vibratory systele. An interactive sottuare package has been developed which Hill perfora frequency response processing for lost of the typically encountered aethods of lodeling dynaaic systole. The syste- nodel can be in the tors of a bond graph. a higher-order ditterentiel equation. standard vibrations aatrioes. or a transter function. Output in in the torn ot Bode. Nyquiato or root locus plots. ACKNOWTS .lxeoui-d sun to thank Dr. Ronald Rosenberg for the opportunity to i O ~‘ . undertake this cork and the guidance to eocoeplish it and also the Case ' l l '1. quaupport. i could especially like to express sy gratitude to ey site and ‘ canter tor Cosputer Aided Design for their eaterial and financial JU ’3'. best friend. Christy. for her love. understanding. and support. Your a". nontribution to this work. though unquentifiehle. has been sore valuable f' thanany'other. o “J 11 TABLE OF CONTENTS LIST OF FIGURES Chapter 1. INTRODUCTION 2. THE PACKAGE: CAPABILITIES. STRUCTURE. AND DESIGN 2.1 Capabilities 2.2 Structure 2.3 Design 3. FREQUENCY RESPONSE PROCESSING: HODULE F 3.1 Structure And Flea 3.2 Internal Data Base 3.3 Node Selection And Probles Entry 3.4 Interactive Transfer Function Input 3.5 Calculating The Results 3.6 Displaying And Saving The Results 3.7 Probles Statesent Output And Filing 4. DIFFERENTIAL EQUATION CONVERSION: flODULE C 4.1 Structure And Flow 4.2 Internal Data Base 4.3 node Selection And Probles Entry 4.4 Interactive Differential Equation Input 4.5 Conversion To State Equation Fora 4.6 Probles Stateaent Output And Filing iii Page 20 2O 22 23 24 25 27 I ‘ Page i. a! was up u- pneumonia! 25 z 5.1 Electra-Hydraulic Servoseohsnisa 29 5.2 Three Ilaes Oscillator 45 8.3 Parallel Geared Drive Shafts 57 . " Wham an mansion-nous a: I; as; or more as J ‘ mm T I'P-sfi— nu ORGANIZATION no CALLING mans A1 a, 3‘4" mu r source can: marines 31 Figs. m c sconce con: memos c; » l‘w‘rfl- nmm nus Lia-rues DI .7 fir!» cannon omens LISTINGS £1 ‘ :.-Fi;.uz . f1 :x v “5"; Figu.‘ f‘; ‘ I 4 I I I iv LIST OF FIGURES ‘zl'igure 1. The Package Structure and Plou H Figure 2. Ilodule 1" Structure and Plus Ptpre 3. nodule C Structure and Flow Figure 4. Eleotro-Ilydraul 1c Servosachanise ' upon 5. Root Locu- for Exssple 1 Figure 6. J Bods Plot for Baasple 1 4- Figure .7. mm IIass Oscillator ,llpirs B. Frequency Response for Exasple 2 ~J!Ig_ur_e 9. Parallel Geared Drive Shafts :Jrigpra, 10. ABDATA r11. for Exasple 3 Figaro 1.1. Frequency Response for Ears-pie 3 ‘ I‘JI‘HI .‘ ..- a." V'H‘VEIV'M’ ’. ' A -. ’ .‘ ’5' ‘4. . £1"; 11 21 3| Chapter 1 INTRODUCTION Frequency response methods are powerful tools for the design and analysis of a wide variety of dynamic systems. These systems can be sodeled using a number of techniques. some of which are more suitable or convenient for certain types of systems. In order to use frequency response techniques. the system model must be put in the form of a scalar transfer function. A computer software package has been developed which will perform frequency response processing for systems represented by most of the commonly encountered types of models. The original system model can be in the fore of a bond graphtll. a higher-order differential equation. standard vibrations matrices. or a transfer function. If the original model is not a scalar transfer function. then one is generated from the model using the desired input and output. Output of the software is in the form of Bode. Nyquist. or root locus plots. Since this software is a collection of "stand-alone" modules which can comsunicate through a shared data base and which will be integrated into a larger simulation software in the future. it has not been formally named. The software discussed in this thesis will therefore be referred to as “the package". In addition to its flexible. multi-sodel capability. the package is also totally interactive. very robust. and simple to learn and use. The step-by-step. question and answer format allows anyone with a basic knowledge of the subject of system dynamics to use the package with a minimum of instruction. None of the numerical algorithms used in this package are new or experimental. They are all well established and documented. The contribution of this work has not been to develop new algorithms. but to incorporate proven routines into an integrated frequency response processing software with the aforementioned qualities: i.e. flexible. interactive. robust. and easy-to-use. Although the numerical algorithms will be referred to with only a minimum of discussion. the appropriate references and appendices will be cited for those desiring additional information. The contributions made toward software design and integration will be stressed throughout this thesis. The package is written in FORTRAN and is currently implemented on a PRIHE 750 computer in the A.H. Case Center for Computer Aided Design at hichigan State University. The basic design of the dialogue format and system structure for the package. as well as the numerical algorithms. were taken from SYSKITIZ]. a linear systems analysis software written for micro computers by R.C. Rosenberg and E. Goodman. flush of the code for the package is either original or extensively re-written and modified to take advantage of the greater capabilities of the PRIHE 750 in terms of memory. mass storage. and execution speed. The capabilities. structure. and design of the package will be discussed in Chapter 2. The stand-alone modular concept and shared data base through the file management system will be highlighted. In Chapter 3 the stand-alone module for the frequency response and root locus processing. flodule F. will be discussed in detail. The module for converting ordinary differential equations to state equations. hodule C. is covered in Chapter 4. Chapter 5 consists of several detailed example problems. The examples are selected to illustrate the range of capabilities of the package as cell as to give detailed instructions on the use of the various modules. This chapter is intended to be used as a “pull-out" section for user docuasntation. The integration of ENPDBTI3I into the package. the sodule for bond graph input. is covered variously in Chapters 2.3. and 5. This work is summarized in Chapter 6 and some conclusions are drawn about the utility and applications of the package. Several recommendations for future development are also given. Chapter 2 THE PACKAGE: CAPABILITIES. STRUCTURE. AND DESIGN 2.1 CAPABILITIES The package is capable of performing frequency response processing for physical dynamic systems modeled using bond graphs. higer-order differential equations. standard vibrations matrices. or transfer functions. A scalar transfer function is either generated from the original model using the desired input and output. or it is entered directly as a ratio of two polynomials. These polynomials can be described by their coefficients. roots. or the coefficients of lower-order factors. Both the original model description and the resulting transfer function can be stored in files for later retrieval and re-uae and/or modification. This scalar transfer function can be used to calculate the system's frequency response and root locus. The frequency response results can be plotted in rectangular form. magnitude and phase angle versus frequency. a' Bode plot. or in polar form. a Nyquist plot. The root locus also can be plotted. Tabular output for both types of results can be displayed at the terminal. sent to a printer. or stored in a file. Tabular data also includes information such as the crossover frequency. gain and phase margins. and more. DIFFERENTIAL BOND EQUATIONS GRAPH SINGLE VIBRATION HIGHER MATRIX ‘ORDER FORM v v v MODULE TIME C RESP.a ENPORT A STAT ”3553 EN TRANSFER $335.5 FUNCTION V V 352333?“ V LIBRARY FILE T.Fc STATE ’ EQU- K MODULE F v v ROOT FREQUENCY LOCUS RESPONSE Figure l. The Package Structure and Flow The various modeling techniques which can be handled by the package are often more suitable. convenient. or traditionally used for certain types of systems. Frequency response methods are applicable to the design and analysis of many of these. The mass. damping. and stiffness matrices form of second-order differential equations. for example. is commonly used to model mechanical vibratory systems. The frequency response of such systems is useful in determining resonant frequencies . oscillation magnitudes. and damping ratios for different modes. Although bond graphs are used to model a wide variety of physical systems. they can be especially useful for those containing more than one energy domain. such as electro-mechanical-hydraulic actuators. Since these types of systems are very often subject to feedback control. the use of frequency response techniques is essential. 2.2 STRUCTURE The package consists of three. stand-alone. independent. software modules which communicate through shared data files. The structure of the package is illustrated by the diagram of Figure 1. The main modules are shown by the large ovals while the small ovals represent data storage areas. Interactive inputs to the modules and calculated outputs are shown in the boxes. Double arrows represent primary output paths from the modules. flodule C converts differential equations into state equation form. The differential equation can be in either a single. higher-order or standard vibrations matrix form. User input consists of the coefficients for the single higher-order form and the elements of the sees. damping. stiffness. and forcing matrices for the vibrations form. A state space representation of the system. A. B. C. and D matrices is automatically generated. Both the differential equations and the state equations can be saved in the problem library. The differential equation. the problem description. can be reloaded and modified if desired. The state space data can be read by nodule F to generate a transfer function. The second module of the package. ENFORT I3]. is a commercial software package for the time response processing of bond graphs. The bond graph is entered through its bond. node. and junction structure description and state equations are generated from it. A time response of the selected output states to various input functions is the primary output. The ENFORT program has its own filing system for storing and retrieving bond graph models and time response information which is not shown in the diagram of Figure 1. This is a well established and documented software and a detailed discussion of it is beyond the scope of this thesis. Of primary concern is its ability to communicate with the main processing module through the sharing of state space data. An option in the ENFORT program which allows the user to store the state equations in a formatted data file. called an ABDATA file. is utilized to accomplish this data sharing. Once it’s written to an ABDATA file. the state space data is available for use by nodule F. hodule F is the frequency response processing module of the package. Direct. interactive input to this module is in the form of a transfer function. The transfer function. as discussed earlier. is input as the ratio of two polynomials which can be described by their coefficients. roots. or coefficients of lower-order factors. The file management systes. which is common to both flodules F and C. allows flodule F to read the state equation files created by flodule C and stored in the problem library. nodule F is also able to read the ADDATA files created by ENFORT. The state space data from either module can then be used to generate a transfer function. The transfer function. whether entered interactively or created from state equation data. can be saved in the problem library for later retrieval. Once reloaded it can be processed with or without modifications. Primary outputs from Hodule F are the root locus and frequency response results as discussed in the previous section. Both nodules c and F will be discussed later in more detail. 2.3 DESIGN Uhile the ideas discussed in this section are incorporated in all three modules. they will only be examined in the context of hodules C and F. From the point of view of the package design. the ENFORT module can be thought of as a black box with a bond graph description as input and an ABDATA file as output. flodule F simply reads the file and checks for proper data format and problem dimensions. The package is designed to be totally interactive and easy to use and learn. It is intended that a new user could become relatively competent in its use rather quickly with little chance of getting into trouble. A menu driven. question-and-answer format with safe default answers is used throughout. All inputs from the user are checked for valid type and range. The software will not act on an improper response to a prompt. Extensive error condition checking is also esployed. While it can't be guaranteed as being fool proof. the package is designed to be very robust. It seems highly unlikely that anyone using the package would encounter any problems with error conditions. Common block storage of internal data has been used extensively. host arrays within the common blocks are dimensioned by variable parameters which are defined in a control block. It is a simple task to change various package parameters such as maximum problem order or the number of computed data points that can be stored. It is only necessary to change a single value and then re-compile and link the software. Chapter 3 FREQUENCY RESPONSE PROCESSING: NODULE F The frequency response and root locus calculations for the package are performed in hodule F. This is an independent. stand-alone software which communicates with the other modules of the package through data files stored in the users directory. Its operation is completely interactive using a combination of question-and-answer and menu driven formats. The design and general operation of nodule F will be discussed in this chapter. A detailed description of its operation. along with examples. will be postponed until Chapter 5. 3.1 STRUCTURE AND FLOV The structure and flow paths of flodule F are illustrated in the diagram of Figure 2. Each of the blocks in the diagram performs a specific function through a series of related operations. The program begins in the upper left hand block where the internal data base is initialized. Normal flow proceeds sequentially in a counter-clockwise direction following the heavy arrows. A branching point is encountered upon exit from each of the blocks. The user can either proceed on to the next block. the default. or branch off to the main menu from these points. 11 INITIALIZE LEAVE MODULE F MODULE F osrfLREETM'DSE USER FILE SAVE E PROB. TYPE MANAGEMENT PROBLEM PROBLEM _+> MAIN g» DISPLAY OR TITLE ENTRY MENU SAVE RESULTS LOAD NUMERATOR ABDATA CALCULATE INPUT FILE RESULTS DENOMINATOR INPUT SET THE SET SCALE GAIN RANGE ETYPE Figure 2. hodule F Structure and Flow The main menu acts as the central switching junction of the module. From the main menu it is possible to jump forward or backward to any block. enter the user file management menu. or load an ADDATA file. This branching ability gives the software a high degree of flexibility. The calling tree and file structure of flodule F are shown in Appendix A. Appendix B contains the FORTRAN source code and subroutine descriptions. 3.2 INTERNAL DATA BASE As mentioned in the last chapter. all internal data for the module is stored in common blocks. A list of the common blocks used in flodule F is given in Appendix A and their listings can be found in Appendix E. lost of the variables and arrays are initialized with default values in the first block of the module. By choosing the default for each prompt. it is possible to proceed through the entire program and perform a valid problem. This has the dual functions of contributing to robust operation and of acting as a tutorial device. The common blocks also serve as a dynamic storage area. The problem description. computed results. labels. and more are all retained throughout program execution. The desired data can be altered or viewed at any branch point by going to the appropriate block through the main 3.3 UODE SELECTION AND PROBLEN ENTRY The Uodule F program operates in either a frequency response or root locus mode. The mode is selected in the second block of the normal flow sequence and can be switched at any time by returning to this block. All internal data such as the problem description and title is retained when switching modes. This makes it possible. for example. to compute the root locus of a transfer function. select the desired gain. and compute the frequency response of the mass transfer function. The second block is also where the method of problem entry is selected. The problem can be entered in one of four ways: the transfer function can be input interactively. a data file containing a previously stored transfer function can be reloaded. an ENFORT generated ABDATA file can be read. or a state space data file created by hodule C can be loaded. The loading of transfer function or state space data files is performed by the user file management system. The other file management options are not available at this point because the menu is bypassed. making its operation transparent to the user. If the file management menu is entered through the main menu. the full range of options becomes available. The user file management system menu contains several options for performing various tasks such as creating. deleting. loading. or listing the available files. The system manages both the problem and results files and operates in one of two modes depending on which category of files is to be handled. If the filing system is entered through the main menu. the operating mode is selected by the user. If the filing 14 system menu is bypassed as in the second block. the appropriate mode is automatically set. A separate library file containing the filenames. associated problem titles. and file types is used to bookkeep each category of file. The file type is a code which identifies the type of data contained in the file. This code is used to determine which files can be loaded at a particular point and how they are to be handled if loaded. The ABDATA files are not handled by the filing system because ENPDRT simply writes them to the user directory without keeping any record of them. When a state space problem file or an ABDATA file is loaded. a transfer function is automatically generated from the state equations. If the state equations have multiple inputs and/or outputs. i.e. the column dimension of the input matrix and/or the row dimension of the output matrix is greater than one. the user selects which is to be used. If no output matrix exists. one is formed as an n-dimensional identity matrix. and the user selects the state to be used as output. The transfer function is then formed using the following methodIAJ. The matrix. ISl-Al is formed. where S is the Laplace operator. I is an n-dimensional identity matrix. and A is the state feedback matrix. The inverse of [SI-Al is then pre-multiplied by the selected row of the output matrix and post-multiplied by the selected column of the input matrix. The title for the problem can be altered or viewed in the third block. If a problem file is loaded in the second block. the default title set at initialization is replaced by the title contained in the problem file. The current title is retained until changed and is always saved or listed with the problem and any results. The title not only 15 describes the problem. but also associates the results with the problem from which they were generated. 3.4 INTERACTIVE TRANSFER FUNCTION INPUT The transfer function is in the form of a ratio of two polynomials multiplied by a gain constant. TIS)=KIN(S)/D(S) Each of the polynomials can be described by its coefficients. roots. or coefficients of several lower-order factors. If the polynomial is entered by its coefficients. a root finding routinelSl determines the roots. If it is entered by its roots. the coefficients are computed by another routine. For factored input. the roots of each factor are found and are used to generate the coefficients of the polynomial. Since the coefficients are normalized with respect to that of the highest power. a systes gain is generated from the product of the highest-order coefficients for each factor. Each of the three methods of input yields both the polynomial coefficients and roots. The factored form is not automatically generated because it is non-unique and not required for calculations. If a polynomial is initially described by factored data and the roots or coefficients are later altered. the factored data will still exist and be available. but it will no longer be associated with the problem. The transfer function description can be input. modified. or viewed using the fourth. fifth. and sixth blocks. The user should be aware that any time one of the polynomial input blocks is entered the entire polynosial data base is re-ganerated. The data associated with the polynomial description aethod selected when entering the block is used to generate the rest of the data base. The user should be certain that the polynomial data is correct before leaving one of the polynomial input blocks. 3.5 CALCULATING THE RESULTS The range and type of scale used for the calculations is selected in the seventh block of the sequence and is used for both problem modes. The range of frequencies for frequency processing or gains for root locus calculations is entered along with the number of data points desired over this range. The frequency and gain values for the calculations can be generated on either a logarithaic or linear scale. In the frequency processing aodetBJ. each polynosial is represented as a product of first-order factors of the fore. (S-ROOTi). where each ROOTi is a root of the polynosial and is . in general. complex. If we replace 5. the Laplace operator. by jVi. where 91 is a frequency. each factor becomes a complex number. These complex numbers can be represented in polar form by their aagnitude and angle. The product of the numerator magnitudes. gain constant. and any systes gain. divided by the product of the denoainator aagnitudes gives the the magnitude of the sinusoidal response for each frequency. The sua of the numerator angles minus the sum of the denominator angles gives the phase angle for each frequency. 17 The calculated frequency response is valid for any transfer function entered. lt is the users responsibility to be aware of what the transfer function represents and to interpret the results accordingly. For example. such of the information given with the tabulated results. such as phase and gain margins. is only applicable to feedback control system analysis using the open-loop transfer function. The applications for the root locus modetB] are more restricted. It is used to determine the closed-loop poles of a feedback control system. as a function of system gain. from its open-loop transfer function. it is important that the user understand that the root locus results are only valid for an open-loop transfer function which can be closed by a feedback loop. The open-loop transfer function is in the form of. To(S)-hlG(S)!H(S). where GlS) is the feedforward block. “(5) is the feedback block. and K is the forward path gain. The closed-loop transfer function is in the form of. TclS)=K!G(S)/[1+KlG(S)IR(S)J. The closed-loop poles are the solutions of the equation. KlG(S)!H(S)=-l. This can be put in the form of. KlN(S)+D(S)=O. where N(S) and 0(5) are the numerator and denominator polynomials of the open-loop transfer function. The numerator coefficients are multiplied by the gain and a new polynomial is formed by combining these with the denominator coefficients. The roots of this polynomial are found as the gain is varied to generate the root locus for the closed-loop system. 3.6 DISPLAYING AND SAVING THE RESULTS Once the results are calculated. flow proceeds to the ninth block where they can be displayed or saved in various forms. The tabulated results can be viewed on the screen. sent to a line printer. or saved in a file. The results can also be plotted on the screen and saved in graphics output files. The frequency response results can be plotted in rectangular form. magnitude and phase versus frequency. a Bode plot. or in polar form. a lyquist plot. The root locus can. of course. also be plotted. In addition to the problem title. a separate title can be given to each set of results. This can be useful in identifying any special conditions under which the particular set of results was generated from the problem. The frequency or gain range for results output can be any continuous subset of the total range used for calculations. The results are stored in data files using the user file management system operating in the results mode. The filing system menu is bypassed at this point and its operation is transparent to the user. Just as in the loading of problem files in the second block. The graphics output files are simply created in the users directory and are not handled by the filing systes. They have no further use as far as the package is considered and are usually deleted after a hardcopy output is generated. 3.7 PROBLEN STATEHENT OUTPUT AND FILING The user is given the option of filing and/or listing the problem description in the tenth block of the sequence. The problem statement consists primarily of the polynomial coefficients and roots and the coefficients of any factors. The filing of the problem statement is done transparently through the file management system at this point. The final block gives the option of either leaving the module or returning to the main menu for further work. Chapter A DIFFERENTIAL EQUATION CONVERSION: RODULE C Ordinary differential equations. in either single. higher-order or vibrations matrix form. are converted to state equation form in nodule C. This is an independent. stand-alone software which communicates with the other modules of the package through data files stored in the users directory. Its operation is coapletely interactive using a combination of question-and-answer and menu driven formats just as in nodule F. Since nodules C and F are very similar in terms of structure. flow. design. and operation. such of the material in this chapter is also covered in Chapter 3. However. since nodule C operates independently of the other modules in the package.. a discussion of its design and operation should also be able to stand alone. A detailed description of its operation through examples and interactive sessions will be deferred till Chapter 5. 4.1 STRUCTURE AND FLOU The structure and flow paths of hodule C are illustrated in the diagraa of Figure 3. A specific task. involving a series of related operations. is performed in each of the blocks of the diagram. Normal prograa flow begins in the upper right-hand block and proceeds sequentially following the heavy arrows. 20 21 INFHAUZE MODULE C INPUT M,C,K MATRICES SINGLE 0.5. INPUT L MATRIX MAIN INPUT T'D M E N U . R ‘ DISPLAY OR ”55 F'LE SAVE STATE MANAGEMENT LEAVE MODULE C SAVE PROBLEM Figure 3. nodule C Structure and Flow 22 Flow follows one of two parallel paths after the second block depending on the type of differential equation to be converted. Branching points are encountered after leaving each block. At these points the user is given the option of either proceeding to the next block. the default. or branching off to the main menu. The main menu acts as the central switching junction of the module. It is possible to jump forward or backward to any block or enter the user file management menu from there. The calling tree and file structure of nodule C are shown in Appendix A. Appendix C contains the source code listings and subroutine descriptions. 4.2 INTERNAL DATA BASE All internal data for the module is stored in common blocks. A list of the common blocks used in nodule C is given in Appendix A and their listings can be found in Appendix E. Host of the variables and arrays are initialized with default values in the first block of the module. It is possible to proceed through the entire program and perform a valid problem conversion by choosing the default for each prompt. This has the dual functions of contributing to robust operation and of acting as a tutorial device. The common blocks also serve as a dynamic storage area. The differential equation. state equations. labels. and more are all retained during program execution. The desired data can be altered or viewed by going to the appropriate block through the main menu. 23 4.3 HODE SELECTION AND PROBLEH ENTRY The hodule C program can be used to convert either a single. higher-order or vibrations matrix form of a differential equation to state equation form. The mode in which the program operates is selected in the second block of the flow sequence. The mode can be switched at any time by returning to this block through the main menu. All internal data such as problem descriptions and titles are retained when switching modes. The method of problem entry is also selected in the second block. The differential equation can either be input interactively or read from a previously created data file. The loading of these problem files is performed by the user file management system. The other file management options are not available at this point because the menu is bypassed. This makes its operation transparent to the user. If the file management menu is entered through the main menu. the full range of options becomes available. The user file management system contains several options for performing tasks such as creating. loading. or listing the available files. The system manages both types of differential equation problem files as well as state equation data files. The system operates in one of two modes depending on whether differential equation or state equation files are to be handled. If the filing system is entered through the main menu. the operating mode is selected by the user. If the filing system menu is bypassed. as in the second block. the appropriate mode is automatically set. A library file containing the filenames. associated 24 problem titles. and file types is used to bookkeep the users files. The file type is a code which identifies the type of data contained in the file. Each of the three types of files used in Hodule C has a different code number. This code is used to determine which files can be loaded at a particular point and how they are to be handled if loaded. Since flodule C does not generate any computed results. all three types of files are bookkept by the problem library. State equation problem files are not allowed to be reloaded by flodule C. but all other filing system operations can be performed on them. The problem title can be altered or viewed in the third block which is not shown in Figure 3. If a problem file is loaded in the second block. the current default title is replaced by the title contained in the problem file. The current title is retained until changed and is always saved or listed with both the problem description and the state-space representation. The title not only describes the problem. but also links the differential equation with its state equation form. 4.4 INTERACTIVE DIFFERENTIAL EQUATION INPUT Normal program flow proceeds down one of two parallel paths after the second block depending on which mode is selected. If the problem is in the form of a single. higher-order differential equation. the left path is followed. If the differential equation is in standard vibrations form. the right-hand path is taken. The single differential equation is input as the coefficients of the time derivatives of both the dependent variable and the input. The vibrations matrix form is input as the elements of the mass. damping. stiffness. and input matrices. The T 25 matrices are input and modified using a menu driven set of operations. Options include changing a single element. an entire row or column. or viewing the entire matrix. In either case. the user only proceeds on to the next step when the data is satisfactory. Both of these input paths can be used to input. modify. or view the problem for the current mode. Only the path corresponding to the current problem mode is open. For example. if the program is in the vibrations mode. it is necessary to first change modes before it is possible to view the current single differential equation problem. 4.5 CONVERSION TO STATE EQUATION FORH Any time one of the differential equation input paths are entered. the corresponding state space representation is automatically updated using the problem data for the current mode. If a problem file is loaded in the second block. new state space data is not generated until program flow goes through the proper input path. The data from the problem file becomes the new default values for the prompts and are selected accordingly. Vhen using one of the input paths to only view the current data. care should be taken that it is not inadvertently altered. Only the default values. the current problem data. for the prompts should be used. The state variables for the single. higher-order input mode are selected such that any derivatives of the input are eliminated and the first state variable is the dependent variable of the differential equation. The remaining state variables will be combinations of the first state variable and its derivatives and the input. The only state available through the output matrix is the first since it is the only one of any real interest or practical value. The vibrations form of the differential equationt?) is input as mass. damping. and stiffness square matrices of order N. and an Nxfl input matrix where h is the number of inputs. Since this is a set of N second-order differential equations. the conversion results in 2H state variables/equations. The state vector consists of the displacements and velocities of N masses. State variables are chosen such that the first N states are the mass displacements and the second N states are the time derivatives of the first. the mass velocities. The output matrix is generated such that only the first N states. the mass displacements. may be used as output. Only the mass displacements are usually of interest for frequency response processing. In both of the above cases. the characteristic equation. determinanttSl-Al=0. is formed. A root finding routinelSl. the same as in Hodule F. is used to find the roots of this equation. the system eigenvalues. The eigenvalues are included in the state space data. They are also used by Hodule F to generate the denominator polynomial of the systems transfer function. Only one state space representation exists at any time. It is associated with the problem which has been most recently processed through one of the input paths. After the state equations are generated. normal program flow proceeds to the block where both input paths converge. At this point the state equations and eigenvalues can be displayed on the screen. sent to printer. and/or saved in a file for A 27 use by another module. The saving of state space data in files is done through the file management sytem. The filing system menu is bypassed at this point and its operation is transparent to the user. just as in the second block. The problem title is part of the data in all three options in order to link the state space data with the problem from which it is was generated. 4.6 PROBLEH STATEHENT OUTPUT AND FILING The user is given the option of filing and/or printing the differential equation problem description in the second to last block of the sequence. The problem statement consists of the coefficients of the derivatives for the single input mode. and the mass. damping. stiffness. and input matrices for the vibrations mode. The filing of the problem statement is done transparently through the file management system at this point. The final block of the sequence gives the option of either leaving the module or returning to the main menu for further work. Chapter 5 EXARPLES AND USER DOCUNENTATION The capabilities and operation of the package will be illustrated in this chapter. The three example problems demonstrate both the capabilities of the package and the integration and operation of each of the individual modules. Each example consists of: a physical problem statement with required input information. the problem results. and an interactive problem session. Each interactive session is enhanced with comments and explanations and is intended to emphasize different features of the package and/or module. This chapter is meant to be used as a “pull-out“ section for user documentation. It can be used alone or in combination with chapters 2. 3. and 4. The first example deals with a typical automatic controls problem. lt illustrates most of the main features of Hodule F in some detail. In the other two examples. only certain selected features of Hodule F will be shown in detail. The second example is a classic vibrations problem. It involves both hodules C and F. hany of the details of hodule C are not shown because of its similarity with Hodule F. The final example illustrates the integration of ENPORT into the package through the use of ABDATA files. 28 29 5.1 ELECTRO-RYDRAULIC SERVORECNANISN 'A common type of elsctro-hydraulic servomechanism. such as that used in machine toolsz]. is shown in Figure 4. A servo valve controls the fluid flow to a hydraulic motor. The motor drives a bellscrew which imparts linear motion to a machine slide. The slide position is sensed and summed with the input command to generate an error signal. This signal is the input to the servo valve. The transfer functions of the individual components are combined in a single block diagram. The open-loop transfer function is then determined using block diagram algebra. This example demonstrates the operation of flodule F in detail. The open-loop transfer function is entered interactively through its numerator and denominator polynomials. The root locus mode is selected and the closed-loop poles are computed for a range of gains. A plot of this root locus is shown in Figure 5. The processing mode is switched. a gain is selected from the root locus results. and the frequency response is computed. The Bode plot for the selected gain is shown in Figure 6. The problem statement is then saved in a file before leaving the module. 30 POSITION ' PICK-UP \ Fl; MACHINE SLIDE I ..... HYD‘ )JHHUHIHUIUU “HID MOTOR KM - L— BALL Sc REw/NUT/ \SERVO VALVE , PO ITION DBACK CONTROL 5 FEE \ VALVE MOTOR BALL SCREW 9i + KA A) l ecu .. S a s 12 2 S ’ WV“...I [Wu +W£I§S 4" KFBL PARAMETERS: 4:0.1 , WH=IOO , wv=2oo , KFB=| , DM=5 9 KA='°° OPEN-LOOP TRANSFER FUNCTION: T6)" _e_i _ 0.2'KA _ eo - s [.oos's+ I] [.OOOl-SZ-hOOZ-S-I-l] Figure 4. Electro-Hydraulic Servomechanism 31 ROOT LOCUS PLOT SYSTEM GAIN IS VARIED BETWEEN 1.0% AND 1000.!” m I" :4 “:3: : .‘O ““‘ I’ A ’I d . ‘\‘ ‘ ””’ me. I - - I - - - 3:2— :5 M15 : .0 ”” “\\‘ .. ,1 ,"' ‘ .. \ -m I, E” ;. LL}? -20" I I I I I I I I I I I r I I I I I I I I -2IIII -Isn -m -5a ll 5n REAL AXIS ELECTRO - HYDRA“. IC SERVOMECHAN ISM CLOSED Figure 5. 'LOIP PIlES FROM OPEN-LOG3 T.F. Root Locus for Example 1 rn:3c:—v~:201>£z n1n>NNODULF Ibegin program execution. VRAT KIND OF TERHINAL ARE YOU USING? Iterminal type needed Ito determine if its A: 4006. 4010. 4014 OR OTHER STORAGE TUBE DEVICE Icompatible with the = 4114 Igraphics routines. C: 4025 OR 4027 : 4105. 4107 OR 4109 E: SONETNING ELSE ENTER CROICE:(A=DEF) NODULE F IS AT YOUR SERVICE FOR FREQUENCY RESPONSE AND ROOT LOCOS CALCULATIONS... DO YOU WANT HORE DETAILS? (NO): Ianswer YES if on-line ' Ihelp is desired. DO YOU WANT TO RUN Iproblem mode selection. FREQUENCY RESPONSE? (YES): N Iprompt toggles until one of ROOT LOCOS? (YES): Ithe modes is selected. Iroot locus mods selected. PROCEED ? (YES): Ia branching point. lanswer NO for main menu. INITIAL PROBLEN ENTRY OPTIONS Iproblem entry selection. R: RELOAD A PREVIOUSLY SAVED PROBLEN FILE L: LOAD AN ENPORT GENERATED ABDATA FILE El ENTER A NEU PROBLER INTERACTIVELY (=DEF) ENTER OPTION (E): Iinteractive input selected. Ithe default option. TRE PROBLEN TITLE IS: Idefault problem title. ii! NOODLE F PROBLEH III CHANGE THE TITLE? (NO): Y (enter a new title. ENTER NEV TITLE ON ONE LINE: ELECTRO-RYDRAULIC SERVONECRANISN THE PROBLEH TITLE IS: ELECTRO-HYDRAULIC SERVOHECHANISH CHANGE THE TITLE? (NO): PROCEED? (YES): NUHERATOR ENTRY OPTIONS P: SINGLE POLYNOHIAL (=DEF) F: FACTORED FORH R: ROOTS OF THE POLYNOHIAL H: HELP ENTER OPTION (P): ORDER OF NUHERATOR? ( l): 0 THE NUNERATOR POLYNOHIAL: 5.000E+OO I Silo UANT TO CHANGE IT? (NO): Y ENTER TRE NEU COEFFICIENTS: SGNO ? ( 5.000E+00): .2 VANT TO SEE IT AGAIN? (NO): UANT TO SEE THE ROOTS? (NO): PROCEED ? (YES): DENOHINATOR ENTRY OPTIONS : SINGLE POLYNOHIAL (=DEF) F: FACTORED FORH : ROOTS OF THE POLYNONIAL H: HELP ENTER OPTION (P): F ORDER OF DENOHINATOR? ( 3): 4 (display the new title. (last chance to change it. (another branch point. (select the method for (defining the numerator. (input it as a single poly. (enter order of numerator. (display current numerator (polynomial (the default). (option to change the poly. (enter the new coefficients. (default was 5.00 (options to look at the (polynomial and its roots. (another branch point. (select the method for (defining the denominator. (select factored input. (complete denominator order. ORDER OF FACTOR l? ( 2): 1 THE POLYNOHIAL FOR FACTOR 1 1.000E+00 i Sill 1.000E+OO N SIIO VANT TO SEE ROOTS OF FACTOR VANT TO CHANGE FACTOR 1? (NO): ENTER THE NEU COEFFICIENTS: 5'11 ? I 1.000E+OO): Sifio ? ( l.000E+OO): O UANT TO SEE FACTOR 1 AGAIN? (NO): THE POLYNOHIAL FOR FACTOR 1 1.000E+00 ! Burl 0.000E-Oi n SNNO UANT TO SEE ROOTS OF FACTOR THE ROOTS FOR FACTOR 1: REAL PART IHAG PART 0.000E-01 0.000E-01 UANT TO CHANGE FACTOR 1? (NO): ORDER OF FACTOR 2? ( 2): 1 THE POLYNOHIAL FOR FACTOR 2: 1.000E+00 a Srul 1.000E+00 R SINO UANT TO SEE ROOTS OF FACTOR 2? (NO): UANT TO CHANGE FACTOR 2? (NO): ENTER THE NEU COEFFICIENTS: Sll1 ? ( 1.000E+OO): .005 SIIO ? ( 1.000E+00): UANT TO SEE FACTOR 2 AGAIN? (NO): Y (order of first den. factor. (first factor default poly. (default roots. (enter new first factor. (change default coeff. (display new first factor. (show roots of first poly. (last chance to change it. (order for second den. fact. (default poly. for second. (modify default poly. (enter new first coeff. (show second poly. again. THE POLYNOHIAL FOR FACTOR 2: 5.000E-O3 I 35.1 1.000E+OO I Silo RANT TO SEE ROOTS OF FACTOR 2? (NO): Y (display its roots. THE ROOTS FOR FACTOR 2: REAL PART (NAG PART -2.000E+O2 0.000E-Ol WANT TO CHANGE FACTOR 2? (NO): (last chance to change it. ORDER OF FACTOR 3? ( 2): (select default order. THE POLYNOHIAL FOR FACTOR 3: (display default poly. 1.000E+00 I 5'12 1.000E+00 I SNNI 1.000E+00 ! SINO UANT TO SEE ROOTS OF FACTOR 3? (NO): UANT TO CHANGE FACTOR 3? (NO): Y (enter new third factor. ENTER THE NEV COEFFICIENTS: SiI2 ? ( 1.000E+00): .0001 (change first two coeff. Sill ? ( 1.000E+00): .002 SIPO ? ( 1.000E+OO): UANT TO SEE FACTOR 3 AGAIN? (NO): Y (look at it again. THE POLYNOHIAL FOR FACTOR 3: 1.000E-O4 I 31:2 2.000E-O3 ! S!!! 1.000E+OO I Siao VANT TO SEE ROOTS OF FACTOR 3? (NO): Y (show roots of third fact. THE ROOTS FOR FACTOR 3: REAL PART IHAG PART -1.000E+O1 -9.950E+Ol ~1.000E+01 9.QSOE+01 37 UANT TO CHANGE FACTOR 3? (NO): HART TO SEE ALL OF THE ROOTS? (NO): Y THE DHNOHINATOR ROOTS (POLES): REAL PART IHAG PART 0.000E-01 0.000E-01 '2.000E+O2 0.000E-01 ‘I.OOOE+OI -9.950E+Ol -1.000E+O1 9.950E+01 UANT TO SEE THE POLYNOHIAL? (NO): Y THE DENOHINATOR POLYNOHIAL: 5.000E-O7 * SII4 1.100E-04 I Sil3 7.000E-03 * Suez 1.000E+00 * Sill 0.000E-01 I 31:0 PROCEED ? (YES): SET THE GAIN G... GAIN? ( 0.100E+01): PROCEED ? (YES): SET THE K GAIN RANGE... HINIHUH? ( 1.000E+OO): HAXIHUH? ( 1.000E+01): 1000 THE SCALING IS LOG DO YOU UANT TO CHANGE IT? (NO): PROCEED ? (YES): NURBER OF SOLUTION POINTS? ( 25): 400 ENTER INTEGER FROH 3 TO 100: 50 (last chance to change it. (display all of the (denominator roots. (display the entire (denominator polynomial. (another branch point. (gain of transfer function. (gain of 1 has no effect in (the root locus mods. (another branch point. (set range of gains for (root locus calculation. (put gains on a log scale. (could change it to linear. (another branch point. (number of gains to be (generated across the range. (first entry out of bounds. (must be within limits. , ———‘ PROCEED? (YES): CALCULATING THE ROOT LOCOS. (processing the problem. (closed loop poles being ONE HOHENT. PLEASE... (computed for each gain. RESULT OPTIONS (options for displaying or (saving the root locus data. S: DISPLAY ON SCREEN L: LIST TO PRINTER O: ORITE TO FILE G: PLOT ROOT LOCOS : RETURN TO RAIN RENO : PROCEED(=DEF) ENTER OPTION (P): 5 (display results on screen. SET THE TITLE FOR RESULTS... (results title distinguishes (them from other results. THE RESULTS READING IS: IN! HODOLE F RESULTS iii (default results title. CHANGE THE READING? (NO): Y (change the default title. ENTER A READING ON ONE LINE: CLOSED-LOOP POLES FROH OPEN-LOOP T.F. : THE RESULTS READING IS: (display new title. I CLOSED-LOOP POLES FROH OPEN-LOOP T.F. I ' CHANGE THE READING? (NO): (last chance to change it. SELECT THE GAIN LIHITS (any subset of results. FOR DISPLAY OR PLOTTING... LOU GAIN? ( 1.000E+00): (select entire range. HIGH GAIN? ( 1.000E+O3)= HIT (RETURN) TO START DISPLAY. (start of results output. (one screen full at a time. 38 PROCEED? (YES): CALCULATING THE ROOT LOCUS. ONE HOHENT. PLEASE... RESULT OPTIONS S: DISPLAY ON SCREEN L: LIST TO PRINTER U: URITE TO FILE G: PLOT ROOT LOCOS : RETURN TO RAIN HENU P: PROCEED(=DEF) ENTER OPTION (P): 5 SET THE TITLE FOR RESULTS... THE RESULTS HEADING (5: Pl! HODULE F RESULTS lfii CHANGE THE HEADING? (NO): Y ENTER A HEADING ON ONE LINE: CLOSED-LOOP POLES FROH OPEN-LOOP T.F. THE RESULTS HEADING IS: CLOSED-LOOP POLES FROH OPEN-LOOP T.F. CHANGE THE HEADING? (NO): SELECT THE GAIN LIHITS FOR DISPLAY OR PLOTTING... LOU GAIN? ( 1.000E+00): HIGH GAIN? ( 1.000E+O3): HIT (RETURN) TO START DISPLAY. (processing the problem. (closed loop poles being (computed for each gain. (options for displaying or (saving the root locus data. (display results on screen. (results title distinguishes (them from other results. (default results title. (change the default title. (display new title. (last chance to change it. (any subset of results. (select entire range. (start of results output. (one screen full at a time. ININIIINNNIIININNNIN HODOLE F ROOT LOCOS DATA INIINNIIINNNIINNINNN ELECTED-HYDRAULIC SERVOHECHANISH CLOSED-LOOP POLES FROH OPEN-LOOP T.F. THE GAIN SCALE IS: LOG THE RANGE OF GAINS IS O.1OOE+01 TO O.1OOE+O4 THERE ARE 4 POLES AT: REAL IHAG. 0.000E+OO 0.000E+OO -0.2OOE+03 0.000E+00 -O.IOOE+O2 -0.995E+O2 -0.lOOE+O2 0.995E+O2 THERE ARE 0 ZEROS AT: REAL IHAG. THE POLE EXCESS S 4 THE REAL COORDINATE OF ASYHPTOTE ORIGIN = -O.SSOE+O2 THE ASYHPTOTE ANGLES IN DEGREES: 0.450E+02 0.135E+03 0.225E+03 0.315E+03 VANT TO SEE HORE? (YES): (show another screen full. GAIN REAL PART (HAG. PART 0.100E+01 -0.992E+01 -O.994E+02 -O.992E+01 0.994E+02 -0.200E+03 0.000E+OO -0.200E+00 0.000E+00 0.115E+Ol -O.991E+01 -O.994E+02 -0.991E+01 0.994E+o2 -0.200E+03 0.000E+00 -0.231E+00 0.000E+00 0.133E+01 -0.200E+O3 0.000E+OO -0.990E+01 -0.994E+O2 -0.990E+01 0.994E+02 -0.266E+00 0.000E+OO 0.153E+01 -0.988E+01 -0.994E+02 4O -0.988E+01 0.994E+02 '0.2OOE903 0.000E+OO -O.306E+OO 0.000E*OO UANT TO SEE RORE? (YES): N (and results output. RESULT OPTIONS (return to output menu. (all options operate the S: DISPLAY ON SCREEN (same as screen display. L: LIST TO PRINTER (could also plot the root U: URITE TO FILE (locus and save it in a G: PLOT ROOT LOCOS (graphics file. R: RETURN TO RAIN RENO (just follow the prompts. P: PROCEED(=DEF) ENTER OPTION (P): R (return to main menu. RODOLE F OPTIONS (main menu for Rodule F. (can go anywhere from here. 1: SELECT RODE AND PROBLER ENTRY 2: ALTER THE PROBLER TITLE 3: CHANGE THE NORERATOR 4: ALTER THE DENORINATOR SI CHANGE THE GAIN 6: ALTER FREQUENCY OR LOCOS SCALE 7: CALCULATE RESULTS 8: DISPLAY OR SAVE THE RESULTS 9: PROBLER OR RESULTS FILE RANAGERENT 10: LOAD AN ENPORT ABDATA FILE 11: SAVE PROBLER STATERENT AND RETURN 12: CONTINUE FROR LAST ACTION (=DEF) 13: LEAVE THIS HODOLE PLEASE ENTER OPTION (12): 1 (change program mode. DO YOU UANT TO RUN (select freq. resp. mode. FREQUENCY RESPONSE? (YES): PROCEED ? (YES): N (another branch point. (return to main menu after (changing modes. RODOLE F OPTIONS (menu not shown here (for sake of brevity. PLEASE ENTER OPTION (12): 5 (select a new gain. SET THE GAIN G... 41 GAIN? I 0.100E+01): 60 (set gain according to the (root locus results. PROIOON ? (YES): (another branch point. SET THE FREQUENCY RANGE... (select the range and scale (for frequency response. RINIRUH? ( 1.000E-01): .1 HAXIHUH? ( 2.000E+O3): 1000 THE SCALING IS LOG DO YOU UANT TO CHANGE IT? (NO): PROCEED ? (YES): (another branch point. NORBER OF SOLUTION POINTS? ( 50): 500 (number of frequencies (over selected range. PROGHOO? (YES): (another branch point. CALCULATING THE FREQUENCY RESPONSE. (performing calculations. ONE HONENT. PLEASE... RESULT OPTIONS (back to the results menu. S: DISPLAY ON SCREEN L: LIST TO PRINTER U: URITE TO FILE 3: BODE PLOT N: NYQUIST PLOT R: RETURN TO HAIN RENO P: PROCEEDI‘DEF) ENTER OPTION (P): S (display results to screen. SET THE TITLE FOR RESULTS... (new title for new results. THE RESULTS HEADING IS: (old title is default. CLOSED-LOOP POLES FROH OPEN-LOOP T.F. CHANGE THE HEADING? (NO): Y (enter a new title for (frequency response results. ENTER A HEADING ON ONE LINE: OPEN-LOOP RESPONSE FOR GAINISO THE RESULTS HEADING (3: (display new results title. 42 OPEN-LOOP RESPONSE FOR GAIN850 CHANGE THE HEADING? (NO): SELECT THE FREQUENCY RANGE FOR DISPLAY OR PLOTTING... (select any subset of the (calculated results. LOU FREQUENCY? ( 1.000E-Ol): HIGH FRERUENCY? ( 1.000E+O3): (select entire range. HIT (RETURN) TO START DISPLAY. (start of screen display. NNNNNNNNNNNNNNNNNNN HODULE F FREQUENCY RESPONSE NNNNNNNNNNNNNNNNNNN ELECTED-HYDRAULIC SERVOHECHANISH OPEN-LOOP RESPONSE FOR GAINISO THE FREQUENCY SCALE IS: LOG THE FREQUENCY RANGE IS O.IOOE+00 TO O.IOOE*O4 RAD./SEC. THE NINIHUH NACNITUDE 3 0.1985-04 AT 0.100E+04 HAD./SEC. THE HAXINUN NAGNITUDE 3 0.100E+03 AT 0.100E+OO RAD./SEC. THE CHOSSNVEH FREQUENCY 3 0.IOIE+02 THE PHASE HARGIN I 0.859E*02 THE FREQUENCY AT '180 PHASE SHIFT 3 0.953E+02 THE CAIN HARCIN 8 O.224E+01 OR 0.599E+01 DECIEELS NANT TO SEE NONE? (YES): FREQUENCY HAGNITUDE PHASEIDEG) PHASEIRAD) 0 . 100E200 0 . 1 OOE+03 ‘0 . SOOE'I'OZ '0 . 1 57E+01 0.102E‘00 0.9825+02 “0.900E+02 ”0.157E+01 0.104E+00 0.954E+02 '0.SOOE+02 “0.157E+01 Oolosa+°0 0.9458+02 -0e900E+02 -0e157E+01 0.108E+00 0.929E+02 “0.900E+02 ‘0.157E+01 0.IIOE+OO 0e9125+02 -0e901E*02 .0e157E*01 0.IIZE*00 0.BSSE+02 ’0.901E+02 ‘0.157E+01 0.1145+00 0.879E+02 ‘0.901E+02 ‘0.157E+01 O.IIOE+OO 0.863E+02 O.IIOE+OO O.847E+02 0.120E+00 0.831E+02 0.I23E+OO O.DISE+02 0.125E+OO O.801E+02 0.127E+00 O.7B7E+02 O.I29E+OO O.772E+02 O. I32E+OO O. 755E+02 0.134E+00 O.744£+02 O.I37E+OO 0.731E+02 0.139E*00 0.717E+02 UANT TO SEE RORE? (YES): RESULT OPTIONS SI DISPLAY ON SCREEN L8 LIST TO PRINTER U: URITE TO FILE D! BODE PLOT N8 NYQUIST PLOT R8 RETURN TO RAIN HENU P8 PROCEED(=DEF( ENTER OPTION (P): DO YOU UANT TO LIST 43 -O.901£+02 -O.90(E+02 -0.901£+02 -O.901E+02 -0.901E+02 -0.QOlE+02 -0.901£+02 -O.901£+O2 -O.901£+02 -O.901£+02 -0.901E+02 THE CURRENT PRODLEN STATERENT ON THE PRINTER? (NO): Y READY THE PRINTER AND HIT (RETURN)... DO YOU UISH TO SAVE THE CURRENT PRODLEH STATEHENT IN A FILE? (NO): Y Iii ENTER NANE FOR THE SAVED FILE 5*! ENTER A FILE NAHE (15 CHAR. OR HIT (RETURN) TO EXIT. SERVO.PROB YOU ENTERED FILE NAHE: SERVO.PROB IS THAT CORRECT? (YES): CHECKING DIRECTORY STATUS! PROBLEH'LIB an! DIRECTORY FILE CREATED! NIT (RETURN) TO RETURN TO NENU. -0.157E+01 -0.157E+Oi -O.157E+01 -O.1578+01 -0.157E+01 -O.157E+Ol -O.157E+Oi -0.157E+01 -O.157E+Ol -O.157E+01 -0.157E+Ol OR LESS) PROBLEH'LIB (and screen output. (back to results aenu. (proceed on in prograe. (option to print out the (problee stateeent. (autoaatically goes to (the printer. (save the problea in a tile (tor later use. (the option to save the (results in a tile operates (very sisilar to this. (double check on nese. (library tile created. (hit return and ignore this. A4 in! FILE STORED (N LIBRARY Ira (tile storage contirsed. HIT (RETURN) TO CONTINUE. CANT TO LEAVE TRIS RODULE? (YES): (leave or return to aain. SEE You LATER... (leaving Hodula F progres. 45 5.2 THREE HASS OSCILLATOR A systes of three translating easses interconnected by springs and daspers is shown in Figure 7. This is a classic vibrations problea found in aany texts on the subjectt71. Frequency processing of this systes involves both nodules C and F. This systes is initially described in standard vibrations aatrix fore as shown in Figure 7. These satricss are entered interactively through Bodule C which generates an equivalent state space representation. The displacesents of the assess are autosatically selected as the first three state variables. The state space problea foraulation is then saved in a file before leaving the sodule. The frequency processing and problea file loading options are selected in Rodule F. The state space data stored previously in nodule C is then loaded. The state variable to be used as output. displacesent of the first sass. is selected and the transfer function is generated. The frequency response is calculated and the results displayed. Figure 8. shoes the frequency response of the systes with the position of the first ease as the output. The state space data file can be reloaded and a different state choosen as the transfer function output. 46 ——>Xl r-—1>X2 >X3 :> MI M2 M3 C] C2 C3 MI 0 0 2| C|+C2 ’C2 0 )2] 0 M2 0 ’ Siz'l’ “C2 C2+C3 “(23' *2 o 0 M3 3%; 0 -c3 c3 23 KITKZ -K2 O XI 0 + -K2 K2+K3 «5. x2: 0 [F] 0 ’K5 K3 X3 4 PARAMETERS: . M|:2 , M2:M5=I , KI: K2: K324 , (2': C2=C3=OJ Figure 7. Three (lass Oscillator "DC—hem): "15):? \I m U" G N U" 47 Tl-REE MASS OSCILLATOR VIBRATIONS PROBLEM Yl IS Tl-E OUTPUT COORDINATE L111 [111 llll IjII I ‘acfl-d (.0... p-.-.- ‘FO~e-o-.—. IIII Figure 8. IIWI TIII Frequency Response for Exaaple 2 48 INTERACTIVE SESSION FOR EXAHPLE 2 OK. RON77 SYSNIT)ORODULC (begin prograa execution. HODULE C IS AT YOUR SERVICE FOR CONVERTING DIFFERENTIAL EQUATIONS TO STATE EQUATION FORN... DO YOU WANT RORE DETAILS? (NO): (answer YES if on-Iins (help is desired. DO YOU RANT TD YORK OITR (select problea sods. R.C.K RATRICES? (YES): N (proept toggles until A SINGLE RIGRER-ORDER DIFF. £00.? (YES): N (a soda is selected. R.C.K NATRICES? (YES): Y PROCEED ? (YES): (first branch point. ENTER A NEW PROBLER INTERACTIVELY? (YES): N (select input sethod RELOAD A PREVIOUSLY SAVED PROBLEN FILE? (YES): N (only two choices. ENTER A NEW PROBLER INTERACTIVELY? (YES): (another toggle. THE PROBLER TITLE IS: (default problea title. on: NOODLE C FROBLEN Ill ORANGE THE TITLE? (NO): Y (option to change title. ENTER NEN TITLE ON ONE LINE: ' (enter the new title. THREE HASS OSCILLATOR VBRATIONS PROBLEH ENTER TRE DINENSION OF 2 (2): 3 (the nusber of coordinates. (the default is 2. OPTIONS FOR THE R RATRIX (asnu for operations which (can be perforeed on the A: CHANGE ALL ENTRIES (sass aatrix. R: CHANGE A RON (this ease aenu is used for C: CHANGE A COLURN (every aatrix input. E: CHANGE AN ENTRY (it wont be repeated here. 2: ZERO THE NATRIX L: LOOK AT THE NATRIX T: TO HODULE OPTIONS 49 P: PROCEED I=DEFAULT) ENTER OPTION (P): L THE N NATRIK IS: C1 C2 C3 RI! O.2000E+OI O.4000E+OI 0.0000E+OO R28 0.4000E+Ol 0.9000E+Ol 0.0000E+OO R33 0.0000E+OO 0.0000E+OO O.IOOOE+OI PRESS (RET) KEY TO CONTINUE... OPTIONS FOR THE N HATRIX ENTER OPTION IF): A HIIoI)? I 2.000E+OO)8 NIIo2)? I 4.000E+OO): HIlu3)? I 0.000E-OI)3 OON HIZol)? I 4.000E+OO): HI2u2)? I 9.000E+OO): HI2o3)? I 0.000E-OI): OWO NI3gl)? I 0.000E-Ol): O HI3o2)? I 0.000E-OI): O HI3o3)? I I.OOOE+OO)8 h OPTIONS FOR THE N NATRIX ENTER OPTION (P): L THE R HATRIX IS: C1 C2 C3 RI: 0.2000E+Ol 0.0000E+OO 0.0000E+OO R23 0.0000E+OO O.IOOOE+OI 0.0000E+OO R3: 0.0000E+OO 0.0000E+OO 0.1000E+Ol (display default ease aatrix (on the screen. (return to eatrix senu when (finished viewing astrix. (aatrix senu not shown for .(eake of brevity only. (elect to change all of (the astrix elesente. (enter a new aatrix. (the new satrix is input (elesent by elesent. (return to aatrix senu (after sass eatrix input. (display new ease astrix. (display RASS eatrix. PRESS (RET) KEY TO CONTINUE... (return to satrix senu when (viewing is cospleted. The dasping. stiffness. and input eatrices are entered in the seas eanner as the ease eatrix. The ease senu and procedure are used. The details of the interactive input of the other three eatrices are oeitted to avoid unnecessary repetition. The eatrices are displayed as they were entered. THE C RATRIX (5: (display DARPING aatrix. CI C2 C3 RI: O.2000E+OO -0.IOOOE+OO 0.0000E+OO R2: -0. lOOOE-O-OO O.2000E+OO -O.IOOOE+OO R3: 0.0000E+00 -O.IOOOE+OO O.lOOOE+OO THE X RATRIX IS: (display STIFFNESS satrix. C1 C2 C3 RI: 0.0000E+OI -O.4000E+Ol 0.0000E+OO R2: -O.4000E+OI O.BOOOE+OI -O.4000E*OI R33 0.0000E+OO -O.4000E+OI O.4000E+OI ENTER THE DIRENSION OF F (2): I (enter nusber of inputs. THE L UATRIX (8: (display INPUT astrix. Cl Rl: 0.IOOOE+OI R2: 0.0000E+OO R3: 0.0000E:OO The equivalent state space representation is autosatically generated. The first three states are the ease displacesents and the other three states are the ease velocities. The state space data can now be viewed and/or saved in a problea file for later use by another sodule. The original vibrations aatrix fora of the problea can also be filed 51 later use or aodification by Rodule C. THE A HATRIX IS: CI C2 C3 R13 0.0000E*00 0.0000E+00 0.0000E*00 R23 0.0000E+00 0.0000E+00 0.0000E+OO R33 0.0000E+00 0.0000E+00 0.0000E+00 R43 “0.4000E+0I 0.2000E+OI 0.0000E*00 R53 0.4000E+OI 'O.8000E+OI 0.4000E+OI R33 0.0000E+00 0.4000E+0I “0.4000E+OI C4 C5 C5 RI: 0. IOOOE‘I'OI 0.0000E+OO 0. 0000E+00 R23 0.0000E+00 0.IOOOE+OI 0.0000E+00 R33 0.0000E+00 0.0000E*00 0.IOOOE+OI R¢3 '0.IOOOE+OO 0.5000E“OI 0.0000E+00 R53 0.1000E*00 ‘0.2000E+00 0.I000E+00 R53 0.0000E*00 0.IOOOE+00 -O.IOOOE+OO THE B HATRIX IS: CI R13 0.0000E+00 R23 0.0000E+00 R33 0.0000E*00 R43 0.0000E*00 R5: 0.0000E+00 R53 O.‘OOOE*OI THE EIGENVALUES: VALUE REAL IHAGINARY I ‘I.4II44E-OI '3.35732E*00 2 ‘I.¢IIA4E-OI 3.357325+00 4 -4.99999E‘02 I.99938E+00 5 '5.85523E‘03 “6.41575E’01 6 ‘8.85523E-03 6.41675E-OI UANT TO PRINT THE A.B.C RESULTS AND EIGENVALUES ON THE PRINTER? IND): Y (state feedback aatrix. (state input aetrix. (print the state space (forsulation directly to (the line printer. for 52 READY THE PRINTER AND HIT (RETURN)... DO YOU VISH TO SAVE THE AoDoC HATRICES AND EIGENVALUES IN A FILE? (NO): Y ea! ENTER NAHE FOR THE SAVED FILE 5" ENTER A FILE NAHE (I5 CHAR. OR LESS) OR HIT (RETURN) TO EXIT. OSCILL.ABC YOU ENTERED FILE NAHE: OSCILL.ABC IS THAT CORRECT? (YES): an! FILE STORED IN LIBRARY FF! HIT (RETURN) TO CONTINUE. DO YOU NANT TO LIST THE CURRENT PRODLEH STATEHENT ON THE PRINTER? (NO): Y READY THE PRINTER AND HIT (RETURN)... DO YOU NISH TO SAVE THE CURRENT PRODLEN STATEHENT IN A FILE? (NO): VANT TO LEAVE THIS NODULE? (YES): SEE YOU LATER... If! EXITED NODULE C ii: (output sent after return. (store the state space data (in a file for use with (Rodule F. (data file nase input. (check on file nase input. (file storage confirsed. (dusp vibrations eatrices (directly to line printer. (option to save problea. (leave the prograa. Rodule F is now used to generate a transfer function fros the stored state space data and perfors frequency processing. host of the details of the operation of Rodule F are oeitted here. Only those which are especially pertinent to this problea are included. Any gaps can be filled in by referring to the previous exasple. Rodule F execution begins at the problea entry selection. INITIAL PROBLER ENTRY OPTIONS (select sethod of entering R: RELOAD A PREVIOUSLY SAVED PROBLEH FILE L: LOAD AN ENPORT GENERATED ABDATA FILE E8 ENTER A NEV PROBLEH INTERACTIVELY (BDEF) ENTER OPTION (E): R see ENTER NAHE OF FILE TO BE LOADED 1" ENTER A FILE NAHE (15 CHAR. OR LESS) OR HIT (RETURN) TO EXIT. OSCILL.ABC YOU ENTERED FILE NAHE: OSCILL.ABC IS THAT CORRECT? (YES): CALCULATING THE TRANSFER FUNCTION FROH STATE VARIABLE DATA... NHICH Y TO BE USED? (1): I DATA CONVERTED TO TRANSFER FUNCTION. 5!! USER FILE HAS BEEN LOADED IN! HIT (RETURN) TO CONTINUE. PROCEED ? (YES): THE PROBLEH TITLE IS: THREE HASS OSCILLATOR VIBRATIONS PROBLEH CHANGE THE TITLE? (NO): PROCEED? (YES): NUHERATOR ENTRY OPTIONS P: SINGLE POLYNOHIAL (SDEF) F: FACTORED FORH R: ROOTS OF THE POLYNOHIAL H: HELP ENTER OPTION (P): ORDER OF NUHERATOR? I 2): (the problea description. (reload a state space file (saved in Rodula C. (enter uses of data file. (confira the file nase. (transfer function creation (taking place. (row of output satrix to (be used for transfer funct. (successful conversion of (state space data confirsed. (return to continue. (another branch point. (display the new default (title entered through the (loaded data file. (option to change title. (another branch point. (need to go through here (in order to view the new (transfer function. (select polynosial input. (choose defaults for all (prospte so that problea (is not altered. TRE NURERATOR POLYNORIAL: (display the nuserator. 2.000E-O2 : 8:12 I.OOOE+OO I Susi 3.200E+OI ! SAID THE NUHERATOR ROOTS (ZEROS): REAL PART (HAG PART -A.OOOE*OI -I.105E-02 -A.OOOE+OI I.lO5E-O2 View the denoeinator polynosial using the ease procedure as for the nuserator. Choose defaults to retain transfer function generated fros the state space data. ORDER OF DENORINATOR? ( 6): (again choose all defaults ' (so that problea is only (viewed not altered. TRE DENORINATOR POLYNORIAL: SlIO 8!:5 Sure 3::3 S§§2 S"! 8:50 i.OOOE+OO 4.000E-Ol I.603E+OI 2.000E+00 5.606E+Ol 2.400E+OO 3.2OOE+OI THE DENORINATOR ROOTS (POLES): REAL PART IHAG PART -I.AIlE-OI -3.357E+OO al.411E-Ol 3.357E+OO -5.000E-02 -l.999E+OO -5.000E-O2 l.999E+OO -8.856E-O3 -8.417E-OI -O.856E-O3 8.417E-Ol The frequency response of this systes can now be calculated and displayed as in the first exaaple. A plot of the frequency response is shown in Figure 3. The state space data can be re-entered and a new transfer function generated using a different state as output. This can be accoeplished through the user file eanagssent systes. The file eanagssent senu can be entered fros the aain senu at any branch point. DO YOU NANT TO VORK UITH: PROBLEH FILES? (YES): N RESULTS FILES? (YES): N PROBLEH FILES? (YES): PROBLEH FILER OPTIONS S: SAVE THE PROBLEH IN A FILE U: UNSAVE (LOAD) A PROBLEH FILE C: CHECK DIRECTORY AGAINST EXISTING FILES L: LIST THE DIRECTORY CONTENTS D: DELETE A PROBLEH FILE A: ADD A FILE TO THE DIRECTORY R8 RETURN TO THE RAIN HENU (=DEFAULT) ENTER OPTION (R): L FILES FOR RELOADING HODULE T OR F: SERVO.PROB ELECTRO'HYDRAULIC SERVOHECHANISH OSCILL.ABC THREE HASS OSCILLATOR VIBRATIONS PROBLEH HIT (RETURN) TO RETURN TO HENU. PROBLEH FILER OPTIONS ENTER OPTION (R): U eel ENTER NAHE OF FILE TO BE LOADED I?! ENTER A FILE NAHE (15 CHAR. OR LESS) OR HIT (RETURN) TO EXIT. OSCILL.ABC YOU ENTERED FILE NAHE: IS THAT CORRECT? (YES): OSCILL.ABC CALCULATING THE TRANSFER FUNCTION FROH STATE VARIABLE DATA... VHICH Y TO BE USED? (1)8 2 (start of FILE RANAGERENT. (select the type of files (to be handled. (prospt toggles till YES. (user file eanagssent senu. (list the available files. (shown here only to (desonstrata option. (senu withheld for brevity. (load the state data file. (input file nase. (confira file nase entered. (generate transfer function. (select output variable. DATA CONVERTED TO TRANSFER FUNCTION. (data conversion and file (loading confirsed. it: USER FILE HAS BEEN LOADED Iii RIT (RETURN) TO CONTINUE. PROBLEH FILER OPTIONS ENTER OPTION (R): (return to aain senu. Once in the aain senu the problea can proceed as in the first case with YI as output. This process can then be repeated for the third coordinate. Y3. as output. 57 5.3 PARALLEL GEARED DRIVE SHAFTS The systes shown in Figure 9 consists of two. geared. parallel shafts on bearing supports. An input load torque is applied to the left end with an output load torque at the right. The corresponding bond graph is also shown in Figure 9 along with the paraseters and state variable defenitions. This exasple is taken fros reference 3 and the details of the bond graph processing using ENPORT can be found there. The ABDATA file containing the state space representation generated by ENPORT is shown in Figure 10. The package interfaces with ENPORT through this file. Since Rodule F is covered thoroughly in the first two exasples. seat of the details of its operation will be oeitted here. The option of loading an ABDATA file is selected as the sethod of problea entry. The angular displacesent of the and ease. the sixth state variable. is selected as the output. The left hand torque input is choosen to be the input. The transfer function is generated between the two and is used to coapute the frequency response shown in Figure II. '1 2(- 3 d1A-———44M# Hf» ——->-1n—~TF—->1c—-°—-=- on ——>-ID —='SE2 /\ J /\ /\ l /\q‘ THERE ARE 6 STATE VARIABLES AND 2 INPUT VARIABLES. THE STATE VECTOR... .XI 1) = PIc ) X( 2) - Q(e ) X( 3) a PIg ) X( 4) a O(p ) XI 5) s P(r ) X( 6) - 0(u ) THE INPUT VECTOR... U( 1) 8 EIa ) U( 2) = E(t ) The parameters are: CI: = 3200. N/m 13: I1: 12: R1: R2: 25. N5 25. Ms ERIC-(LIX 100. kg-m**2 14: R3: R4: TF: '4 "I ... momentum ... twist of ... momentum ... twist of ... momentum ... position Cu of Cl o¥ of of II 12 I4 I4 ... driving torque ... load torque 25. Ms 4. swwoxu The inputs are now: SE1: driving torque 882: load torque Figure 9. Parallel Geared Drive Shafts 20. kg-m**2 1200. N/m 40. kg-m**2 25. Ns File: SHAFTS.AB PARALLEL GEARED DRIVE SHAFTS The nusber of state variables: The A estrix l -2.50000E-01 0.00000E-Ol 1.00000E-O2 0.00000E-Ol 0.00000E-01 0.00000E-Ol 0.00000E-Ol 0.00000E-01 0.00000E-01 0.00000E-OI 0.00000E-Ol 0.00000E-01 satrix I.OOOOOE+OO 0.00000E-OI 0.00000E-01 0.00000E-01 0.00000E-Ol 0.00000E-Ol The eigenvalues: Value 0015“”:- Real 0.00000E-Ol -4.24755E-01 -4.24755E-01 -9.I31825+00 -l.520llE-Ol -1.52011E-OI -5.62825E+OO -7.33373E-01 Figure IO. -3.2000OE+O3 0.00000E-01 0.00000E-OI 7.51905E+02 0.00000E-OI 0.00000E-OI 0.00000E-OI 0.00000E-OI 0.00000E-01 0.00000E-01 0.00000E-Ol -1.00000E+OO 0.00000E-01 Isaginary 0.00000E+OO 9.l3182E+00 5.62825£+00 0.00000E-01 59 6. the nusber of inputs: 0.00000E-01 -I.OOOOOE-O2 0.00000E-OI -1.0IISOE+OO -1.I¢286E+03 4.00000E-O2 0.00000E-01 0.00000E-01 1.20000E+O3 0.00000E-OI 0.00000E-01 ABDATA File for Exasple 3 0.00000E-01 0.00000E-Ol 0.00000E-Ol -2.SOOOOE-O2 '5.25000E-01 2.5000OE-02 I I UC-b-OZGIJDZ mm>111 0.004 0.002 200 60 PARALLEL GEARED DRIVE SHAFTS ' OUTPUT GEAR RESPONSE TO DRIVE GEAR INPUT Figure ll. Frequency Response for Exasple 3 I I I I I I II I I I I I I I I I I I I m 4 5 6 7 I0 I ‘\‘ a i x. e - \ I “*~. A ~Q ._ ‘—' . z "N. ... I ‘x. r ‘o ! ‘"“ I I I I I I I I I I I I I I I I I I I I I I I 5 6 7 1 FREQUENCY 51 INTERACTIVE SESSION FOR EXAHPLE 3 Host of the details of the operation of Rodule F are oeitted in this exasple. This session exasple begins at the selection of the problea input sethod. The option for loading a previously created ABDATA file is choosen. A transfer function is generated using the desired input and output. INITIAL PROBLEN ENTRY OPTIONS (problea entry selection. R: RELDAD A PREVIOUSLY SAVED PROBLEH FILE L: LOAD AN ENPORT GENERATED ABDATA FILE E: ENTER A NEH PROBLEH INTERACTIVELY I'DEF) ENTER OPTION (E): L (load an ABDATA file. as! ENTER NAHE OF THE ABDATA FILE iii ENTER A FILE NANE (IS CRAR. OR LESS) (nase of ABDATA file to OR NIT (RETURN) TO EXIT. SNAFTS.AB (to be loaded. YOU ENTERED FILE NANE: SRAFTS.AR (confira selection/spelling. IS THAT CORRECT? (YES): UNICR U TO BE USED AS INPUT? (1): I (select the input. URICN X TO BE USED AS OUTPUT? (I): 6 (select the output. DATA CONVERTED TO TRANSFER FUNCTION. (confirsation of conversion. TNE PROBLEN TITLE IS: (default title read fros the (ABDATA file just loaded. PARALLEL GEARED DRIVE SHAFTS CHANGE THE TITLE? (NO): Display the nuserator and denoeinator polynosial for the transfer function along with poles and zeroes. Use the polynosial entry blocks as described in the previous exasples. 52 ORDER OF NUHERATOR? I 0): THE NUHERATDR POLYNOHIAL: 9.143E'I'OO I SIIO ORDER OF DENORINATOR? ( 5): THE DENORINATOR POLYNOHIAL: l.OOOE+OO I SIIS l.887E+00 I 8::5 1.164E+O2 I SIIA I.371E+02 I SII3 2.688E+03 I SII2 l.943E+03 I Srui 0.000E+00 I SNNO . THE DENORINATOR ROOTS (POLES): REAL PART IHAG PART -4.248E-Ol -9.132E+OO -4.248E-01 9.132E+00 -1.52OE-OI -5.528E+00 -1.520E-01 5.628E+00 -7.334E-01 0.000E+OO 0.000E+OO 0.000E+OO The frequency response can now be cosputed and displayed as desired. The response for this systes is shown in Figure ii. The state space data could be re-entered and a transfer function generated for a different output if desired. Chapter 6 SUNHARY AND RECOHHENDATIONS This software package allows frequency response processing for dynasic systess sodelled by a variety of cosson techniques. The package consists of three independent. stand-alone software sodules which cossunicate through a shared data base. Each of the sodules operates using question-and-answer and senu driven interactive dialogue. None of the nuserical algorithss used is new or experieental. Rather. only tried and proven routines were used. Of prisary concern were software design and the integration of the individual sodules into the package. Particular attention was paid to the qualities of ease-of-use. robustness. and flexibility. as well as future integration of other sodules. All of the initial objectives of this work have been accosplished and the result is a powerful and dependable tool for dynasic systes analysis and design. The package should prove useful not only to the student. but to the practicing engineer as well. Future developsent should be initially directed to the re-design and integration of Nodule T. This sodule allows direct interactive input of state equations. converts transfer functions to state space fore. and perforss ties response processing. The package was designed with the future integration of Rodule T as an isportant consideration. The basic building blocks for Rodule T are available and should be fairly easily assssbled using the structure of Rodule F as a guide. 63 64 The next step would be to coabine all four sodules into a unified dynasic systes aodelling package. A cosson user file eanagssent systes could be used which would handle differential equation. transfer function. and bond graph problea files. all state space data. and results for both frequency and ties processing. ABDATA files would no longer be required. Certain redundancies such as having separate integration routines for both Rodule T and ENPORT could be elieinated if desired. The stand-alone sodular concept could also be retained. Additional features such as block diagras algebra or the root locus for any systes paraseter would prove valuable. 1. 2. 3. A. LIST OF REFERENCES Rosenberg. Ronald C.. Karnopp. Dean C.. ’lntroduction to Physical Systes Dynasics’. RcGraw Nill. I963 SYSNIT - Software Toolkit for Linear Systsss - Operators Nanual. Rosencode Associates. Inc.. RcGraw Rill The ENPORT-S Users Nanual. Rosencode Associates. 1964 Ogsta. Xatsuhiko. ’Rodern Control Engineering’. Prentice-Hall. I970 R.V. Raesing. ’Nuserical Rethods for Scientists and Engineers’. NcGraw Hill. 1962. pp. 356 - 359 Rollingsr. John 6.. Harrison. Howard L.. ’Introduction To Autosatic Controls’. International Textbook Co.. (969 Neirovitch. Leonard. ’Analytical Rethods In Vibrations’. RacRillan Co.. (967 Younkin. George. ’The Vhy of Industrial Servo Drives’. Giddings & Lewis Rachine Tool Co.. Fon Du Lac. VI. Appendix A FILE ORGANIZATION AND CALLING TREES FILES AND SUBROUTINES FOR HODULE F NODULF 81 NNINNNNINNNN HAIN CALLING PROGRAH FOR HODULE F CONTAINS NO SUBROUTINES FBLOKI 84 F8LOK2 B22 FBLOK3 B35 eeaelell NNNNNNNN leans!!! FACTOR Bl? ENTERF B22 FDISP B37 GEGAIN 812 FLEAVE B34 FRESP 842 GETDEN 811 FPROB B23 FSCALE B35 GETERH 85 FRSLT 829 PHHARG B44 GETNUH BS GETABD B31 TL2GET B46 INHELP 814 PRINPY B27 INITLF 86 SAVPRF B26 INPOLY 814 INROOT B15 POLY 819 SEHBL B20 SETUPF B4 TOPHDF 88 TTLGET B6 UHEREF 89 ZEROS B20 FBLOK4 B47 FBLOKS B59 F8LDK6 B70 NNNNNNNN NNNNNNNN NNNNNNNN LOCHAX 857 CHREQ B66 BPLOT B70 LOGRES 856 CHREQA B63 DATAPR 876 LOGSCL 855 CONHAT 862 NPLOT 873 RDISP B49 DET 864 RPLOT 874 RLOCUS B47 GETTFN 859 HPY B65 PROOT 867 FILES AND SUBROUTINES FOR NODULE C HODULC Cl seeeesesss HAIN CALLING PROGRAH FOR HODULE C. CONTAINS NO SUBROUTINES. CDLOKI C4 CBLOK2 C13 sessssss eesssses CLEAVE C12 INHCN C13 ENTERC C6 INPUTL C17 INITLC C5 SGLINP C19 SAVPRC C11 SETUPC C4 SHOVAB ES TOPHDC C6 TTLGET C9 UHEREC C7 CBLOK3 C25 CBLOK4 C39 sseeesss sessssse CPROB C25 CHREQA C42 CRSLT C28 DET C43 DATAPR C33 HLTYCK C41 ELGET C36 HHULT C39 INPUTH C34 PROOT C44 OUTHAT C36 SIHEQ C40 PRINAB C32 SORT C46 PRINYH C30 PRHTX C32 UTILITY FILES COHHON TD BOTH HODULES IOUTIL Dl UNIFIL D13 sessssse ssssssse CHECKY D9 ADAFIL D21 CHRPCK 09 CHKLIB D19 FNAHE DI DELFIL Dl7 GETCHR D7 LODFIL D27 GETINT D3 LSTLIB D15 GETLIN DB SAVFIL D24 GETREL D4 UNIDRV D13 HENU D10 HYCHAR D11 PROCED D11 YES D10 CDHHON BLOCKS sessssseeesss CTRLBK El EIGNBK E6 FACTBK E4 FILRBK E10 FOUTBK E5 INTGBK E9 LABLBK El PARHBK POLYBK RANGBK RESULT ROOTBK ROUTBK RSLTBK SGLIBK TERHBK VIBRDK BRERBBBDCE CALLING TREE FOR HODULE F HODULF SETUPF GETERH INITLF TOPHDF VHEREF ENTERF LODFIL CHKLID FPROB GETTFN CONHAT CHREQA DETIFCN) CHREQ HPY PROOT GETABD CONHAT CHREQA DETIFCN) CHREQ HPY PROOT TTLGET GETNUH INPOLY POLY PROOT ZEROS FACTOR POLY PROOT ZEROS SEHBL INROOT ZEROS SEHBL POLY INHELP GETDEN INPOLY POLY PROOT ZEROS FACTOR POLY PROOT ZEROS SEHBL INROOT ZEROS SEHBL POLY INHELP GEGAIN FSCALE FRESP PHHARG RLOCUS LOGSCL LOGRES PROOT FDISP TL2GET DATAPR SAVFIL CHKLIB FRSLT BPLOT NPLOT RDISP TL2GET LOCHAX DATAPR SAVFIL CHKLIB FRSLT RPLOT UNIDRV SAVFIL CHKLIB FPROB FRSLT LODFIL CHKLIB FPROB GETTFN CONHAT CHREQA DETIFCN) CHREQ HPY PROOT FRSLT CHKLIB LSTLIB CHKLIB DELFIL ADAFIL CHKLIB GETABD CONHAT CHREQA DETIFCN) CHREQ HPY PROOT SAVPRF PRINPY DATAPR SAVFIL CHKLIB FPROB FLEAVE CALLING TREE FOR HODULE C HODULC SETUPC INITLC TOPHDC VHEREC ENTERC LODFIL CHKLIB CPROB TTLGET INHCK INPUTH ELGET OUTHAT SIHEQ HHULT CHREQA DETIFCN) PROOT SORT INPUTL INPUTH ELGET OUTHAT HHULT SGLINP HLTYCK CHREQA DETIFCN) PROOT SORT SHOVAB OUTHAT PRINAB DATAPR PRHTX SAVFIL CHKLIB CRSLT UNIDRV SAVFIL CHKLIB CPROB CRSLT LODFIL CHKLIB CPROB CHKLIB LSTLIB CHKLIB DELFIL ADAFIL CHKLIB SAVPRC PRINYH DATAPR PRHTX SAVFIL CHKLIB CPROB CLEAVE COHHAND FILES FOR COHPILING AND LINKING HODULES FTN77 HODULF -FULLCHECK FTN77 FBLONI -FULLCHECK FTN77 F8LDK2 -FULLCHECK FTN77 FBLOK3 -FULLCHECK FTN77 F8LDK4 -FULLCHECK FTN77 FBLOKS -FULLCHECK FTN77 FBLOK6 ”FULLCHECK SEG LOAD SYSKIT)OHODULF LO HODULF.BIN LO FBLOKl.BIN LO FBLOK2.BIN LO FBLOK3.BIN LO F8LDK4.8IN LO FBLOK5.BIN LO FBLOK6.BIN LO SYSKIT)COHHON.DIR)IOUTIL.8IN LO SYSKIT>COHHON.DIR)UNIFIL.BIN LI AGII LI TEX LI F77LI8 LI VSPOOO NAP 6 QUIT CO -TTY FTN77 HODULC -FULLCHECK FTN77 CBLOKI -FULLCHECK FTN77 C8LOK2 -FULLCHECK FTN77 C8LOK3 -FULLCHECK FTN77 CBLOK4 -FULLCHECK SEG LOAD SYSKIT)NHODULC LO HODULC.BIN LO C8LOKI.8IN LO CDLOK2.BIN LO CBLOK3.BIN LO CBLOK4.8IN LO SYSKIT)COHHON.DIR>IOUTIL.8IN LO SYSKIT)COHHON.DIR)UNIFIL.BIN LI F77LIB LI VSPOOO Appendix B HODULE F SOURCE CODE LISTINGS C C CNNNNNNNNNNNNNNNNNNNNINNNNNNNN flDDULF NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNINNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNII HAIN DRIVING PROGRAH FOR HODULE F. 0000 PROGRAH HODULF O INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)POLYBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)ROOTBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)RANGBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)LA8LBK.TEXT’ INCLUDE ’SYSKIT>COHHON.DIR)RESULT.TEXT’ INCLUDE ’ SYSK I T )COHIION . D I R )RSLTBK. TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)FILR8K.TEXT’ CALL GETERH CALL INITLF CALL TOPHDF IF (SYSFLG) THEN CALL FLEAVE IF (HODFLG) THEN GOTO 10 ELSE GOTO 999 ENDIF ENDIF ENTO 10 1000 HODFLG=.FALSE. CALL VHEREFIJUHPER) GO TOIIO.20.30.40.50.60.70.60.90.95.100.110.115)JUHPER C C-- INITIALIZE C 10 CALL ENTERF IFIHODFLG)GO TO 1000 C C-- GET PRODLEH TITLE C 20 CALL TTLGET IF (HODFLG)GOTO 1000 C C-- GET NUHERATOR C 30 CALL GETNUH IFIHODFLG)GO TO 1000 C C-.- GET DENORINATOR C 40 CALL GETDEN IFIHODFLG)GO TO 1000 C C-- GET GAIN C 50 CALL GEGAIN IFIHODFLG)GO TO 1000 C C-- SET FREQUENCY OR LOCUS GAIN SCALE C 60 CALL FSCALE IFINODFLG)SE TO 1000 C C--- FREQUENCY OR LOCUS CALCULATIONS C 70 IF (FRQYES) THEN CALL FRESP IFIIIODFLG) GO TO 1000 CALL PHHARG ELSE CALL RLOCUS IFIHODFLG) GO TO 1000 ENDIF C C-- OUTPUT DISPLAY C 60 IF (FRQYES) THEN CALL FDISP ELSE CALL RDISP ENDIF IFIHODFLG)@N TO 1000 GOTO 115 C C-- PROBLEH OR RESULTS FILE HANAGEHENT C 90 CALL UNIDRV IF (HODFLG) GOTO 1000 C C-- LOAD AN ENPORT ABDATA FILE C 95 CALL GETABD IF (HODFLG) GOTO 1000 C C-r- LEAVE BLOCK C 115 CALL SAVPRF CALL FLEAVE IFIHODFLG)EE TO 1000 EETD 999 C C-- SAVE PROBLEH DESCRIPTION ON DISK OR PRINTER C 100 CALL SAVPRF GOTO 1000 C C-- CONTINUE TO NEXT BLOCK C 110 IF IIBLK.GE.8)THEN ENTO 1000 ELSE IBLKIIBLKII GOTOI10.20.30.40.50.60.70.115)IBLK ENDIF C 999 CONTINUE END C C CNNNNNNNINNNNNNNNNNNNNNNINNNNRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNN!NNNNNNNNNNNINNNNNNIINNINNNNNNINNNNNNNNNNNN C C C C CINNNNNNNNNNNNNNNNNNNINNNNNNNN FBLOKI NNINNNNNNNNNNNNNINNNNNNNNNNNN CNNNNNNNNNNNNNNNNINNNINNNNNNNNINNNNNNNNNNNINNNNNNNNNNNNNINNNNNINNNN C C C-- DESCRIPTION: -- CONTENTS: SETUPF GETERH TTLGET INITLF TOPHDF VHEREF GETNUH GETDEN GEGAIN INHELP INPOLY INROOT FACTOR POLY ZEROS SEHBL (I(I(IfirlfififICICIfIfICICICI(ICICI .- INDEX! FACTOR GEGAIN GETDEN GETERH GETNUN INHELP INITLF INPOLY INROOT POLY SEHBL SETUPF TOPHDF TTLGET VHEREF ZEROS (ICICICICICICICICICICICICICICICICICICICICICICI(I Sets up and initializes Nodule F. Sets the problea title and paraseters as well as on-line help. Also does all of the interactive input of the transfer function. Also has eain senu. block data to set persanent paraseters detersine tersinal type for graphics enter or change the problea title initialize paraseters and data base on-line help for Nodule F eain senu display and option prospts interactive input of the T.F. nuserator interactive input of the T.F. denoeinator input the systes gain on-line help for problea entry options interactive input of polynosial coefficients interactive input of the polynosial roots input of nus. or den. in factored fora displays a polynosial displays the roots of a polynosial generates a polynosials coeff. fros its roots CNNNNNNNINNNNINNNNNNNNNNNNINNN SETUPF NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNINNNNNINNNNNNNNNNNNNNNNNNNNNNINNNNNNNNINNNNNNNNNNNNNNNI C C C SETS PARAHETERS FOR HODULE F VHICH ARE SPECIFIC C TO IT AND UHICH ARE TO REHAIN UNCHANGED. C VRITTEN BY J. GREGORSKI JANUARY.1965 C C C C C C Css Gee (I (I (ICICICICICICI 10 100 C BLOCK DATA SETUPF INCLUDE 'SYSKIT)COHHON.DIR)FILRBK.TEXT' DATA UANTYPII).VANTYPI2).PRBTYP/1.4.4/ DATA HEADERII).HEADERI2)/1.3l DATA HODULEI’F’I NNNNNNNNNNNINNNNNNNNNNNNNNN GETERH NNNNNNNNNNNNNNINNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN DETHIIIN TYPE OF USER TERHINAL AND USES INFORNATION TO SET BAUD RATE AND TO PREVENT USE OF GRAPHICS ON UNCOHPATIBLE TERHINALS. NODIFIEI BY J. GREGORSKI OCTOBER.1964 SUBROUTINE GETERN INCLUDE ’SYSKIT)COHHON.DIR>TERHBK.TEXT’ INTEGER ITERH LOGICAL OK CALL TERHOOINTERH.NTYPE.NRATE.NERROR) NRATE 3 NRATE/10 URITEII.100) FORNATI/ol.’ UHAT KIND OF TERHINAL ARE YOU USINGT’. I./.’ A: 4006. 4010. 40I4 OR OTHER STORAGE TUBE DEVICE’. I. ' B: 4114’. I. C3 4025 OR 4027’. I. D: 4105. 4107 OR 4I09’. I: E: SURETRING ELSE’: I. ' ENTER CHOICEIIA'DEF) ’.0) CALL HENUIOK.ITERH.'A’.’B’.’C’.’D’.’E’.".”. 2 P IF I.NOT.OK) GOTO IO GOTO (200.200.300.200.300) ITERH OIUIJILINIh‘ C--- THESE TERHINALS ABLE TO PLOT CORRECTLY. C 200 C PLOTIT 8 .TRUE. RETURN C-- NOT ABLE TO PLOT CORRECTLY. C 300 PLOTIT I .FALSE. RETURN END C C CNNNNNINNINNNNNNNNNNNNNNNNNINN TTLGET NNNNNNNNNNNNNINNNNNNNNNNNNINN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNN C C C ENTER OR CHANGE THE TITLE FOR THE PROBLEH. C HODIFIEE BY J. GREGORSKI AUGUST.1964 C SUBROUTINE TTLGET C INCLUDE ’SYSKIT)COHHON.DIR)LABLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ C LOGICAL YES C IBLKI2 C 10 URITEI1.1010)TITLE1 1010 FORHATIII’ THE PROBLEH TITLE IS:’.//.1X.A40//. 2 ’ CHANGE THE TITLE? (NO): ’.0) IF (YESI15.’N’)) THEN VRITEI1.1020) 1020 FORHATI/l’ ENTER NEH TITLE ON ONE LINE:’/) READI1.1030)TITLE1 1030 FORHATIA40) GOTO 10 ENDIF C VRITEI1.2000) 2000 FORHATI/l’ PROCEED? (YES):’.$) IF (YESI23.’Y’)) RETURN NODFLG8.TRUE. RETURN END C C CNNNNNNNNNNNNNNNNNNNNNNNINNNNN INITLF NNNNNNNNNNNNNINNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNINNNNN SET PARAHETERS FOR DEFAULT PROBLEH FORHULATION AS HELL AS INPUT LIHITS.COHPUTATION RANGE.TITLES.ETC... URITTEN BY J.GREGORSKI AUGUST.1964 (ICICICICICI SUBROUTINE INITLF (I INCLUDE ’SYSKIT)CONHON.DIR)CTRLBK.TEXT' INCLUDE ’SYSKIT)COHHON.DIR)RANGBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)POLY8K.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)ROOTBK.TEXT' INCLUDE ’SYSKIT)CDNHON.DIR)FACTBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)LABLBK.TEXT' INCLUDE ’SYSKIT)COHNON.DIR>FILRBK.TEXT’ C C'- START OF INITIALIZATION C NPTS‘25 INDEG=1 IDDEG-3 GAIN-1. NFNUH'I NFDEN=1 C C--- INITIALIZE ALL PROBLEN FORHULATION HATRICES C DO 10 J81.HAXDEG CDEFFNIJ)-1. RNRIJ)8-1. RNIIJ)8O. COEFFDIJltl. RDRIJII-I. RDIIJ)-0. LNDEGIJ)'2. LDDEGIJ)'2. DO 10 I81.HAXCDF CFNFIIrJI'I. CFDFII.J)-1. 10 CONTINUE COEFFNIHAXCOF)31. COEFFDIHAXCOF)81. C C-- DEFAULT PROBLEH FOR POLYNOHIAL ('DEF) INPUT C COEFFNIIIFS. COEFFNI2I'1. COEFFDIII'O. CDEFFDI2II5. COEFFDI3)=2. COEFFDI4I'1. C C-- INITIALIZE OTHER PARAHETERS ETC.... C BLDI-1.E+15 BHI‘1.E+15 SCHIN'I. SCHAXBIO. PRBFIL8.TRUE. FRQYES=.TRUE. SYSFLG=.FALSE. HODFLG=.FALSE. NFCTFG=.FALSE. DFCTFG8.FALSE. LIBNAH=’PROBLENILIB’ TITLEII’III HODULE F PROBLEH III’ TITLE23’III HODULE F RESULTS III' C RETURN END C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 1’0me NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNINNNNNUNNINNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNININNNNNNNN C C C GIVES THE USER A BRIEF OVERVIEV OF NODULE F C CAPABILITITES AND INSTRUCTIONS FOR USE IF C SO DESIRED. OPTION TO LEAVE HODULE AFTER THE C HESSAGE IS DISPLAYED. C HODIFIED BY J. GREGORSKI APRIL.1965 C SUBROUTINE TOPHDF C INCLUDE ’ SYSK I T)COIIIION. D I R)CTRLBK. TEXT’ LOGICAL YES C URITEI1.1077) 1077 FORHATI/l’ HODULE F 15 AT YOUR SERVICE FOR’ 2 I’ FREQUENCY RESPONSE AND ROOT LOCUS’ 3 /’ CALCULATIONS...’.I/. 4’ DO YOU VANT HORE DETAILS? (NO): ’.O) IF (YESI7.’N’)) THEN C C-- INTRODUCTORY TEXT C NRITEI1.111) 111 FORHATI/ISX.’IN HODULE F YOU HAY ENTER’. 2 l.’ TRANSFER FUNCTIONS IN EITHER POLYNONIAL.’. 3 l.’ ROOTS OF THE POLYNOHIAL. OR FACTORED FORH.’) NRITE(1.112) 112 FORHAT(/.5X.’TIS)'GAINI(NUHIS)/DENIS)).’) VRITEI1.113) HAXDEG 113 FORHATI/oSX.’GAIN IS A REAL NUHBER.’. 2 l.5X.’NUH(S) AND DENIS) ARE OF HININUH’. 3 /.5X.’ORDER 0 AND HAXIHUH ORDER ’.12.’.’) URITEI1.114) 114 FORHAT(I.5X.’THE FREQUENCY RESPONSE OR ROOT’. 2 l.’ LOCUS VILL BE CALCULATED FOR A’. 3 l.’ LOG OR LINEAR SCALE.’) VRITEI1.115) 115 FORHAT(/.5X.’YOU HAY DIRECT THE SOLUTION TO’. 2 I.’ THE SCREEN. PRINTER OR DISK. THE ’. 3 I.’ FROSLEH HAY BE SAVED FOR LATER USE’. 4 l.’ BY THIS OR ANOTHER HODULE.’. 5 [’9’ CONTINUE? (YES): ’0.) IF (YESI22o’Y'II THEN GOTO I000 ELSE SYSFLG'.TRUE. ENDIF ENDIF 1000 RETURN END C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN UHEREF NNNNNNNNINNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN DISPLAYS NAIN HERO AND PROHPTS USER FOR OPTION DESIRED.CHECKS THAT IT IS A VALID OPTION. SENDS OPTION SELECTED TO HAIN AS JUHPER. HODIFIEE BY J. GREGORSKI DECEHBER.1964 SUBROUTINE VHEREFIJUHPER) -- HAIN HODULE OPTIONS 000 0000000 NRITEI1.III) 111 FORHATI/l’ HODULE F OPTIONS’./. 2’ '0]! 3’ 1: SELECT HODE AND PROBLEH ENTRY’./. 4’ 2: ALTER THE PROBLEH TITLE’./. 5’ 3: CHANGE THE NUHERATOR’./. 6’ 4: ALTER THE DENOHINATOR’./. 7’ 5: CHANGE THE GAIN’./. 8’ 6: ALTER FREQUENCY OR LOCUS SCALE’) URITEII.912) 912 FDRHATI’ 7: CALCULATE RESULTS’./. 2’ 6: DISPLAY OR SAVE THE RESULTS’./. 7’ 9: PROBLEH OR RESULTS FILE HANAGEHENT’./. 6’ 10: LOAD AN ENPORT ABDATA FILE’./. 3’ 11: SAVE PROBLEH STATEHENT AND RETURN’./. 4’ 12: CONTINUE FROH LAST ACTION (lDEF)’./. 5’ 13: LEAVE THIS HODULE’./. 6’ ’) URITEI1.II3) 113 FORHATI’ PLEASE ENTER OPTION (12): ’.U) JUHPER812 CALL GETINTIJUHPER.1.13.25) RETURN END C C CNNNINNNNNNNNNNNNNNNNNNNNNNNNN GETNUH NNNNNNNNNNNNNNNNNNNNNNNNNNINN CNINN!NNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNINNNRNNNNNNNNNNNNNNNNNNNNN INPUTS THE NUHERATOR OF THE TRANSFER FUNCTION IN EITHER POLYNOHIAL. ROOTS. OR FACTORED FORN. RE-URITTEN BY J. GREGORSKI APRIL.1985 SUBROUTINE GETNUH 0 000000 INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)POLYBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)ROOTBK.TEXT’ INCLUDE ’SYSKIT>COHHON.DIR)FACTBK.TEXT’ INTEIEB ICHECK LOGICAL YES.OK.CHNGFG IBLK83 CHNGFG-.FALSE. 5 NRITE(1.1000) 1000 FORNATII’ NUHERATOR ENTRY OPTIONS’. /’ ’. /’ P: SINGLE POLYNOHIAL (IDEFI’. /’ F: FACTORED FORH’. /’ R: ROOTS OF THE POLYNOHIAL’. I’ H: HELP’. I’ ’. /’ ENTER OPTION (P): ’.O) NOM’UMu CALL HENUIOK.IX.’P’.’F’.’R’.’H’.".”.’ 2 . IF (.NOT.OK) EETO 5 IF (IX.EQ.4) EETO 40 C C-- ENTER THE ORDER OF THE NUHERATOR. VARNING ABOUT CHANGING C--- THE PROBLEH IN POLY. OR ROOT INPUT IF FACTORED DATA EXISTS. C IFIINFCTFG).AND.((IX.EQ.1).OR.(IX.EQ.3))) THEN URITEII.1045) 1045 FORHATI/l.’ ssI UARNING III ’.I I ’ THE EXISTING FACTORED DATA VILL NO LONGER BE VALID IF ’.I + ’ THE NUHERATOR ORDER.POLYNOHIAL. OR ROOTS ARE CHANGEDI’) ENDIF ICHECK'INDEG URITEII.4)INDEG 4 FORHATI/l.’ ORDER OF NUHERATOR? (’.I2.’): ’.U) CALL GETINTIINDEG.0.HAXDEG.14) IF (ICHECK.NE.INDEG) CHNGFG-.TRUE. C GOTO (10.20.30) IX C C--- SINGLE HIGHER-ORDER POLYNOHIAL INPUT C 10 CALL INPOLYI’N’.INDEG.CDEFFN.RNR.RNI.CHNGFG) IF (CHNGFG) NFCTFGI.FALSE. GOTO 999 C C-- FACTORED INPUT C 20 CALL FACTORI’N’.INDEG.RNR.RNI.COEFFN.NFNUH.LNDEG.CFNF) NFCTFG'.TRUE. GOTO 999 C-- POLYNONIAL ROOTS INPUT C 30 CALL INROOTI’N’.INDEG.RNR.RNI.COEFFN.CHNGFG) IF (CHNGFG) NFCTFG-.FALSE. ENTO 999 C C-- READ HELP FILE AND RETURN TO HENU C 40 CALL INHELP GOTO 5 C 999 CONTINUE VRITE(1.12) 12 FORHATI/l.’ PROCEED ? (YES): ’.3) IFI.NOT.YES(22.’Y’))HODFLG=.TRUE. C RETURN END C C CNN!NNNNNNINNINNNNNNNNNNNNNNNI GETDEN NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNIN‘INNIINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINN INPUTS THE DENORINATOR OF THE TRANSFER FUNCTION IN EITHER POLYNOHIAL. ROOTS. OR FACTORED FORH. RE-VRITTEN BY J. GREGORSKI APRIL.1965 000000 SUBROUTINE GETDEN 0 INCLUDE ’SYSKIT)COHHON.DIR)CTRL8K.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)POLYBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)ROOTBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)FACTBN.TEXT’ INTEGER ICHECK LOGICAL YES.OK.CHNGFG IBLKI4 CHNGFG'.FALSE. 5 URITEI1.IOOO) 1000 FORHATII’ DENORINATOR ENTRY OPTIONS’. /’ ’. /’ P: SINGLE POLYNOHIAL (=DEF)’. /’ F: FACTORED FORH’. /’ R: ROOTS OF THE POLYNOHIAL’. /’ H: HELP’. I’ ’. /’ ENTER OPTION (P): ’.O) «announ— CALL HENUIOK.IX.’P’.’F’.’R’.’H’.”.”.’ 2 . IF (.NOT.OK) GOTO 5 IF (IX.EQ.4) ENTO 40 C C... ENTER THE ORDER OF THE DENORINATOR. UARNING ABOUT CHANGING C“‘ THE PROHLEH IN POLY. OR ROOT INPUT IF FACTORED DATA EXISTS. C IFIIDFCTFG).AND.(IIX.EQ.I).OR.IIX.EQ.3))) THEN URITEII.IO45) 1045 FORRATI/lr’ NNN NRRNING NR! ’9’ + ’ THE EXISTING FACTORED DATA HILL NO LONGER BE VALID IF ’.l + ’ THE DENORINATOR ORDER.POLYNONIAL. OR ROOTS ARE CHANGEDI’) ENDIF ICHECK'IDDEG URITEII.4)IDDEG 4 FORHATIII.’ ORDER OF DENORINATOR? I’.I2.’): ’.0) CALL GETINTIIDDEG.0.HAXDEG.I2) IF (ICHECK.NE.IDDEG) CHNGFG'.TRUE. C GOTO (10.20.30) IX C C‘- SINGLE HIGHER-ORDER POLYNOHIAL INPUT C 10 CALL INPOLYI’D’.IDDEG.COEFFD.RDR.RDI.CHNGFG) IF (CHNGFG) DFCTFG8.FALSE. ENTO 999 C C-- FACTORED INPUT C 20 CALL FACTORI’D’.IDDEG.RDR.RDI.COEFFD.NFDEN.LDDEG.CFDF) DFCTFG=.TRUE. EETO 999 C C-- POLYNOHIAL ROOTS INPUT C 30 CALL INROOTI’D’.IDDEG.RDR.RDI.COEFFD.CHNGFG) IF (CHNGFG) DFCTFGs.FALSE. EETO 999 C C--- READ HELP FILE AND RETURN TO HENU C 40 CALL INHELP GOTO 5 C 999 CONTINUE VRITEI1.I2) 12 FORNATI/l.’ PROCEED ? (YES): ’.O) IFI.NOT.YES(22.’Y’))HODFLG=.TRUE. C RETURN END C C Csseseessesssessessessssssssss GSGAIN esesssssessssssssesssssssssss Cseessssessssssesssssseessssssssssssssesseseeeeessssssssssssssessse C C C INPUT SYSTEH GAIN AND CHECK FOR PROPER RANGE. C SUBROUTINE GEGAIN C INCLUDE ’SYSKIT)COHHON.DIR)CTRLBN.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)POLYBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)ROOTBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)RANGBK.TEXT’ LOGICAL YES IBLK85 NRITE(1.62) 62 FORHATI/l’ SET THE GAIN G...’) URITEI1.64)GAIN B4 FORHATII.’ GAIN? (’.E10.3.’): ’.O) C C--- READ GAIN FROH USER C CALL GETRELIGAIN.BLO.BHI.11) C C-- EVALUATE SYSTEH GAIN IN FACTORED FORH C GNICOEFFNIINDEGII) GDSCOEFFDIIDDEG+1) IFIIGN.EQ.O).OR.(GD.EQ.O)) THEN VRITEI1.IOIO) 1010 FORHATI/l’ VARNING III ZERO GAIN IN THE’. 2 /’ NUHERATOR OR DENORINATOR. PLEASE’. 3 /’ REVISE THE COEFFICIENTS.’) HODFLG'.TRUE. RETURN ENDIF A8ALOGIOIABSIGAIN)) BSALOGIOIABSIGN)) C8ALOGIOIABSIGD)) IF (IAIB-C).GT.15.) THEN VRITEII.1000) 1000 FORHATI/l’ VARNING III OVERALL SYSTEH GAIN’. 2 I’ IS TOO LARGE. PLEASE REVISE THE’. 3 I’ GAIN OR COEFFICIENTS.’) HODFLGI.TRUE. RETURN ENDIF SYGAIN‘GAINIGN/GD NRITEI1.66) 86 FORHATI/l.’ PROCEED ? (YES): ’.9) IF(.NDT.YES(22.’Y’))HODFLG=.TRUE. CONTINUE RETURN END CNNNNINNNNNNNNNNNNNNNNNNNNNNNN INHELP NNNNNNNNNNNINNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNINNNNNNNNNNNNNNNNNNNI (I (ICICICICICICI 10 20 30 40 50 GIVES THE USER A BRIEF OVERVIEV OF THE INPUT OPTIONS FOR THE TRANSFER FUNCTON NUH./DEN. EXPLAINS THE USE OF POLY..ROOT. AND FACTORED INPUT. VRITTEN BY J. GREGORSKI APRIL.1965 SUBROUTINE INHELP CHARACTERI3 ANSVER URITEII.10) FORHATI/l’ IN HODULE F THE TRANSFER FUNCTION CAN BE ENTERED’ + /’ INTERACTIVELY USING ONE OF THREE DIFFERENT HETHODS.’ + 1’ IT IS NOT NECESSARY TO USE THE SAHE HETHOD FOR BOTH’ + I’ THE NUHERATOR AND THE DENONINATOR.’) NRITE(1.20) FORHATI/l’ 1. SINGLE POLYNOHIAL8’ + /’ INPUT OF A SINGLE. HIGHER-ORDER POLYNOHIAL. THE’ + /’ POLYNOHIAL IS DESCRIBED BY ITS COEFFICIENTS.’) URITEI1.30) FORHATI/l’ 2. FACTORED FORH:’ + /’ INPUT IS IN THE FORH OF ONE OR HORE FACTORS VHICH’ I /’ ARE INPUT AS INDIVIDUAL POLYNOHIALS.’) VRITE(1.40) FORHATI/l’ 3. ROOTS OF THE POLYNOHIAL:’ + /’ INPUT OF THE ROOTS OF THE SINGLE POLYNOHIAL.’) URITEI1.50) FORHATI/l’ THE SINGLE POLYNOHIAL AND ITS ROOTS ARE ’ + /’ AUTOHATICALLY UPDATED TO REFLECT CHANGES HADE THROUGH’ I /’ ANY OF THE INPUT OPTIONS. FACTORED DATA ENTERED VHILE’ + /’ IN OPTION 2 VILL NOT NOT BE UPDATED TO REFLECT CHANGES’ + /’ NADE LATER THROUGH THE OTHER OPTIONS. IF THIS OCCURS’ + I’ THE FACTORED DATA VILL NOT BE VALID UNTIL RE-ENTERED.’) NRITEI1.1110) IIIO FORHATIII.’ HIT (RETURN) TO RETURN TO INPUT NENU. ’.O) C C READII.’(A3)’) ANSVER RETURN END CNNNNNNNNNNNNNNNNNNINNNNNNNINN INPOLY NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNINNNNNNNNINNNNNNNNINNNNNNNNNNNNNNNNNNNINNNNNINNNNNNNNN (ICICICICICICI INPUT AND DISPLAY COEFFICIENTS OF THE POLYNOHIAL. USED BY GETNUH N GETDEN FOR INPUT IN POLYNOHIAL FORH. GIVES THE OPTION TO CHANGE VALUES AND CHECKS FOR VALIDITY. VRITTEN BY J. GREGORSKI APRIL.1985 0000 (I 30 1060 1080 1085 40 1090 999 C C LABEL :ALPHA NAHE OF VECTOR PORDER :ORDER OF POLYNOHIAL VECTOR :VECTOR OF COEFFICIENTS SUBROUTINE INPOLYILABEL.PORDER.VECTOR.RPART.IPART.CHNGFG) INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)RANEBK.TEXT’ CHARACTERII LABEL INTEGER PORDER REAL VECTORIHAXCDF).RPARTIHAXDEG).IPARTIHAXDEG).CHECK LOGICAL YES.CHNGFG CALL POLYILABEL.PORDER.VECTOR.1) URITEI1.1040) FORHATI/l.’ VANT TO CHANGE IT? (NO): ’.I) IFIYESI15.’N’))THEN URITEI1.1060) FORHATII.’ ENTER THE NEV COEFFICIENTS:’./) DO 40 I8PORDER+1.I.-1 CHECKBVECTORII) NRITEII.lO80)I-1.VECTOR(I) FORHATI’ SII’.II.’ ? I’.1PE10.3.’): ’.8) CALL GETRELIVECTORII).BLO.BHI.17) ' IFICHECK.NE.VECTOR(I)) CHNGFG=.TRUE. IFII.LE.PORDER)GO TO 40 IFIVECTORII).NE.O)GO TO 40 URITEII.1085) FORNATII.’ LEADING COEFFICIENT NUST NOT’./ + ’ BE ZERO. PLEASE START AGAINI’) SN TD 30 CONTINUE VRITEI1.1090) FORHATII.’ VANT TO SEE IT AGAIN? (NO): ’.O) IFIYESIII.’N’))GO TO 10 END IF IFIPORDER.EQ.O)GD TO 6 CALL PROOTIPORDER.VECTOR.RPART.IPART.1) CONTINUE URITEI1.7) FORHATI/I.’ VANT TO SEE THE ROOTS? (NO): ’.0) IFI.NOT.YES(13.’N’))GO TO 999 CALL ZEROSILABEL.PORDER.RPART.IPART.1) RETURN END CNN!NNNNNNNNNNNNNNNNNNNNNNNNNI INROOT NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNN C C 0 0000 11 12 C INPUT OF ROOTS OF NUN. OR DEN. POLYNOHIAL. USED BY BOTH GETNUH & GETDEN. VRITTEN BY J. GREGORSKI APRIL.1985 SUBROUTINE INROOTILABEL.PORDER.RPART.IPART.VECTOR.CHNGFG) INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)CONHON.DIR)RANGBK.TEXT’ REAL RPARTIHAXDEG).IPARTIHAXDEG).VECTORIHAXCOF).CHECK.RGAIN INTEGER PORDER LOGICAL OK.YES.CHNGFG CHARACTERII LABEL CALL ZEROSILABEL.PORDER.RPART.IPART.1) NRITEI1.1) FDRHATII.’ CHANGE THEN? (NO): ’.0) IFIYESI20.’N’))THEN IFIPORDER.GT.O)THEN 181 URITEI1.2) FORHATII.’ ENTER THE NEN ROOTS:’) CHECK=RPARTIIl VRITEII.3)I.RPART(I) FORHATII’ REAL PART’.I3.’? (’.1PE10.3.’): ’.3) CALL GETRELIRPARTII).BLO.BHI.12) IFICHECK.NE.RPART(I)) CHNGFG=.TRUE. IFII.LT.PORDER)THEN CHECK‘IPARTII) NRITEII.4)I.IPART(I) FORNATI’ IHAG PART’.I3.’? (’.1PE10.3.’): ’.3) CALL GETREL(IPART(I).BLO.BHI.12) IFICHECK.NE.IPART(I)) CHNGFG8.TRUE. IFIIPARTII).NE.0.)THEN I=I+I RPARTII)8RPARTII-1) IPARTII)=-IPARTII-1) NRITEII.II)I.RPARTII) VRITEI1.12)I.IPART(I) FORHATII’ REAL PART’.I3.’8 ’.1PE10.3) FORHATI’ IHAG PART’.I3.’= ’.1PE10.3) END IF ELSE IPARTIIIIO. END IF ISIII IFII.LE.PORDER)GO TO 10 END IF URITEI1.5) FORHATII.’ VANT TO SEE AGAIN? (NO): ’.9) IFIYESI14.’N’))GO TO 20 END IF C-- SAVE GAIN IF PROBLEH NOT CHANGED OR SET TO 1. IF IT HAS. C-- THEN HULTIPLY POLYNOHIAL BY THE SAVED GAIN. C C IF (CHNGFG) THEN RGAIN'I. ELSE RGAINIVECTORIPORDER+1l ENDIF CALL SENBLIPORDER.RPART.IPART.VECTOR.OK) IF(.NOT.OK)GO TO 20 DO 50 I81.PORDER+1 VECTORII)8RGAINIVECTORII) NRITEII.6) FORHATII.’ UANT TO SEE THE POLYNOHIAL? (NO): ’.O) IFI.NOT.YES(5.’N’))GOTO 999 CALL POLYILABEL.PORDER.VECTOR.1) RETURN END CNNNNNNNNNNNNNNNNNNNNNNNNNINNN FACTOR NNINNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 000000 130 INPUT OF POLYNOHIAL IN FACTORED FORN. USED BY BOTH GETNUH & GETDEN. VRITTEN BY J. GREEERSKI APRIL.1985 SUBROUTINE FACTORILABEL.PORDER.RPART.IPART.VECTOR. + NFND.LNDDEG.CFNDF) INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)RANGBK.TEXT’ REAL RPARTIHAXDEG).IPARTIHAXDEG).VECTORIHAXCOF) REAL ROOTRIHAXDEG).ROOTI(HAXDEG).COEFF(NAXCOF). + CFNDFINAXCOF.HAXDEG).FGAIN INTEGER PORDER.FCTORD.NFACT.COUNT.NFND.LNDDEGIHAXDEG) LOGICAL OK.YES CHARACTERII LABEL COUNT80 NFACT'I IFIPORDER.EQ.0) THEN FCTORDIO ELSEIFIIPORDER-COUNT).EQ.1) THEN FCTORD-l ELSE FCTORDILNDDEGINFACT) ENDIF DO 130 J'I.HAXCOF COEFFIJI8CFNDFIJ.NFACT) URITEII.110) NFACT.FCTDRD 110 FORHATII.’ ORDER OF FACTOR’.I2.’? I’.I2.’): ’.0) CALL GETINTIFCTORD.0.PORDER-COUNT.15) C C-- INPUT POLYNOHIAL FOR EACH FACTOR C'“ DISPLAY POLY. AND/OR ROOTS IF D‘IRED C 10 CALL POLYI’F’.FCTORD.COEFF.NFACT) II CALL PROOTIFCTORD.COEFF.ROOTR.ROOTI.I) URITEII.1040) NFACT 1040 FORNATII.’ UANT TO SEE ROOTS OF FACTOR ’.I2.’? (ND): ’.8) IF I.NOT.YEBI15.’N’)) GOTO 99 CALL ZEROSI’F’.FCTORD.ROOTR.ROOTI.NFACT) 99 CONTINUE URITEII.1050) NFACT 1050 FORHATII.’ UANT TO CHANGE FACTOR ’.I2.’? (NO): ’.0) IFIYESIIS.’N’))THEN 30 NRITEII.1060) 1060 FORHATII.’ ENTER THE NEH COEFFICIENTS:’./) DO 40 I‘FCTORD+AVIO-l URITEIIrIOGOII'IOCOEFFIII 108° FORRATI’ SNN’OIIO’ T (’91PEIO.3.’)3 ’..I CALL GETRELICOEFFII).BLO.BHI.I7) IFII.LE.FCTORD)GO TO 40 IFICOEFFII).NE.0IGO TO 40 URITEII.1085) 1085 FORHATII.’ LEADING COEFFICIENT NUST NOT’./ I ’ BE ZERO. PLEASE START AGAINI’) GO TO 30 40 CONTINUE URITEIIoIOSO) NFACT 1090 FORHATII.’ VANT TO SEE FACTOR ’.I2.’ AGAIN? (NO): ’.$) IFIYESIII.’N’))GO TO 10 EETO 11 END IF C C-* STORE FACTOR ROOTS AND ADVANCE FACTOR AND ROOT COUNTERS C-- ALSO STORE FACTORED FORHAT INFORHATION C DO 75 J'COUNTII.COUNT+FCTORD RPARTIJ)'ROOTR(J-COUNT) IPARTIJ)8ROOTI(J-COUNT) 75 CONTINUE LNDDEGINFACT)'FCTORD DO 135 J81.HAXCOF 135 CFNDFIJ.NFACT)8COEFF(J) COUNTBCOUNT+FCTORD NFACTBNFACTII IF (COUNT.LT.PORDER) GOTO 500 C C--- ALL FACTORS ENTERED C NFNDBNFACT-I URITEII.2090) 2090 FORHATII’ VANT TO SEE ALL OF THE ROOTS? (NO): ’.8) IF (.NOT.YESI15.’N’)) GOTO I50 CALL ZEROSILABEL.PORDER.RPART.IPART.1) C C-- RETRIEVE THE GAIN FROH FACTORED DATA. GET THE POLYNOHIAL. C-- AND NULTIPLY POLYNOHIAL BY THE FACTORED GAIN. C 150 FGAIN'I. DO 100 J'1.NFND 100 FGAINIFGAINICFNDFILNDDEGIJ)+1.J) CALL SEHBLIPORDER.RPART.IPART.VECTOR.OK) IF(.NOT.OK)GO TO 10 DO 105 I81.PORDER+1 105 VECTORII)=FGAINIVECTORII) URITEI1.6) 6 FORHATII.’ VANT TO SEE THE POLYNOHIAL? (NO): ’.3) IF(.NOT.YES(5.’N’))ENTO 999 CALL POLYILABEL.PORDER.VECTOR.I) RETURN END (1:1 §§I1 CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN POLY NNNNNNNNNNNNINNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNINNNNNNNNNNNNNNNNNININNNNNNNN DISPLAYS THE COHPLETE POLYNOHIAL FOR THE NUHERATOR. DENORINATOR. OR INDIVIDUAL FACTORS. URITTEN BY J. GREGORSKI APRIL.1985 (ICICICICICI SUBROUTINE POLYILABEL.PORDER.VECTOR.NFACT) (I INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INTEGER PORDER.NFACT REAL VECTORIHAXCOF) CHARACTERII LABEL IF (LABEL.EQ.’N’) THEN URITEII.1000) 1000 FORHATI/l’ THE NUHERATOR POLYNOHIAL:’./) ELSE IF (LABEL.EQ.’D’) THEN URITEI1.1010) 1010 FORHATI/l’ THE DENORINATOR POLYNOHIAL:’./) ELSE IF (LABEL.EQ.’F’) THEN VRITEI1.IO20) NFACT 1020 FORHATI/l’ THE POLYNOHIAL FOR FACTOR ’.12.’:’./) ENDIF DO 20 IIPORDER.O.-1 20 URITEII.1025)VECTOR(I+1).I 1025 FORHATI2X.1PE10.3.’ I SII’.Il) C RETURN END C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ZEBOS NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNINNINNNNNNNNNNNI (I (ICICICICICI 1000 .1010 1020 11 8 30 C C C DISPLAYS ZEROS OF THE POLYNOHIAL FOR THE NUHERATOR. DENORINATOR. OR AN INDIVIDUAL FACTOR. RE-URITTEN BY J. GREGORSKI APRIL.1985 SUBROUTINE ZEROSILABEL.INDEG.RNR.RNI.NFACT) INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INTEGER INDEG.NFACT REAL RNRIHAXDEG).RNI(HAXDEG) CHARACTERII LABEL IF (LABEL.EQ.’N’) THEN VRITEI1.1000) FORHATI/l’ THE NUHERATOR ROOTS (ZEROS):’./) ELSE IF (LABEL.EQ.’D’) THEN VRITEI1.1010) FORHATI/l’ THE DENORINATOR ROOTS (POLES):’./) ELSE IF (LABEL.EQ.’F’) THEN VRITEI1.1020) NFACT FORHATI/l’ THE ROOTS FOR FACTOR ’.12.’:’./) ENDIF URITEII.II) FORNATI’ REAL PART IHAG PART’) DO 30 H'I.INDEG URITEI1.8)RNRIH).RNIIH) FORHATIIX.1PE10.3.5X.IPEIO.3) CONTINUE RETURN END CNNNNNNNNNNINNNNNNNNNNNNNNNNNN SEHBL NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNN CICICICICICICI (I EEHERATES POLYNOHIAL COEFFICIENTS FOR DESIRED ROOTS. CALLED FROH FACTOR.ASKS FOR NEV ROOTS IF REQUIRED COEFFICIENTS BECOHE TO LARGE. HODIFIED BY J. GREGDRSKI DECEHBER.1984 SUBROUTINE SEHBLIN.RR.RI.CF.OK) INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INTEGER JIHAXCOF) REAL RRIHAXDEG).RI(HAXDEG).CF(HAXCOF) LOGICAL OK OK'.TRUE. CFIN+I)'I.0 DO 14 H'I.N SUHR'0.0 L-I JIII'I GO TO 2 I JILI'JILIII 2 IFIL.EQ.H) GOTO 5 DO 4 I'LIO'I 4 JII+1)'J(I)+I 5 PRR'I.0 FRI-0.0 DO 7 I'I.H N'JII) TEHPR'PRR PRR‘-PRR'RRIK)*PRIIRIIK) PRli‘TENPRIRI(K)-PRIIRRIK) C C-- HAGNITUDE PROTECTION C IFIABSIPRR).GT.I.E15)GO TO 50 IFIABSIPRI).GT.I.E15)GO TO 50 7 CONTINUE SUHR=SUNR+PRR DO 6 I'IOH L-H-III IFIJIL).LT.(N-H+L)) GOTO I 6 CONTINUE 14 CFIN-H+1)'SUNR RETURN C 50 URITEI1.2000) OK‘.FALSE. 2000 FORHATI/l’ COEFFICIENT HAGNITUDE TOO LARGE.’. 2 /’ PLEASE HODIFY THE ROOTS.’) RETURN END C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNINNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNINNNNNNNNNNNNN C C C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN FBLOKZ INNNNNNNNNNNNNNNNNNNNNNNNNINN CNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNINNNNNNNNNNNNNNNNNINNNNNNNNNN C C C--- DESCRIPTION: C Selection of the prograa soda and type of original C problea. Perforss reading and writing of various problea C and results files as well output to the printer. C C--- CONTENTS: C ENTERF sode selection and problea entry C FPROB reads or writes problea files C SAVPRF writes problea statesent to a file or printer C PRINPY used by SAVPRF to write to printer C FRSLT reads or writes results files C GETABD reads an ENPORT generated ABDATA file C FLEAVE exit fros Nodule F C C--- INDEX: C ENTERF C FLEAVE C FPROB C FRSLT C GETABD C PRINPY C SAVPRF C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ENTERF NNINNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNINNNNNNNNNNININNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN BLOCK FOR PERFORHING DATA RELOAD FROH FILE. IF DESIRED. ALSO DETERHINES IF ROOT LOCUS OR FREQUENCY RESPONSE CALCULATIONS ARE TO BE PERFORHED. NRITTEN BY J. GREGORSKI HARCH.1985 SUBROUTINE ENTERF (I (ICICICICICICI INCLUDE ’SYSKIT)COHNON.DIR)CTRL8K.TEXT’ INCLUDE ’SYSNIT)COHHON.DIR)FILRBK.TEXT’ LOGICAL YES.OK IBLK=1 URITEI1.1010) 1010 FORHATI/l’ DO YOU VANT TO RUN’) 100 VRITEI1.1020) 1020 FORHATI’ FREQUENCY RESPONSE? (YES): ’.8) IF (YESI11.’Y’)) THEN FRQYESI.TRUE. GOTO 1 ENDIF URITEI1.IO30) 1030 FORHATI’ ROOT LOCUS? (YES): ’.O) IF IYESIIQ.’Y’)) THEN FRQYES'.FALSE. GOTO I ENDIF EBTD 100 1 HODFLG=.FALSE. URITEI1.150) 150 FORHATI/l.’ PROCEED ? (YES): ’.3) IF(.NOT.YES(22.’Y’)) THEN HODFLG-.TRUE. RETURN ENDIF C 5 URITEI1.1000) 1000 FORHATII’ INITIAL PROBLEN ENTRY OPTIONS’. 1 l’ 2 I’ 3 l’ 4 l’ 8 l’ 6 l’ R: RELOAD A PREVIOUSLY SAVED PROBLEH FILE’. L: LOAD AN ENPORT GENERATED ABDATA FILE’. E: ENTER A NEV PROBLEH INTERACTIVELY (IDEFI’. ENTER OPTION (E): ’.O) C‘LL nm‘ox’IXP’R’I.L’O.E’P"O”9.'V 2 0 IF (.NOT.OK) ENTO 5 GOTO (10.20.30) IX C-- RELOAD A SAVED PROBLEH FILE 10 PRBFIL'.TRUE. LIBNAN8’PROBLEHILIB’ CALL LODFIL GOTO 50 C-- LOAD AN ENPORT ABDATA FILE C 20 CALL GETABD GOTO 50 C C-- CONTINUE AND ENTER PROBLEH INTERACTIVELY C 30 RETURN C 50 HODFLG=.FALSE. VRITEI1.150) IFI.NOT.YESI22.’Y’))HODFLG=.TRUE. RETURN END C C CNNNNNNNINNNNNNNNNNNNNNNNNNNNN FPROB NNNNNNNNNNNINNNINNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNN READS OR VRITES PROBLEH FILES FOR HODULE F. CAN READ FILES CREATED BY HODULES T AND F. FILES CREATED IN HODULE T ARE CONVERTED TO THE TRANSFER FUNCTION FORHAT OF HODULE F. CALLED BY SAVFIL OR LODFIL FROH UNIFIL.FTN URITTEN BY J. GREGORSKI HARCH.1985 SUBROUTINE FPROBIFILNAH.READIN.ERROR) 0 000000000 INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)COHNON.DIR)LABLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR>POLYBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)ROOTBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR>FACTBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)RANENK.TEXT’ CHARACTERIIS FILNAH INTEGER IHOD LOGICAL BADFIL.BADDAT.READIN.ERROR LUN'5 ERRORI.FALSE. C C-- CREATE NEV FILE OR READ OLD PROBLEN FILE. C IF (.NOT.READIN) THEN C C-- BEGIN VRITING PROBLEH TO NEN FILE. C . OPENILUN.FILE-FILNAH.ERR3991.STATUSI’UNKNOUN’. 2 FORHi’UNFORHATTED’) IHOD=4 VRITEILUN.ERR'991)IHOD NRITEILUN.ERR=991)COEFFN.COEFFD URITEILUN.ERR-991)INDEG.IDDEG URITEILUN.ERR=991)GAIN URITEILUN.ERR=991)TITLE1 NRITEILUN.ERR=991)RNR.RNI.RDR.RDI NRITEILUN.ERR=991)SYGAIN URITEILUN.ERR=991)SCHIN.SCHAX.NPTS.SCLOG VRITEILUN.ERR=991)NFCTFG.DFCTFG IFI.NOT.NFCTFG) GOTO 10 VRITEILUN.ERR=991)NFNUN.LNDEG VRITEILUN.ERR=991)CFNF 10 IFI.NOT.DFCTFG) GOTO 20 VRITEILUN.ERR=991)NFDEN.LDDEG URITEILUN.ERR=991)CFDF 2O ENDFILEILUN) CLOSEILUN.STATUS=’KEEP’) SOTO 999 ELSE C-- BEGIN READING INFORHATION FROH FILE SPECIFIED C OPENILUN.FILE-FILNAH.ERR'991.STATUSB’OLD’. 2 FORHt’UNFORHATTED’) READILUN.END'991.ERR'99I)IHOD C Cr- READ TRANSFER FUNCTION TYPE PROBLEH FILE C IFIIHOD.EQ.4)THEN READILUN.END=991.ERR=991)COEFFN.COEFFD READILUN.END8991.ERR=991)INDEG.IDDEG READILUN.END=99I.ERR8991)GAIN READILUN.END'991.ERR8991)TITLEI READILUN.END=991.ERR=991)RNR.RNI.RDR.RDI READILUN.END=991.ERR8991)SYGAIN READILUN.END=991.ERR'991)SCHIN.SCHAX.NPTS.SCLOG READILUN.END3991.ERR8991)NFCTFG.DFCTFG IFI.NOT.NFCTFG) GOTO 30 READILUN.END8991.ERR=991)NFNUH.LNDEG READILUN.END=991.ERR8991)CFNF 30 IFI.NOT.DFCTFG) GOTO 40 READILUN.END=991.ERR=991)NFDEN.LDDEG READILUN.END=991.ERR'991)CFDF 40 CLOSEILUN.STATUS=’KEEP’) C ELSE IF (IHOD.EQ.1) THEN C C-- STATE SPACE FORHULATION. USE GETTFN TO CONVERT. C-- FILE IS CLOSED BY GETTFN C CALL GETTFNIBADFIL.BADDAT.LUN) IF (BADFIL) GOTO 991 IF (BADDAT) THEN VRITEI1.1010) 1010 FORHATI/l’ UNABLE TO CONVERT THIS DATA TO A’. 2 /’ TRANSFER FUNCTION SUCCESSFULLY.’) ELSE VRITEI1.1015) 1015 FORNATI/l’ DATA CONVERTED TO TRANSFER FUNCTION.’) ENDIF SCHIN-O. IF (FRQYES) SCHINBI. SCHAXIIO. NPTS'II SCLOG-.FALSE. ELSE CLOSEILUN.STATUSI’NEEP’) ERROR=.TRUE. VRITEI1.997) 997 FORHATI/l’ ssVARNINGse THIS FILE IS NOT VALID’./. 2 ’ INPUT FOR HODULE F. I CANNOT READ IT.’./. 3 ’ PLEASE TRY ANOTHER PROBLEN FILE.’) ENDIF ENDIF ENTO 999 C 991 ERROR'.TRUE. URITEI1.993) FILNAH 993 FORHATIII’ see ERROR III THE FILE: ’.A15./. 2 ’ IS NOT USABLE. CHOOSE ANOTHER. ’) CLOSEILUN.STATUSI’XEEP’) C 999 RETURN END C C--- DUHHY PROBLEH READING SUBROUTINES FOR HODULES T AND C C-- ADDEI TO AVOID LOAD NOT COHPLETE FROH CALLS IN UNIFIL. C SUBROUTINE CPROBIFILNAH.READIN.ERROR) CHARACTERIIS FILNAH LOGICAL READIN.ERROR NRITEII.IOO) 100 FORHATI/l’ THIS IS THE PROBLEH READER FOR HODULE C.’ I /’ YOU SHOULD NOT BE HEREI’) ERROR8.TRUE. RETURN END SUBROUTINE TPROB(FILNAN.READIN.ERROR) CHARACTERIIS FILNAH LOGICAL READIN.ERROR NRITEI1.100) 100 FORHATI/I’ THIS IS THE PROBLEH READER FOR HODULE T.’ + /’ YOU SHOULD NOT BE HEREI’) ERROR'.TRUE. RETURN END C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN SAVPRF NNNNINNNNNNNNNNNNNNNNNNNNNNIN CRINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN IT QUERIES THE USER. AND VRITES INFORNATION TO A PRINTER OR FILE IF REQUESTED. THEN RETURNS TO CALLING PROGRAH FOR CONTINUATION OR EXIT. VRITTEN BY J. GREGORSKI HARCH.1985 0000000 SUBROUTINE SAVPRF 0 INCLUDE ’SYSKIT)COHHON.DIR)FILRBK.TEXT’ LOGICAL YES CHARACTERI3 ANSVER C NRITEII.1000) 1000 FORHATI/l’ DO YOU VANT TO LIST’. 2 I’ THE CURRENT PROBLEH STATEHENT’. 3 /’ ON THE PRINTER? (NO): ’.O) IF (YESI14.’N’)) THEN URITEI1.1010) 1010 FORNAT(//’ READY THE PRINTER’. 2 /’ AND HIT ...’.$I READ(1.’(A3)’) ANSUER CALL PRINPY ENDIF C URITEI1.101I 101 FORHATII’ DO YOU UISH TO SAVE THE CURRENT’./. 2’ PROBLEH STATEHEUT IN A FILE? (NO)! ’.01 IFIYESIIE.’N’I)THEN PRBFIL8.TRUE. LIBNAfli’PROBLEHGLIB’ CALL SAVFIL ENDIF RETURN END C C CIINNNNNNNINNNNNNNNNNNINNNINN! PRINPY NNNNNNNNNNNNNINNINNNINNNNNNNN CNNINNNNNNNNNNNINNNNNNNINNNINNNINNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNil URITES THE CURRENT PROBLEH DESCRIPTION DIRECTLY TO THE PRINTER DURING PROGRAH EXECUTION. DATAPR IS USED TO SET UP THE PRINTER. URITTEN BY J. GREGORSKI HARCH.1985 SUBROUTINE PRINPY 0 0000000 INCLUDE ’SYSNIT>COHHON.DIR>CTRLBN.TEXT’ INCLUDE ’SYSKIT>COHHON.DIR>POLYBK.TEXT’ INCLUDE ’ SYSK I T>COHIION. D I R>ROOTBK. TEXT’ INCLUDE ’SYSKIT>COHHON.DIR>FACTBK.TEXT’ INCLUDE ’ SYSK I T>COIIIION. D I R>RANGBN. TEXT’ INCLUDE ’SYSNIT>COHNON.DIR>LABLBK.TEXT’ CHARACTERflfi SCALE LUN813 CALL DATAPR URITE(LUN.1015) 1015 FORHATI/l’ ti! HODULE F PROBLEN DESCRIPTION Ifii’) URITE(LUN.102OI TITLEI 1020 FORHATI/l’ THE PROBLEH TITLE ISS’.//.1X.A40) IFI.NOT.NFCTFG)GOTO 13 DO 21 NFACT81.NFNUN URITEILUN.1031)NFACT 1031 FORHATI/l’ NUHERATOR FACTOR ’.I2.’:’./I DO 21 I‘LNDEG(NFACT).O.-1 21 URITE(LUN.1040) CFNF(I+1.NFACT).I 1040 13 1030 20 1051 31 14 1050 1060 2010 2020 2030 2040 2050 3004 3005 3010 4000 3 FORRATI2X.1PE10.3.’ ! Sfll’.I1) URITE(LUN.1030) FORHAT(/l’ THE NUHERATOR POLYNOHIALS’./) DO 20 I'INDEG.0.-1 URITE(LUN.1040) COEFFN(I+1).I IFI.NOT.DFCTFG)GOTO 14 DO 31 NFACT81.NFDEN URITEILUN.1051)NFACT FORHAT(//’ OENOHINATOR FACTOR ’.I2.’8’./I DO 31 I'LDDEG(NFACT).0.-1 HRITECOHHON.DIR>CTRLBK.TEXT’ INCLUDE ’SYSNIT>COHHON.DIR>RESULT.TEXT’ INCLUDE ’SYSKIT>COHHON.OIR>RSLTBK.TEXT’ INCLUDE ’ SYSK I T)COIIIION. D I R>RANGBK. TEXT’ INCLUDE ’ SYSK I T>COHIION. D I R)LABLBK. TEXT’ C CHARACTERfl15 FILNAH INTEEflB IHOD ' LOGICAL READIN.ERROR C LUN‘S ERRORI.FALSE. C C-- CREATE NEU FILE OR READ OLD PROBLER FILE. C IF (.NOT.READIN) THEN C C-- BEGIN URITING PROBLEH TO NEH FILE. C OPENILUN.FILE'FILNAH.ERR8991.STATUst’UNKNOUN’. 2 FORRa’UNFORHATTED’) INOD84 IF (FROYES) THEN URITE(LUN.ERR'991)IHOD URITE(LUN.ERR=991)FROYES URITEILUN.ERR=991)TITLEI.TITLE2 URITE(LUN.ERR=991)NPTS.SCLOG.SCHIN.SCHAX URITE(LUN.ERR8991)BGC.PH.UPHC.GH URITE(LUN.ERR=991)(U(I).I31.NPTS) URITEILUN.ERR=991)(TRFHAG(I).I=1.NPTS) URITE(LUN.ERR=991)(PHIO(I).I=1.NPTS) URITEILUN.ERR8991)(PHIII).I=I.NPTS) ELSE URITEILUN.ERR8991)IHOD URITE(LUN.ERR=991)FROYES URITEILUN.ERR8991)TITLE1.TITLE2 URITE(LUN.ERR'SSI)NPTS.SCLOG.SCHIN.SCHAX C NRITEILUN.ERR3991)IPOLEX.SIGHA URITE(LUN.ERR=991)(NGAINII).I'1.NPTSI URITEILUN.EBR'991)((RBIJOIIOI3IONPTS)0J'19IPOLEXI URITECLUN.ERR=991)((RI(J.I).I=1.NPTS).J'1.IPOLEXI URITEILUN.ERR'991)(ANGLEII).I'1.IPOLEX) ENDIF ENOFILEILUN) CLOSEILUN.STATUS=’KEEP’) ONTO 999 C--- BEGIN READING INFORHATION FROH FILE SPECIFIED C 997 991 993 ELSE OPENILUN.FILE=FILNAH.ERR=991.STATUSS’OLD’. 2 FORHI’UNFORHATTED’) READILUN.END=991.ERR8991IIHOD READ(LUN.END=991.ERR=991)FROYES IF(IHOD.EO.4)THEN IF (FROYES) THEN READ(LUN.END=991.ERR=991ITITLE1.TITLE2 REAO(LUN.END=991.ERR8991)NPTS.SCLOG.SCHIN.SCHAX READ(LUN.END=991.ERR=991)UGC.PH.UPHC.GN REAO(LUN.END=991.ERR=991)(U(I).I81.NPTS) REAOILUN.END=991.ERR=991I(TRFHAGII).I31.NPTS) READ(LUN.END8991.ERR8991)(PHID(I).1'1.NPTSI READ(LUN.END=991.ERR=991I(PHI(II.I81.NPTS) ELSE READILUN.END=991.ERR8991)TITLE1.TITLE2 READ(LUN.END=991.ERR=991)NPTS.SCLOG.SCHIN.SCHAX REAO(LUN.END=991.ERR=991IIPOLEX.SIGNA READILUN.END=991.ERR8991)(NGAIN(I).II1.NPTS) REAO(LUN.END=991.ERR=991)((RR(J.I).I81.NPTS).J=1.IPOLEX) READILUN.END=991.ERR=991I((RIIJ.I).III.NPTS).J=1.IPOLEXI READILUN.END=991.ERR8991)(ANGLE(I).1'1.IPOLEX) ENDIF ELSE ERROR'.TRUE. URITE(1.997) FORHATIII’ iflUARNINGifl THIS FILE IS NOT VALID’./. 2 ’ INPUT FOR HOOULE F. I CANNOT READ IT.’./. 3 ’ PLEASE TRY ANOTHER RESULTS FILE.’) ENDIF CLOSEILUN.STATUSI’KEEP’) ENDIF GOTO 999 ERROR8.TRUE. URITEI1.9931 FILNAH FORHAT(//’ if! ERROR Ii! THE FILE: ’.A15./. 2 ’ IS NOT USABLE. CHOOSE ANOTHER. ’) CLOSEILUN.STATUS=’KEEP’) RETURN END C C-- DUHHY RESULTS READING SUBROUTINES FOR HODULES T AND C C-- ADDED TO AVOID LOAD NOT COHPLETE FROH CALLS IN UNIFIL. C SUBROUTINE CRSLTIFILNAH.READIN.ERROR) CHARACTERIIS FILNAH LOGICAL READIN.ERROR URITE(1.100) 100 FORHATI/l’ THIS IS THE RESULTS READER FOR HODULE C.’ + /’ YOU SHOULD NOT BE HEREI’) ERROR8.TRUE. RETURN END SUBROUTINE TRSLTIFILNAH.REAOIN.ERROR) CHARACTER515 FILNAH LOGICAL READIN.ERROR URITE(1.100) 100 FORHATIII’ THIS IS THE RESULTS READER FOR HODULE T.’ + /’ YOU SHOULD NOT BE HEREI’) ERROR8.TRUE. RETURN END C C CNINNNNNNNNNNNINNNNNNNNNINNNNN GETABD NNNNNNNNNNINNNNINNIINIIINNIIN CHINNNNNNNNNNNNNNN‘INNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNN‘INNNNNNNNNN READS AN ENPORT GENERATED ABDATA FILE AND USES THE A AND B HATRICES AND EIGENVALUES TO CREATE TRANSFER FUNCTION DESCRIPTION OF THE PROBLEH. USER IS ASKED TO SELECT THE STATE VARIABLE FOR THE OUTPUT AND THE COLUHN OF B FOR INPUT. THIS ROUTINE IS BASED ON GETTFN SUBROUTINE. URITTEN BY J. GREGORSKI OECEHBER.1984 0000000000 SUBROUTINE GETABD 0 INCLUDE ’SYSNIT>COHHON.DIR>CTRLBK.TEXT’ INCLUDE ’SYSKIT>COHHON.DIR>LABLBK.TEXT’ INCLUDE ’SYSKIT>COHHON.DIR>POLYBK.TEXT’ INCLUDE ’SYSNIT>COHHON.DIR>ROOTBK.TEXT’ INCLUDE ’SYSKIT>COHHON.OIR>RANGBK.TEXT’ LOGICAL BADDAT.EXST.EXIT INTEGER DIHX.DIHU.NUHU.NUHX REAL BCOL(HAXDIH).CROU(HAXDIH) REAL A(HAXDIH.HAXDIH).B(HAXDIH.HAXDIH) REAL EVALRP(HAXDIH).EVALIP(HAXDIHI CHARACTER NAHE'IS.OUHHYl35.TEHPTLI40 BADDAT=.FALSE. HODFLG-.TRUE. c--- 10 1020 1030 c---. c-.. 1100 30 c--- 40 ENTER THE NAHE OF THE ABDATA FILE TO LOAD URITEI1.1020) FORHATII’ ii! ENTER NAHE OF THE ABDATA FILE It! ’) CALL FNAHEINAHE.EXIT) IF (EXIT) THEN URITEI1.1025) FORHATII’ LOADER EXITED. RETURN ENDIF NO PROBLEH LOADED. ’) IF THE DESIRED ABDATA FILE EXISTS LOAD IT IF NOT THEN ASK FOR A NED NAHE INOUIREIFILE'NAHE.EXIST=EXST) IF (.NOT.EXSTI THEN URITEI1.1030) FORHAT(/’ THIS FILE DOES NOT EXIST.’) GOTO 10 ENDIF OPEN THE FILE AND READ THE DATA DUHHT READS UNUANTED READINGS ETC... LON-B OPENILUN.FILE=NAHE.ERR=991I READILUN.’(l/A)’.ERR8991.END=991) TEHPTL READILUN.’(IA31.I4.A23.I4)’.ERR8991.END'991) 2 DUHHY.DIHX.DUHHY.DIHU CHECK TO SEE IF DIHENSION OF PROBLEH IS UITHIN THE RANGE COHPATIBLE UITH THIS SUB. IF ((DIHX.GT.HAXDIH).OR.(DIHU.GT.HAXDIHI) THEN URITE(1.1045) FORHAT(/’ 5!! THIS PROBLEH IS TOO LARGE Iii') GOTO 991 ENDIF READ THE A HATRIX READILUN.’(II’.ERR=991.END8991) DO 30 I'loDIflx READ(LUN.1100.ERR=991.END=9911 IZ.(A(I.J).J=1.DIHX) FORHATIIIX.I3.2X.5E13.5=/.(6X.5E13.5)) CONTINUE READ THE B HATRIX IF IT EXISTS IF (DIHU.GT.0) THEN READILUN.’(II’.ERR=991.END8991) DO 40 III.DIHX READILUN.1100.ERR=991.END3991) IZ.(B(I.J).J=1.DIHU) CONTINUE ENDIF C C--- READ THE EIGENVALUES C READILUN.’(ll/)’.ERR3991.END'991) DO 70 [81.DIHX READ(LUN.1110.ERR=991.END=991I IZ.EVALRP(I).EVALIP(I) 1110 FORHAT(1X.I3.2X.E12.5.1X.E12.5) 70 CONTINUE CLOSE(LUN.STATUS=’NEEP’) C C-- DETERHINE THE INPUT AND OUTPUT C NUHUII IF (DIHU.GT.0) THEN VRITEI1.1080) 1080 FORHATII’ UHICH U TO BE USED AS INPUT? (1): ’.3) CALL GETINTINUHU.1.DIHU.14) ELSE URITE(1.1070) 1070 FORHAT(//’ Ii! NO INPUT VARIABLES NH! ’) GOTO 991 ENDIF NUHX=1 IF (DIHX.GT.0) THEN VRITEI1.1040) 1040 FORHAT(/’ UHICH X TO BE USED AS OUTPUT? (1): ’.$) CALL GETINT(NUHX.1.DIHX.22) ELSE URITEI1.1050) 1050 FORHAT(I/’ ii! NO STATE VARIABLES in! ’) GOTO 991 ENDIF C C-- SET UP THE PROPER BCOL.CROU.DELEH C DO 210 I81.DIHX BCOLII)8B(I.NUHU) 210 CROUII)‘0.0 DELEH'0.0 CROU(NUHX)=1.0 C C C-- GET THE TRANSFER FUNCTION HERE C--- AND STORE IN POLYBK. ROOTBK C IDDEG=DIHX CALL CONHATIA.BCOL.CROU.DELEH.EVALRP.EVALIP.BADDAT) IF (BADDAT) THEN VRITEI1.1010) 1010 FORHATI/l’ UNABLE TO CONVERT THIS DATA TO A’. 2 /’ TRANSFER FUNCTION SUCCESSFULLY.’) EETO 991 ELSE URITE(1.1015) 1015 FORHAT(//’ DATA CONVERTED TO TRANSFER FUNCTION.’) TITLE18TEHPTL ENDIF SCHINIO. IF (FROYES) SCHINIl. SCHAX=10. NPTS=25 SCLOG=.FALSE. ENTD 999 C 991 CLOSEILUN.STATUS=’KEEP’) URITEI1.993) NAHE 993 FORHAT(//’ iii ERROR iii THE ABDATA FILES ’.A15./. 2 ’ IS NOT USABLE AS INPUT TO HODULE F. ’) C 999 RETURN END C C CNNNINNNNNNNNNNNNINNNNNNNNNNNN FLEAVE NNNNNNINNNNNNNNNNNNNNNNNNNNNN CONNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNN C C C ASKS IF USER UANTS TO EXIT HODULE F. C IF YES THEN IT GIVES A HESSAGE AND EXITS. C IF NO THEN RETURN TO HAIN HENU. C HODIFIED BY J. GREGORSKI DECEHBER.1984 C SUBROUTINE FLEAVE C INCLUDE ’SYSKIT>COHHON.DIR>CTRLBX.TEXT’ LOGICAL YES C IBLX'B NRITEI1.100) 100 FORHAT(/l’ UANT TO LEAVE THIS HODULE? (YES): ’.$) IF (YES(5.’Y’)) THEN VRITE(1.110) 110 FORHAT(//’ SEE YOU LATER...’/ 8’ flifl EXITED HODULE F 55") HODFLGB.FALSE. ELSE HDDFLGC.TRUE. ENDIF RETURN END C C CIINNNIINIiN!l!!!Iii!!!lliilllilllflfiililll!Iliififlliiiililiillilliil CssiaaanaaunaauisuaiI§Ia§asliau§§aI§§u§§ainuausl§§§unua§§§§§§§§aiia C C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN FBLOK3 NNNNNNNNNNNNNNNNNNNNNNNNNNNIN CININNNNNNNNNNNNNNNNNINNNNNNIINNNNNNNNINNNNNINNNNNNNNNNNNNINNINNINN C C C-—- DESCRIPTION: C Set. the range for treq. reep. celculetione end the C type at scale. Pertoree the treq. reep. celeuletione C end displays the reeulte. C C-- CONTENTS: . FSCALE eete treq./gein range end ecele type C C FDISP diepIeye frequency reeponee reeulte C FRESP calculates the frequency response C PHHARG detereinee pheee & gain eergine etc... C TLZGET enter or change the reeuIte title C C-- INDEX: C FDISP C FRESP C FSCALE C PHHARG C TLZGET C C CNNIINNNNNNINNNNNININililliil! FSCALE Niflillfliiflfll!{liifllfiliflllfilll CHINNNNININNNIINNII!!!illlllliiliI!!!Ni!!!Iii!!!INNINIINQIINIINNIIN SETS THE HAX./HIN. FREQUENCY AND ROOT LOCUS SCALE VALUES AND INPUTS THE TYPE OF SCALING. LOG. OR LINEAR .DEFAULTILOG. 000000 SUBROUTINE FSCALE 0 INCLUDE ’SYSNIT>COHHON.DIR>CTRLBK.TEXT’ INCLUDE ’SYSKIT>COHHON.DIR>ROOTBX.TEXT’ INCLUDE ’SYSXIT>COHHON.DIR)POLYBK.TEXT’ INCLUDE ’SYSEIT>COHHON.DIR)RANGBX.TEXT’ LOGICAL YES IBLN‘B SHI'1.E10 IF (FRQYEE) THEN SLO'I.E-10 C C--- CHOOSE DEFAULT SCHIN AND SCHAX C VHIN‘SHI VHAX‘O. DO 10 I31.INDEG VALS'RNI(I)IRNI(I)+RNR(I)!RNR(I) IF (VALS.GT.0.) VAL=SQRTCOHHON.DIR>CTRLBK.TEXT’ INCLUDE ’SYSXIT>COHHON.DIR>FOUTBX.TEXT’ INCLUDE ’SYSKIT>COHHON.DIR>RESULT.TEXT’ INCLUDE ’SYSXIT>COHHON.DIR>RANGBK.TEXT’ INCLUDE ’ SYSK I T>COIIHON. D I R>LABLBK. TEXT’ INCLUDE ’SYSKIT)COHHON.DIR>TERHBK.TEXT’ INCLUDE ’SYSKIT>COHHON.DIR>FILRBK.TEXT’ LOGICAL YES.OX.EXST.AOX.EXIT CHARACTERI3 ANSUER CHARACTERI15 FILE CHARACTER§17 GFILE IBLN‘? UHINBSCHIN UHAX’SCHAX UTRHAXCUHAX UTRHIN-UHIN ULOG‘SCLOG ZI‘UHIN Z2-UHAX URITE(1.1200) 1200 FORHATII.’ RESULT OPTIONS’./. 2’ ’9’, 3’ SS DISPLAY ON SCREEN’./. 4’ L8 LIST TO PRINTER’./. 5’ U! URITE TO FILE’./. 6’ B8 BODE PLOT’./. 7’ N8 NYQUIST PLDT’) URITE(1.1210) 1210 FORHAT(’ R8 RETURN TO HAIN HENU’./. 2’ F3 PROCEEDI'DEF)’.I. 3’ ’./. 3’ ENTER OPTION (P): ’.3) CALL HENU(OK.IX.’S’.’L’.’U’.’B’.’N’.’R’.’P’.”.’ 2 ’P’.25) IF(.NOT.OK)GO TO 14 C C-- CHECK TO SEE IF PLOT DESIRED AND ABLE TO DO IT. C IF (((IX.EQ.4).OR.(IX.EQ.5.)).AND.(.NOT.PLOTIT)) THEN URITE(1.210) 210 FORHAT(/.’ ll: PLOTTING ROUTINES NOT COHPATIBLE’. 2 ’ BITH THIS TERHINAL NI!’.//) GOTO 14 ENDIF C E! TO(100.100.100.100.100.98.99)IX C C--- GET TITLE2 FOR RESULTS C 100 URITE(1.1300) 1300 FORHAT(//.’ SET THE TITLE FOR RESULTS...’) CALL TL2GET C C--- GET FREQ LIHITS FOR DISPLAY OR STORE C URITEI1.1400) 1400 FDRHAT(//.’ SELECT THE FREQUENCY RANGE’./. 2 ’ FOR DISPLAY OR PLOTTING...’./) URITE(1.1410)Z1 1410 FORHATI’ LOU FREQUENCY? (’.1PE10.3.’): ’.I) CALL GETREL(21.UHIN.VHAX.10) IF (21.GT.Z2) 22'21 URITE(1.1420)Z2 1420 FORHAT(’ HIGH FREQUENCY? (’.1PE10.3.’): ’.8) CALL GETREL(Z2.ZI.UHAX.S) C C-- EENERATE DISPLAY VALUES USING FRESP OUTPUT AND THE C-- DESIRED FREQUENCY LIHITS. C II-O NPTOUTIO DO 250 I31.NPTS IF(U(I).GT.Z2) GOTO 260 IF(U(I).LT.Z1) GOTO 250 IICII+1 NPTOUT=NPTOUT+1 UOUT(II)=U(I) HAGOUT(II)8TRFHAG(I) PHDOUT(II)8PHID(I) PHOUT(II)=PHI(I) 250 CONTINUE 280 CONTINUE C C-- GO TO PLOTTING SECTION IF SO DESIRED. C IF (IX.GT.3) GOTO 200 C C--- DETERHINE THE HAX. & HIN. HAGNITUDES AND THE C-- ASSOCIATED FREQUENCIES FOR DISPLAY OF OUTPUT. C TRHAX 3 HAGOUT(1) TRHIN - TRHAX UTRHAX 8 VOUT(1) UTRHIN 8 VTRHAX DO 310 I32.NPTOUT IF (TRHAX.LT.HAGOUT(I)) THEN TRHAX 3 HAGOUT(I) UTRHAX = UOUTII) ELSEIF (TRHIN.GT.HAGOUT(I)) THEN TRHIN I HAGOUT(I) UTRHIN I UOUT(I) ENDIF 310 CONTINUE C C-- SETUP OUTPUT TO SCREEN.PRINTER.OR RESULTS FILE. C EETO (110.120.130) IX C C-- OUTPUT TO THE SCREEN. C 110 CONTINUE LON-1 VRITE(1.1110) 1110 FORHAT(//.’ HIT (RETURN) TO START DISPLAY. ’.8) READ(1.’(A3)’) ANSUER GOTO 1000 C C-- OUTPUT TO THE PRINTER. C 120 CONTINUE LON-13 URITE(1.1220) I220 FORHAT(/l.’ READY THE PRINTER’. 2 I.’ AND HIT COHHON.DIR)ROOTBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)RANGBK.TEXT’ INCLUDE ’SYSXIT)COHHON.DIR)RESULT.TEXT’ REAL XHAG(HAXDEG).DHAG(HAXDEG) REAL IHAG LOGICAL ULOG.GO 1040 1000 30 c--- 50 C UHINISCHIN UHAXISCHAX ULOGISCLOG IF(NPTS.GT.HAXFRP) NPTSIHAXFRP URITE(1.1040) NPTS FORHAT(/’ NUHBER OF SOLUTION POINTS? (’.I3.’): ’.I) CALL GETINT(NPTS.3.HAXFRP.5) CALL PROCED(GO) IF (.NOT.GO) THEN HODFLGI.TRUE. RETURN ENDIF URITE(1.1000) FORHATIII’ CALCULATING THE FREQUENCY RESPONSE.’. [1’ ONE HOHENT. PLEASE...’./’ ’) U(1)IUHIN XSTEPINPTS-I PII3.141592 IF (.NOT.ULOG) THEN CDHPUTE LINEAR SCALE OHEGA VALUES DOHEGAI(UHAX-UHIN)/XSTEP DO 30 II2.NPTS-1 U(I)IU(1)+(I-1)lDOHEGA CONTINUE U(NPTS)IUHAX ELSE COHPUTE LOG SCALE OHEGA VALUES YI(ALOG10(UHAX)-AL0610(UHIN))IXSTEP ZI10.l!Y DO 50 II2.NPTS-1 U(I)IU(I-1)IZ CONTINUE U(NPTS)IVHAX ENDIF c--- CALC HAGNITUDE AND PHASE OF THE TRANSFER FUNCTION C XHAG(1)I1.0 DHAG(1)I1.0 BI1.OE-10 NLOOP1IINDEG+1 NLOOP2IIDDEG+1 ASTIO.0 IF (SYGAIN.LT.0.0) AST=PI DO 100 NII1.NPTS AIAST IF(INDEG.EQ.0) GOTO 130 DO 60 LII2.NLOOP1 XHAG(LI)ISQRT((RNR(LI-I))l§2+(U(NI)-RNI(LI-1))NN2)IXHAG(LI-1) REALI-RNR(LI-1) IF(ABS(REAL).LT.B)REALISIGN(B.REAL) IHAGIU(NI)-RNI(LI-1) AIA+ATAN2(IHAG.REAL) 80 CONTINUE C 130 CONTINUE IF(IDDEG.EQ.O) GOTO 270 DO 90 HII2.NLOOP2 DHAG(HI)ISQRT((RDR(HI-1))II2+(U(NI)-RDI(HI-1))Il2)IDHAG(HI-1) IF(DHAG(HI).LT.B)DHAG(HI)ISIGN(B.DHAG(HI)) REALI-RDR(HI-1) IF(ABS(REAL).LT.B)REALISIGN(B.REAL) IHAGIU(NI)-RDI(HI-1) AIA-ATAN2(IHAG.REAL) 90 CONTINUE 270 CONTINUE TRFHAG(NI)IABS(SYGAINI(XHAG(NLOOP1)IDHAG(NLOOP2))) PHI(NI)IA PHID(NI)IAi57.3 100 CONTINUE C RETURN END C C CNNNNNNNNNNNNNNNNNNNNNINNNNNNI Pnflm NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNN DETERHINES THE PHASE HARGIN.GAIN CROSSOVER FREQUENCY. GAIN HARGIN.AND FREQUENCY AT -160 PHASE SHIFT FOR THE COHPUTED FREQUENCY RESPONSE. HODIFIEE BY J. GREGORSKI SEPTEHBER.1984 0000000 SUBROUTINE PHHARG 0 INCLUDE 'SYSKIT>CONUON.DIR>CTRLBK.TEXT' INCLUDE ’SYSKIT>CONNON.OIR>RANGBK.TEXT' INCLUDE ’SYSKIT>COHNON.DIB>RESULT.TEXT' REAL A.B.Y.Z.PNC.CC.UPHO C C--- FIND PHASE HARCINIPH (UGCICROSSOVER FREQ. C-- PHCIPHASE SHIFT AT UGC) C ZITRFHACIII IF (Z.EO.1.) THEN UGCIUII) PHCIPHIDIII PHIIOO.+PHC ELSE DO 300 II2.NPTS AIZ ZITRFHAG(I) IF (Z.EQ.1.) THEN UGCIU(I) PHC=PHID(I) PHI180.+PHC ENTO 320 ELSEIF ((A.LT.1..AND.Z.GT.1.).OR. + (A.GT.1..AND.Z.LT.1.)) THEN UGDIN(I)-U(I-1) UGC=V(I)-UGD&(Z-1.)/(Z-A) PHCI(PHID(I)-PHID(I-1))l(UGC-U(I))/UGD+PHID(I) PHI180.+PHC GOTO 320 ENDIF 300 CONTINUE PHI0.0 UGCI0.0 GOTO 320 ENDIF 320 CONTINUE C c-.. FIND GAIN HARGINIGH (UPHCIFREQ.AT IIOO PHASE SHIFT. c... GCIGAIN AT -160 PHASE SHIFT) C YIPHID(I) IF (Y.EQ.-180.) THEN UGCIU(1) GCITRFHAG(1) IF(GC.EQ.0) GOTO 405 ENI1.0/GC GOTO 420 ELSE DO 400 II2.NPTS BIY YIPHID(I) IF (Y.EQ.-160.) THEN UPHCIUII) GCITRFHAG(I) IF(GC.EQ.0) GOTO 405 GHII.0/GC GOTO 420 ELSEIF ((B.LT.-180..AND.Y.GT.-180.).OR. + (B.GT.-180..AND.Y.LT.-180.)) THEN UPHDIV(I)-U(I-1) UPHCIU(I)-UPHD*(Y+180.)/(Y-B) GCI(TRFHAG(I)-TRFHAG(I-1))I(UPHC-U(I))/UPHD+TRFHAG(I) IF(GC.EQ.0) GOTO 405 GH=1.0/GC GOTO 420 ENDIF 400 CONTINUE ENDIF 405 GHI0.0 UPHCI0.0 420 CONTINUE C C RETURN END C C CNNNNNNNINNNNNNNNININNNNNNNNIN TLZGET ININNNNNNNNNNNNNNNINNNNNNNIIN CINNNINNNNNNNNNNINNNNNNNNNNNNNININNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNI C C C ENTER OR CHANGE THE TITLE FOR THE RESULTS. C SUBROUTINE TL2GET C INCLUDE ’SYSKIT)COHHON.DIR)LABLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ LOGICAL YES C 10 URITE(1.1010) TITLE2 1010 FORHAT(I’ THE RESULTS HEADING IS:’/.1X.A40//. 2 ’ CHANGE THE HEADING? (NO): ’.0) IF (YES(13.’N’)) THEN URITE(1.1000) 1000 FORHAT(/’ ENTER A HEADING ON ONE LINE:’) READ(1.1005)TITLE2 1005 FORHAT(A40) GOTO 10 ENDIF RETURN END C C CNNNNNNNNINNNNNNNNNNNNNNNNNRNNNNNNNNNINNNNNNINNNNNINNINNNNNNNNNNNNN CNNNNNNNNNNNNNNNINNNNINNNNNNNNNNINNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNN C C C C CINNNNNNNNNNNNNINNNNNNNNNNNNNN FBLO‘A NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNINNNNNONNNNNNNNNNNNNINNNINNNNNNNNNNNNNNNNNNNININNN C C c... DESCRIPTION: 00000 CICICICICYCICUCICICICIfifif‘ Generetee gein veluee tor hath e Leo end Lineer eceIe. Coeputee the root Iocue end diepleye the reeulte. ... CONTENTS: RLOCUS coeputee the root Iocue RDISP diepleye the root Iocue reeulte LOGSCL generatee geine on e Leo ecele LOGRES coeputee the gein veluee LOCHAX tinde the Iieite o: the root locue LOCHAX LOGRES LOGSCL RDISP RLOCUS CINNNNNNNNNNNNNNNNNNNNNNNNNNNN RLOCUS NNNNNNNINNNNNNNNNNNNNNNNNNNNN CNNNNINNNNNNNNNNNNNNNNNNNNINNNNNNINNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNN (I CICICICICICICI 1040 SUBROUTINE RLOCUS USES THE ROOTS OF A TRANSFER FUNCTION TO COHPUTE THE ROOT LOCI . SUBROUTINE RLOCUS IS PASSED POLYNOHIAL ROOTS IN COHHON BLOCK ROOTBK. HODIFIED BY J. GREGORSKI DECEHBER.1964 SUBROUTINE RLOCUS INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)ROOTBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)POLYBK.TEXT’ INCLUDE ’SYSKIT)COHNON.DIR)RSLTBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)RANGBX.TEXT’ LOGICAL KLOG.GO REAL COEFDK(NAXCOF).ROOTR(HAXDEG).ROOTI(HAXDEG).KG.KDEL REAL KHIN.KHAX KHINISCHIN KNAXISCHAX KLOGISCLOG IF(NPTS.GT.HAXRLP) NPTSIHAXRLP URITE(1.1040) NPTS FORHAT(/’ NUHBER OF SOLUTION POINTS? (’.I3.’): ’.3) CALL GETINT(NPTS.3.HAXRLP.5) CALL PROCED(GO) IF (.NOT.EE) THEN HODFLGI.TRUE. RETURN ENDIF NNDIINDEG+1 NDDIIDDEG+1 NDUHIINDEG+IDDEG URITE(1.1000) 1000 FORHAT(//’ CALCULATING THE ROOT LOCUS.’. 2 11’ ONE HOHENT. PLEASE...’./’ ’) C-- COHPUTE THE POLE EXCESS (P-Z) AND THE ASYHPTOTE c..- ANGLES. ANGLE(I) . IPOLEXIIDDEG-INDEG IF (IPOLEX.EQ.0) GOTO 610 IF (IPOLEX.LT.0) THEN URITE(1.1010) 1010 FORHAT(/’ HORE ZEROS THAN POLES.’. 2 /’ NO ROOT LOCUS.’) HODFLGI.TRUE. GOTO 999 ENDIF DO 499 NNI1.IPOLEX HNINN~1 499 ANGLE(NN)I((2!HH+1)!3.141592)]IPOLEX C-- COHPUTE THE ORIGIN OF THE ASYHPTOTES: C-- SIGHA IS THE REAL COORDINATE OF ORIGIN OF ASYHPTOTES SUNZI0.0 DO 601 II1.INDEG 601 SUHZISUHZ+RNR(I) SUHPI0.0 DO 604 II1.IDDEG 604 SUHPISUHP+RDR(I) SIGHAI(SUHP-SUHZ)/IPOLEX C c-.. HAKE BOTH NUHERATOR AND DENORINATOR COEFFICIENT VECTORS C-- TO BE THE SAHE LENGTH : ( COEFFN . AND COEFFD ). C DO 90 II1.IPOLEX 90 COEFFN(NND+I)I0.0 610 CONTINUE C C--- SET GAIN VALUES INTO KGAIN VECTOR C IF (KLOG) THEN CALL LOGSCL(KHIN.KHAX.NPTS.KGAIN) ELSE KDELI(XHAX-KHIN)I(NPTS-1) DO 110 NSIloNPTS-I 110 KGAIN(NS)IKHIN+KDELI(NS-1) KGAININPTS)IKHAX ENDIF C C-- COHPUTE THE ROOT LOCUS OF THE POLYNOHIAL C DK(S)I D(S) + K ! N(S). C DO 200 NSI1.NPTS KGIKGAIN(NS) DO 210 II1.NDD 210 COEFDK(IIIKGIGAINNCDEFFN(I)+COEFFD(I) C c... BE SURE TO AVOID LEAD COEF ZERO C DO 215 II1.NDD VALIABS(COEFDK(NDD)) IF (VAL.GT.1.E-10) SOTO 218 D0 216 J=NDD:2:'1 216 COEFDK(J)ICOEFDK(J-1) 215 COEFDK(1)I0.0 URITE(1.2010)KG 2010 FORHAT(//’ BAD POLYNOHIAL FOR GAINI ’.1PE10.3. 2 /’ CALCULATION TERHINATED.’) NODFLGI.TRUE. SOTO 999 218 CALL PROOT(IDDEG.COEFDK.ROOTR.ROOTI.1) DO 220 III.IDDEG RRII.NS)IROOTR(I) 220 RI(I.NS)=ROOTI(I) C IF (IDDEG.GT.2) THEN C URITE(1.2020) KG C 2020 FORNAT(’ GAINI ’.1PE10.3) C ENDIF 200 CONTINUE C 999 RETURN END C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN RDISP INNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNN DISPLAYS ROOT LOCUS RESULTS IN EITHER TABULAR OR GRAPHICAL FORH. TABULAR RESULTS CAN BE URITTEN TO THE SCREEN. PRINTER. OR A FILE. GRAPHICS OUTPUT IS IN THE FORH OF A ROOT LOCUS PLOT VHICH CAN BE SAVED IN A GRAPHICS FILE FOR LATER OUTPUT TO THE PRINTER. VRITTEN BY J. GREGORSKI AUGUST.1984 (ICUCICYCICICICICICI SUBROUTINE RDISP (I INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)RSLTBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)POLYBK.TEXT’ 10 14 1200 1210 C C c-.. C 100 1300 INCLUDE ’SYSKIT)COHHON.DIR)RANGBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)ROOTBK.TEXT’ INCLUDE ’ SYSK I T)COIIIION . D I R )LABLBK. TEXT’ INCLUDE ’SYSXIT)COHHON.DIR)ROUTBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)TERHBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)FILRBK.TEXT’ REAL K1.K2.KHIN.KHAX.IHAGHNolflAiNX LOGICAL YES.OK.EXST.AOK.EXIT CHARACTERI3 ANSUER CHARACTERN15 FILE CHARACTERC17 GFILE IBLKI7 KNINISCHIN KHAXISCHAX KLOGISCLOG KIIKHIN K2IKHAX SOUT ISIGHA IOUT I IPOLEX DO 10 II1.IOUT AOUT(I) I ANGLE(I) URITE(1.1200) FORHAT(/.’ RESULT OPTIONS’./. 2’ ’./. 3’ S: DISPLAY ON SCREEN’./. 4’ L8 LIST TO PRINTER’./. 5’ U: URITE TO FILE’./. 6’ G: PLOT ROOT LOCUS’) URITE(1.1210) FORHAT(’ R: RETURN TO HAIN HENU’./. 2’ P: PROCEED(IDEF)’./. 3’ ’9’, 4’ ENTER OPTION (P): ’.0) CALL HENU(OK.IXo’S’.’L’.’U’.’G’.’R’.’P’.".”. 2 ’P’.25) IF(.NOT.OK)GO TO 14 CHECK TO SEE IF PLOT DESIRDED AND ABLE TO DO SO. IF (((IX.EQ.4).OR.(IX.EQ.5)).AND.(.NOT.PLOTIT)) THEN VRITE(1.270) FORHAT(/.’ Ii! PLOTTING ROUTINES NOT COHPATIBLE’. 2 ’ VITH THIS TERHINAL lii’.//) GOTO 14 ENDIF GO TO(100.100.100.100.98.99)IX GET TITLE2 FOR RESULTS URITE(1.1300) FORHAT(//’ SET THE TITLE FOR RESULTS...’) CALL TL2GET C c... GET GAIN LIHITS FOR DISPLAY OR STORE C URITE(1.1400) 1400 FORHAT(//.’ SELECT THE GAIN LIHITS’./. 2 ’ FOR DISPLAY OR PLOTTING...’./) URITE(1.1410)K1 1410 FORHAT(’ LOU GAIN? (’.1PE10.3.’): ’.0) CALL GETREL(K1.KHIN.KHAX.14) URITE(1.1420)K2 1420 FORHAT(’ HIGH GAIN? (’.1PE10.3.’): ’.8) CALL GETREL(K2.K1.KHAX.14) C c--- GENERATE DISPLAY VALUES USING RLOCUS OUTPUT AND THE c..- DESIRED GAIN LIHITS. C IIIO NOUTIO DO 250 II1.NPTS IF(KGAIN(I).GT.K2) GOTO 260 IF(KGAIN(I).LT.K1) GOTO 250 IIIII+1 NOUTINOUT+1 RROUT(1.II) I RR(1.I) RIOUTIAPII) 3 RIIIOI) KOUT(II) I KGAIN(I) DO 210 IXXI2.IDDEG RROUTIIXX.II) I RR(IXX.I) RIOUT(IXX.II) I RI(IXX.I) 210 CONTINUE 250 CONTINUE 260 CONTINUE C C-- GO TO PLOTTING SECTION IF SO DESIRED. C IF (IX.GT.3) GOTO 200 C C-- DETERHINE THE LIHITS OF ROOT LOCUS DATA AND c... HAXIHUH LIHIT FOR ASYHPTOTE PLOTS. C CALL LOCNAX(REALHN.REALHX.IHAGHX) IHAGNN I -IHAGHX ZHAX I ABS(REALHN) IF (ABS(REALHX).GT.ZHAX) THEN ZHAX I ABS(REALHX) ENDIF IF (ABS(IHAGHX).GT.ZHAX) THEN ZHAX I ABS(IHAGHX) ENDIF C c-.. SETUP OUTPUT TD SCREEN.PRINTER.OR RESULTS FILE. C GOTO (110.120.130) IX C . c-.. OUTPUT TO THE SCREEN. C 110 CONTINUE LUNI1 VRITE(1.1110) 1110 FORHAT(//.’ HIT (RETURN) TO START DISPLAY. ’.O) READ(1.’(A3)’) ANSUER GOTO 1000 C c..- OUTPUT TO THE PRINTER. C 120 CONTINUE LUNI13 URITE(1.1220) 1220 FORHAT(//.’ READY THE PRINTER’. 2 l.’ AND HIT (RETURN)....’.0) READ(1.’(A3)’) ANSUER C CALL DATAPR GOTO 1000 C c... OUTPUT TO A RESULTS FILE. C 130 CONTINUE URITE(1.131) 131 FORHAT(/’ DO YOU UISH TO SAVE THE’./. 2’ RESULTS IN A FILE? (NO): ’.I) IF(YES(16.’N’))THEN PRBFILI.FALSE. LIBNAHI’RESULTS‘LIB’ CALL SAVFIL ENDIF GOTO 14 C C-- OUTPUT OF RESULTS IN TABULAR FORH. C 1000 CONTINUE URITE(LUN.1005) 1005 FORHATI/l.’ NNINNNNNNNNNINNNNNNN’. 2 ’ HODULE F ROOT LOCUS DATA ’. 3 ’NNNNNNNNNNNNINNINNNN’) URITEILUN.1010) TITLE1.TITLE2 1010 FORHAT(//.1X.A.//.1X.A) IF (.NOT.KLOG) THEN URITE(LUN.1020) 1020 FORHAT(//.’ THE GAIN SCALE IS: LINEAR’) ELSE URITE(LUN.1030) 1030 FORHAT(//.’ THE GAIN SCALE IS: LOG’) ENDIF URITEILUN.1040) KOUT(I).KOUT(NOUT) 1040 FORHAT(/.’ THE RANGE OF GAINS IS ’. 2 E10.3.’ TO ’.E10.3) URITEILUN.1045) IDDEG 1045 FORHAT(/.’ THERE ARE ’.I2.’ POLES AT:’.4X.’REAL’.8X.’IHAG.’) DO 1055 II1.IDDEG VRITE(LUN.1050) RDR(I).RDI(I) 1050 FORHAT(22X.E10.3.2X.E10.3) 1055 CONTINUE URITE(LUN.1060) INDEG 1060 FORHAT(I.’ THERE ARE ’.I2.’ ZEROS ATI’.4X.’REAL’.8X.’IHAG.’) DO 1070 II1.INDEG URITEILUN.1065) RNR(I).RNI(I) 1065 FORHAT(22X.E10.3.2X.E10.3) 1070 CONTINUE URITE(LUN.1075) IOUT 1075 FORHAT(/.’ THE POLE EXCESS I ’.I3) URITE(LUN.1080) SOUT 1080 FORHAT(/.’ THE REAL COORDINATE OF ASYHPTOTE ORIGIN I ’.E10.3) URITEILUN.1085) 1085 FORHAT(/.’ THE ASYHPTOTE ANGLES IN DEGREES:’) DO 1105 II1.IOUT VRITE(LUN.1095) AOUT(I)I57.3 1095 FORHAT(33X.E10.3) 1105 CONTINUE IF (IX.EQ.1) THEN URITE(1.1100) 1100 FORHAT(/.’ UANT TO SEE HORE? (YES): ’.0) IF (.NOT.YES(25.’Y’)) GOTO 14 URITE(1.!) ’ ’ NLINE I 6 ENDIF HRITE(LUN.1115) 1115 FORHAT(//.5X.’GAIN’.6X.’REAL PART’.3X.’IHAG. PART’./) DO 1150 NI1.NOUT URITE(LUN.1120) XOUT(N).RROUT(1.N).RIOUT(1.N) 1120 FORHAT(/.3(2X.E10.3)) DO 1140 II2.IDDEG URITE(LUN.1130) RROUT(I.N).RIOUT(I.N) 1130 FORHAT(12X.2(2X.E10.3)) 1140 CONTINUE C NLINE I NLINE+IDDEG+1 IF ((IX.EQ.1).AND.(NLINE.GE.25)) THEN URITE(1.1100) IF (.NOT.YESI25.’Y’)) GOTO 14 URITE(1.I) ’ ’ NLINE I 0 ENDIF C 1150 CONTINUE CLOSE(LUN) IF (IX.EQ.1) THEN VRITE(1.1090) 1090 FORHAT(//.’ HIT (RETURN) TO RETURN TO HENU. ’.$) READ(1.’(A3)’) ANSHER ENDIF C GOTO 14 C C--- PLOT THE ROOT LOCUS TO THE SCREEN AND GIVE c-.. THE OPTION OF SAVING IT IN A FILE. C 200 CONTINUE CALL INITT(NRATE) CALL ANHODE CALL RPLOT 205 VRITE(1.2010) 2010 FORHAT(////.’ R: RETURN TO DISPLAY HENU(IDEF)’./. 2 ’ S: SAVE PLOT IN A GRAPHICS FILE’./. 3 ’ ENTER OPTION: ’.0) CALL HENU(AON.IXX.’R’.’S’.”.”.”.’ 2 I IF (.ROT.AOX) GOTO 205 IF (IXX.EQ.1) THEN CALL ERASE CALL HOHE GOTO 14 ENDIF c C--- GET GRAPHICS FILE HARE. ADD ’G_’ TO START. C--- AND CHECK FOR EXISTENCE. THEN OPEN FILE C-- AND REORAV THE PLOT TO SAVE IT. C CALL INITT(NRATE) CALL ANHODE VRITE(1.2020) 2020 FORHATI’ THE PLOT VILL BE REORAVH AS IT IS SAVEDI’) 201 VRITE(I.2030) 2030 FORHATIII.’ ENTER THE NAHE FOR THE GRAPHICS FILE. ., CALL FHAHE(FILE.EXIT) IF (EXIT) OTTO 14 GFILE - ’G_’//FILE IROOIRE(FILE=GFILE.ERR=201.EXIST=EXST) IF (.NOT.EXST) RTTO 2050 URITE(1.2040) 2040 FORHAT(//.’ FILE EXISTS---VAHT TO OVERURITE? (NO): .,,, IF (.NOT.YESI25.’N’)) GOTO 201 2050 CALL INITT(NRATE) CALL ANHODE CALL OPEHTH(GFILE.IERR) CALL RPLOT CALL CLOSTX(IERR) VRITE(1.2OSO) GFILE 2060 FORHAT(////.’ THIS PLOT IS SAVEO IN: ’.A17) VRITE(I.2070) 2070 00 880 FORHAT(’ HIT (RETURN) TO RETURN TO HENU. ’.0) READ(1.’(A3)’) ANSUER CALL ERASE CALL HOHE GOTO 14 HODFLGI.TRUE. RETURN END CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN LOGSCL INNNINNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNINNNNINNNNNNINNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNINNNN 0 0000000 10 C c... c-.. CALCULATES THE GAINS ON A LOG SCALE FROH KNIN TO KHAX. STORES POINTS IN KGAIN NPTS .LE.HAXRLP. PROTECTED BY PARAHETER DEFINITION HODIFIEI BY J. GREGORSKI DECEHBER.1984 SUBROUTINE LOGSCL(KHIN.KHAX.NPTS.KGAIN) INCLUDE ’ SYSXIT)COIIIION. D I R)CTRLBK. TEXT’ REAL KHIN.KHAX.KGAIN(HAXRLP) REAL GHIN.GHAX.TGAIN(HAXRLP).KTOToGSHALL INTEGER NPTS.NPOS.NNEG IF (NPTS.EQ.2) THEN KGAIN(1)IKHIN KGAIN(2)IKHAX RETURN ENDIF GSHALLI1.E-5 GNINIKHIN GHAXIKHAX IF(GHIN.GE.0.0)THEN CALL LOGRES(GHIN.ENAX.NPTS.KGAIN) ELSEIF(GHAX.LE.0.0) THEN GHINI-HHAX GHAXI-KHIN CALL LOGRES(GHIN.GHAX.NPTS.TGAIN) DO 10 II1.NPTS KGAIN(I)I-TGAIN(NPTS+1-I) ELSE IF (NPTS.EQ.3) THEN KGAIN(1)IKHIN NGAIN(2)I0.0 KGAIN(3)IKHAX RETURN ENDIF SPLIT NPTS INTO NPOS AND NNEG VALUES ASSIGN ZERO TO NPOS INTERVAL c-.. NPOS. NNEG PROPORTIONAL TO KHAX.KHIN C KTOTIKHAX-KHIN NPOSIINPTS'KHAX/KTOT)+1 NNEGINPTS-NPOS IF (NNEG.EQ.0) THEN NPOSINPTS-I NNEGII ELSEIF (NPOS.EQ.1) THEN NPOSI2 NNEGINPTS-2 ENDIF C c-.. COHPUTE THE POS INTERVAL GAINS C ENINI0.0 CALL LOGRES(GHIN.GHAX.NPOS.TGAIN) DO 20 II1.NPOS 20 KGAIN(NNEG+I)ITGAIN(I) C c... COHPUTE NEG INTERVAL GAINS C IF(NNEG.EQ.1) THEN NGAIN(1)INHIN ELSE GHAXI-KHIN GHINIGSHALL CALL LOGRES(GHIN.GHAX.NNEG.TGAIN) DO 30 II1.NNEG 3O KGAIN(I)I-TGAIN(NNEG-I+1) ENDIF END IF C C-- CORRECT FOR ROUNDOFF C NGAIN(1)IKHIN KGAIN(NPTS)IKHAX RETURN END C C CNNNNNNN‘NNNINNNNNNNNNNNNNNNNNN LOGRES NNNNNNNNNNNNNNNNNNNNNNNNNNNN‘N CNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN COHPUTES THE GAIN VALUES FOR ROOT LOCUS. HODIFIED BY J. GREGORSKI DECEHBER.1984 00000 SUBROUTINE LOGRES(GHIN.GHAX.NPTS.TGAIN) GHIN: 6E ZERO GHAX: GT GHIN NPTS: GE 2 TGAIN: GAIN VALUES STORED HERE 00000 C INCLUDE ’SYSKIT)COHHON.DIR)CTRLBX.TEXT’ REAL TGAIN(HAXRLP).GHIN.GNAX.GSHALL INTEGER NPTS C GSHALLI1.E-5 TGAIN(1)IGHIN IF (NPTS.EQ.2) THEN TGAIN(2)IGHAX ELSE I1I2 IF (GHIN.EQ.0.0) THEN IF (GHAX.GT.GSHALL) THEN GHINIGSHALL ELSE GHINIGHAX/100. ENDIF TGAIN(2)IGHIN I1I3 ENDIF C c-.. COHPUTE THE EFFECTIVE RANGE INTERVAL C XSTEPINPTS-I1+1 YI(ALOG10(GHAX)-ALOG10(GHIN))IXSTEP ZI10.IlY C C--- COHPUTE GAIN VALUES C DO 50 III1.NPTS 50 TGAIN(I)ITGAIN(I-1)!Z ENDIF RETURN END C C CRRRXERRRIIEHIHERRERRERIRRRXRR LOCHAX Nil!!!IINNNNNNNNNIINIIINNNNNN CNN!NINNNNININNNNNNNNNININNNNNNNNNNNNNNNINNNNNNNNNNININNNNNNNNNNNNI COHPUTES REAL.IHAG LIHITS OF LOCUS DATA. POLES AND ZEROS AUTDHATICALLY INCLUDED. HODIFIED BY J. GREGORSKI AUGUST.1984 000000 SUBROUTINE LOCHAX(REALHN.REALHX.IHAGHX) 0 INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSXIT)COHHON.DIR)ROUTBK.TEXT’ INCLUDE ’SYSKIT>COHHON.DIR)RANGBK.TEXT’ INCLUDE ’SYSKIT>COHHON.DIR>POLYBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)ROOTBK.TEXT’ REAL IHAGHX.REALHN.REALHX REALHNI1.E15 REALHXI-1.E15 IHAGNXI0.0 C c-.. GET LIHITS FOR OUTPUT DATA C DO 100 NI1.NOUT DO 90 II1.IDDEG TRYIRROUTII.N) IF (TRY.LT.REALHN) THEN REALHNITRY ELSEIF (TRY.GT.REALHX) THEN REALHXITRY ENDIF TRYIRIOUT(I.N) IF (TRY.GT.IHAGHX) THEN IHAGHXITRY ENDIF 90 CONTINUE 100 CONTINUE C c..- NOV INCLUDE POLES AND ZEROS C DO 120 II1.IDDEG TRYIRDR(I) IF (TRY.LT.REALHN) THEN REALHNITRY ELSEIF (TRY.GT.REALHX) THEN REALHXITRY ENDIF TRYIRDI(I) IF (TRY.GT.IHAGHX) THEN INAGHXITRY ENDIF 120 CONTINUE DO 140 II1.INDEG TRYIRNR(I) IF (TRY.LT.REALHN) THEN REALHNITRY ELSEIF (TRY.GT.REALHX) THEN REALHXITRY ENDIF TRYIRNIII) IF (TRY.GT.IHAGHX) THEN IHAGHXITRY ENDIF 140 CONTINUE RETURN END C C CHRERRRRRRRERERIRXRRREan:RREXRERRRRRHXEREXXERRERRRXEXXEHEEERERRRXER CRRERRIIRRRHRERRHERHRXXXRXRXEXRHRXXRRHRRRHERR:EXXREHHRRHRRXXEXXREHE C C C CHINNNNNNNNNNNNNINNNNNNNNNNNNN FBLOKB NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNINNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN C C C-- DESCRIPTION: C Generetee the trenefer function froe e etete C epece prohlee foreuletion. Aleo contains the C root finder ueed in poly. input and root locue. C c-.. CONTENTS: C GETTFN reede A.B prohIee & generetee e T.F. froe It C CONHAT converte etete equ. to e trenefer function C CHREQA generetee cherecterietic poly. froe en A eetrix C DET function calculates the detereinant of e eetrix C HPY foree e eceler poly. froe e eetrix poly. C CHREQ calculatee ADJ(Sl-A) C PROOT finde the roote of e polynoeiel C C-- INDEX: C CHREQ C CHREQA C CONHAT C DETIFCN) C GETTFN C HPY C PROOT C C CRXIIRRREIRHHRRRRHHRXRRRR:REX: GETTFN NNNNNNNNNNNNNINNNNNNNNIINNNN! CRRRRREERRRHERREERRHRRERHXERRRIRIXRXIRRRRRRRRREXRRRRHXRHRRRRRXRRRRX GETS TRANSFER FUNCTION BY READING FROH A TYPE 1 (HODT) FILE AND CONVERTING THE A.B.C. AND D HATRICES. USES LOCAL VARIABLES FOR INPUT OF FILE DATA. USES COHHON VBLS TO SAVE THE RESULTS. N.B. HATRIX. VECTOR DATA BASE FOR T DESCRIPTION DIHENSIONED TO RAX. ORDERIHAXDIH. TRANSFER FCN DATA BASE FOR F DESCRIPTION DIHENSIONED TO HAX. ORDERIHAXDEG. ll! BE CAREFUL Ii! HODIFIED BY J.GREGORSKI DECEHBER.1984 SUBROUTINE GETTFN(BADFIL.BADDAT.LUN) 0 00000000000000 INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)LABLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)POLYBK.TEXT’ INCLUDE ’SYSXIT)COHHON.DIR)ROOTBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR>RANGBK.TEXT’ LOGICAL BADFIL.BADDAT INTEGER DIHX.DIHU.DIHY.ITYPEIHAXDIH) INTEGER NUHU.NUHX.NUHY REAL BCOLIHAXDIH).CROU(HAXDIH) REAL A(HAXDIH.HAXDIH).B(HAXDIH.HAXDIH) REAL C(HAXDIH.HAXDIH).D(HAXDIH.HAXDIH) REAL KGAIN.KFB(HAXDIH).EVALRPINAXDIH).EVALIP(HAXDIH) REAL UDEF(HAXDIH.10).IC(HAXDIH) BADFILI.FALSE. BADDATI.FALSE. C C-- READ REHAINING PORTION OF FILE NEEDED FOR c--- GENERATION OF TRANSFER FUNCTION FROH A.B DATA. C READ(LUN.ERRI991.ENDI991)TITLEI READ(LUN.ERRI991.ENDI991)DIHX.A READ(LUN.ERRI991.ENDI991)EVALRP.EVALIP READ(LUN.ERRI991.ENDISSIIFBKFLG READ(LUN.ERRI991.ENDI991)KFB.XGAIN.IC READ(LUN.ERRI991.ENDI991)DIHU.B READ(LUN.ERRI991.ENDI991)ITYPE READ(LUN.ERRI991.ENDI991)UDEF READ(LUN.ERRI991.ENDI991)DIHY.C.D CLOSE(LUN.STATUSI’KEEP’) C C--- CHECK TO SEE IF DIHENSION OF PROBLEH IS C-- UITHIN THE RANGE CDHPATIBLE VITH THIS SUB. C IF ((DIHX.GT.HAXDIH).OR.(DIHU.GT.HAXDIH).OR. 2 (DIHY.GT.HAXDIH)) THEN URITE(1.1045) 1045 FORHAT(/’ IN! THIS PROBLEH IS TOO LARGE NRI') SOTO 990 ENDIF c-.. SET DATA INTO TRANSFER FUNCTION FORHAT URITE(1.1000) 1000 FORHAT(//’ CALCULATING THE TRANSFER FUNCTION’. 2 /’ FROH STATE VARIABLE DATA...’) IF (DIHX.EQ.0) THEN URITE(1.1010) 1010 FORHAT(//’ NI! NO STATE VARIABLES Ii! ’) SOTO 990 ENDIF NUHKIl NUHYIl NUHUII IF (DIHU.EQ.0) THEN URITE(1.1020) 1020 FORHATIII’ RN! NO INPUT VARIABLES ii! ’) GOTO 990 ELSEIF (DIHU.GT.1) THEN URITEI1.1030) 1030 FORHAT(/’ UHICH U TO BE USED? (1): ’.I) CALL GETINT(NUHU.1.DIHU.14) ENDIF IF (DIHY.EQ.0) THEN URITE(1.1040) 1040 FORHAT(/’ UHICH X TO BE USED’. 2 /’ AS OUTPUT? (1): ’.0) CALL GETINT(NUHX.1.DIHX.22) DIHYII DO 110 JI1.DIHX 110 C(1.J)I0.0 C(1.NUHX)I1.0 DO 120 JI1.DIHU 120 D(1.J)I0.0 ELSEIF (DIHY.GT.1) THEN URITE(1.1050) 1050 FORHAT(/’ UHICH Y TO BE USED? (1): ’.O) CALL GETINT(NUHY.1.DIHY.14) ENDIF C c--- SET UP THE PROPER A.BCOL.CROU.DELEH C DO 210 II1.DIHX BCOL(I)IB(I.NUHU) 210 CROUII)IC(NUHY.I) DELEHID(NUHY.NUHU) C C-- INCLUDE FEEDBACK EFFECTS HERE C IF (FBKFLG) THEN IF (XGAIN.EQ.0.0) THEN URITE(1.2010) 2010 FORHAT(/’ ZERO CONTROLLER GAIN IN THE’. 2 /’ FEEDBACK SYSTEH. ’) GOTO 990 ENDIF DELENIKGAINIDELEH DO 230 II1.DIHX BCOL(I)IKGAIN!BCOL(I) 230 CROU(I)ICROU(I)-DELEH DO 240 II1.DIHX DO 240 JI1.DIHX 240 A(I.J)IA(I.J)-BCOL(I)OKFB(J) ENDIF C C--- GET THE TRANSFER FUNCTION HERE C--- AND STORE IN POLYBN. ROOTBK C IDDEGIDIHX CALL CONHAT(A.BCOL.CROU.DELEH.EVALRP.EVALIP.BADDAT) GOTO 999 C 990 BADDATI.TRUE. SOTO 999 991 BADFILI.TRUE. 999 RETURN END C C CNNNNNNINNNNNNNNNNNNNNNNN!NINN COIflAT NNNNNNNNNNNNNNNNNINNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN THIS SUBROUTINE CONVERTS A.BCDL.CROU.DELEH TO POLYNOHIAL TRANSFER FUNCTION FORHAT. HODIFIED BY J. GREGORSKI DECEHBER.1984 COEFFN(I).COEFFD(I) POLYNOHIAL COEFFICIENTS BCOL IS THE B VECTOR. CHOU IS THE C VECTOR (TRANSPOSE). SUBROUTINE CONHAT(A.BCOL.CROU.DELEH.EVALRP.EVALIP.BADDAT) C: I013¢1¢1¢1¢1C1f1f1f1 INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSXIT)COHHON.DIR)POLYBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)ROOTBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)RANGBK.TEXT’ LOGICAL BADDAT REAL A(HAXDIH.HAXDIH).BCOLIHAXDIH).CROVIHAXDIH) REAL ADJA(HAXDIH.HAXDIH.HAXDIH) REAL EVALRP(HAXDIH).EVALIPIHAXDIH) GAINI1.0 DO 5 II1.IDDEG+1 5 COEFFN(I)I0.0 c-.. THIS SECTION SOLVES DET(SI-A) FOR DENOH POLY c-.. THIS IS THE CHARACTERISTIC EQUATION CALL CHREQAIA.IDDEG.COEFFD.BADDAT) IF (BADDAT) GOTO 999 c-.. THIS SECTION SOLVES CROU-TRANSPOSENIADJ(SI-A))IBCOL c--- FDR NUHERATOR POLY C CALL CHREQ(A.ADJA.IDDEG.COEFFD) CALL HPY(BCDL.CROU.ADJA.IDDEG.CDEFFN.INDEG.BADDAT) IF (BADDAT) GOTO 999 C C--- HERE VE ADD IN THE EFFECT OF D C IF (DELEH.NE.0.0) THEN DO 20 II1.IDDEG+1 20 COEFFN(I)ICOEFFN(I)+DELEH§COEFFD(I) DO 25 ISIDDEG+AOAP-1 IF (COEFFN(I).NE.0.0) GOTO 28 25 CONTINUE BADDATI.TRUE. GOTO 999 28 INDEGII-I ENDIF C c... RAKE SURE COEFF. ARE UITHIN RANGE C DO 50 II1.INDEG+1 IF(COEFFN(I).LT.BLO) COEFFN(I)IBLO IF(COEFFN(I).GT.BHI) COEFFN(I)IBHI IF(ABS(COEFFN(I)).LT.(1./BHI)) COEFFN(I)IO 50 CONTINUE C DO 60 II1.IDDEG+1 IF(COEFFD(I).LT.BLO) COEFFD(I)IBLO IF(COEFFD(I).GT.BHI) COEFFD(I)IBHI IF(ABS(COEFFD(I)).LT.(1./BHI)) COEFFD(I)IO 60 CONTINUE C c..- FILL IN FACTOR-FORHATTED DATA BASE (ROUTBK) C SYGAINIGAINUCOEFFN(INDEG+1)/COEFFD(IDDEG+1) DO 10 II1.IDDEG RDR(I)IEVALRP(I) 10 ' RDI(I)IEVALIP(I) CALL PROOT(INDEG.COEFFN.RNR.RNI.1) 999 RETURN END C C CNNNNNNNNNNNNNNNINNNNNNNNNNNNN CflflEQA NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CINNNNNNNNNNNNN‘NNNNNN‘NNNNNRNNNNNN‘INNNNNINNNNNNNNNNNINNNNNNNINNNNNNN SUBROUTINE CHREQA DETERHINES COEFFICIENTS OF CHAR POLY OF A. SEE J.L.HELSA: “AN ALGORITHH FOR THE DESIGN OF LINEAR STATE VARIABLE FEEDBACK SYSTEHS'. PROC ASILOHAR CONFERENCE ON SYSTEHS AND CIRCUITS.HONTEREY. CALIFORNIA .PP. 791-799. NOV. 1987. NODIFIEN BY J. GREGORSKI DECEHRER.1984 NIIDDEG. CICOEFFD. AIA HATRIX 00000000000 SUBROUTINE CHREQA(A.N.C.BADDAT) 0 INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ LOGICAL BADDAT REAL AIHAXDIH.HAXDIH).C(HAXDIH+1) REAL B(HAXDIH.HAXDIH).D(150) INTEGER N.J(HAXDIH+1) NNIN+1 DO 20 II1.NN 20 C(I)I0.0 C(NN)I1.0 DO 14 "'10" KIO LII J(1)I1 SO TO 2 J(L)IJ(L)+1 IF(L-H)3.5.990 HHIH-1 DO 4 IIL.HH IIII+1 4 JIIIIIJ(I)+1 5 DO 10 II1.H DO 10 KKI1.H NRIJ(I) NCIJ(KK) 10 B(I.KK)IA(NR.NC) KIKII D(K)IDET(B.H) DO 5 1.1:“ LIN-I+1 IF(J(L)-(N-H+L))1.6.990 6 CONTINUE H1IN-N+1 D0 14 I'AVK 14 C(H1)IC(H1)+D(I)i(-1.0):RH GOTO 999 990 BADDATI.TRUE. ulnar- 999 RETURN END C C CIUNI!NNNIINNNININNNNIINNINNNN DETIFCN) INININNNNNNNNNNNNIINNNNNNNN C!NNNNNNNNNNNNNIN!NNNNNNNNNNNINNNNNNNINNNNNNNNINNNNNNNNNNINNINNNNNN FUNCTION DET CALCULATES THE DETERHINANT OF A HATRIX . A IS THE HATRIX AND KC IS THE ORDER OF HATRIX A . HODIFIED BY J. GREGORSKI DECEHBER.1984 (ICICICICICI FUNCTION DET(A.KC) (I INCLUDE ’ SYSK I T)COIIIION. D I R )CTRLBK. TEXT’ REAL A(HAXDIH.HAXDIH).B(HAXDIH.HAXDIH) IREVIO DO 1 II1.KC DO 1 J‘IOKC 1 B(I.J)IA(I.J) DO 20 I'onc KII 9 IF(B(K.I))10.11.10 11 KIK+1 10 12 13 14 19 16 I 17 20 51 C C lF(K-KC)9.9.51 IF(I-K112.14.51 DO 13 HI1.KC TEHP'BIIIHJ B(I.H)IB(K.H) B(K.H)ITEHP IREVIIREV+1 IIII+1 IF(II.GT.KC) GO TO 20 DO 17 HIII.KC IF(BIH.I))19.17.19 TEHPIBIH.I)/BII.I) DO 15 NII.KC BIH.N)IB(H.N)-B(I.N)!TEHP CONTINUE CONTINUE DETI1.0 DO 2 II1.KC DETIDETIB(I.I) DETII-l.0)RXIREVIDET RETURN DETI0.0 RETURN END C!NNNNNNNNNNNNNNNNNNNNNNNNNNNN flPY NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNN CICICICICICICICICICI (I FORHS NUHERATOR POLY (COEF) OF ORDER NORD N IS INPUT AS DIN ADJA. SUBROUTINE HPY FORHS A SCALAR POLYNONIAL FROH A HATRIX POLYNOHIAL . SEE ’COHPUTER PROGRAHS FOR COHPUTATIONAL ASSISTANCE IN THE STUDY OF LINEAR CONTROL THEORY’ . BY J.L. HELSA AND S.K. JONES . SECOND EDITION . 1973 . PP 152 . HODIFIED BY J. GRESORSKI DECEHBER.1984 SUBROUTINE HPY(BCOL.CROU.ADJA.N.COEF.NORD.BADDAT) INCLUDE ’SYSKIT>COHHON.DIR)CTRLBK.TEXT’ REAL BCOL(HAXDIH).CROU(HAXDIH).COEF(HAXDIH+1) REAL ADJA(HAXDIH.HAXDIH.HAXDIH) REAL U(HAXDIH.HAXDIH) LOGICAL BADDAT INTEGER N.NORD DO A I'Ao" DO I JIloN N(JoIIIO.0 DO A “‘10" N(J.IIIUIJ.I)+ADJA(I.J.K)*BCOL(K) DO 2 III.N COEF(I)I0.0 10 92 C C DO 2 3.1:" COEFII)ICOEF(I)+U(J.I)ICROU(J) COEF(N+1)I0.0 DO 10 I."Pll-1 IF (COEF(I).NE.0.0) GOTO 92 CONTINUE BADDATI.TRUE. NORDII-I RETURN END CINNNNNNNNNNNNNNINNNNNININNNNN CHREQ NNNNINNINNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNININNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIINNNNNNNNN (ICICICICICICICUCICICICICI (I “8 40 HODIFIED TO CALCULATE ADJ(SI-A) ONLY. ADJA(K.I.J)I ADJ(I.J) OF Si§(K-1) N IS DIHENSION OF A. COEF IS CHAR POLY. SUBROUTINE CHREQ FINDS THE COEFFICIENTS OF THE CHARACTERISTIC POLYNOHIAL USING THE LEVERRIER ALSORITHH . SEE ’COHPUTER PROGRAHS FOR COHPUTATIONAL ASSISTANCE IN THE STUDY OF LINEAR CONTROL THEORY’ . J.L. HELSA AND S.K. JONES . SECOND EDITION .1973 PP 145 . HODIFIED BY J. GREGORSKI DECEHBER.1984 SUBROUTINE CHREQ(A.ADJA.N.COEF) INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INTEGER N REAL A(HAXDIH.HAXDIH).ATEHP(HAXDIH.HAXDIH) REAL PROD(HAXDIH.HAXDIH).COEF(HAXDIH+1) REAL ADJA(HAXDIH.HAXDIH.HAXDIH) DO 5 I‘IVHAKDIH DO 5 JI1.HAXDIH ATENP(I.J)I0.0 DO 65 II1.N ATEHP(I.I)I1.0 DO 80 I'lo" DO 80 3‘10" ADJA(N.I.J)IATEHP(I.J) DO 40 I'lou DO 40 J'ION ATEHP(I.J)IA(I.J) DO 10 I31!" NNNIN-I IF(I.EQ.1)GO TO 55 NPINNN+1 DO 90 III1.N DO 90 3.1:" 15 13 10 C C ADJA(NP.II.J)IATEHP(II.J) DO 15 3.19" DU 15 x31!" PROD(J.K)I0.0 DO 15 L'AVN PROD(J.K)IPROD(J.K)*(A(J.L)IATEHP(L.K)) DO 13 JI1.N DO 13 K‘IVN ATEHP(J.K)IPROD(J.K) DO 10 JI1.N ATENP(J.J)IATEHP(J.J)+COEF(N-I*1) RETURN END CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN PROOT NNNNNNNNNNNNNNINNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNN (I (ICICUCICICI(ICICUCUCICICICI SUBROUTINE PROOT USES A HODIFIED BARSTOU HETHOD TO FIND THE ROOTS OF A POLYNOHIAL . SEE R. U. HAHHING: NUHERICAL HETHODS FOR SCIENTISTS AND ENGINEERS . HCGRAV-HILL BOOK COHPANY . INC . . 1962 . PP. 356-359 . FOR FURTHER INFORHATION . HODIFIED BY J. GREGORSKI DECEHBER.1984 NIORDER POLYNOHIAL AICOEFFICIENTS POLY UIREAL PARTS ROOTS VIIHAG PARTS ROOTS IRIHAGICAL HYSTERY VARIABLE SUBROUTINE PROOT(N.A.U.V.IR) INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ REAL A(HAXCOF).U(HAXDEG).V(HAXDEG).H(HAXCOF). 2 D(HAXCOF).C(HAXCOF) IREVIIR NCIN+1 Do A II1.NC N(IIIAII) PI0.0 Q30.0 RIO.0 IF(H(1))4.2.4 NCINC-I IF(NC.LE.0) GOTO 100 V(NC)I0.0 U(NC)=0.0 DO 1002 II1.NC 1002 H(I)IH(I+1) GO TO 3 01015 11 12 13 15 16 19 20 21 24 30 37 31 34 36 IF(NC-1)5.100.5 IF("C’Z’79697 RI-H(1)/H(2) SO TO 50 IF(NC-3)9.8.9 PIH(2)/H(3) QIH(1)/H(3) GO TO 70 IF(ABS(H(NC-1)/H(NC))-ABS(H(2)/H(1)))10.19.19 IREVI-IREV HINC/Z DO 11 II1.N NLINC+1-I FIRINL) HINL)IH(I) HII)IF IF(Q)13.12.13 PI0.0 GO TO 15 PIP/Q QI1.0/Q IF(R)16.19.16 RI1.0/R EI4.0E-7 BINC)IH(NC) C(NC)IH(NC) B(NC+1)I0.O C(NC+1)I0.O NPINC-l DO 49 JI1.1000 DO 21 IlI1.NP IINC-Il B(I)IH(I)+RNB(I+1) C(I)IB(I)+R:C(I+1) IF(ABS(BII)IH(1))-E)50.50.24 IF(CI2))23.22.23 RIR+1.O SO TO 30 RIR-B(l)/C(2) DO 37 IlI1.NP IINC-Il BII)IH(I)-P!B(I+l)-QRB(1+2) C(I)IB(1)-PIC(I+l)-Q!C(I+2) IF (HI2))32.31.32 IF(ABS(RI2)/H(l))-E)33.33.34 IF(ABS(RI2)/H(2))-E)33.33.34 IF(ABS(B(1)/H(l))-E)70.70.34 CBARIC(2)-B(2) DIC(3)I52-CBAR*C(4) IF(D)36.35.36 PIP-2. QIQIIQ+1.O) SO TO 49 PIP+(B(2)!C(3)-BII)ICI4))ID QIQ+(-B(2)§CBAR+B(1)§C(3))ID 49 CONTINUE EIE'4. GO TO 20 50 NCINC-I V(NC)I0.0 IF(IREV)51.52.52 51 U(NC)I1.0/R SO TO 53 52 UINCIIR 53 DO 54 II1.NC 54 H(1)IB(I+1) GO TO 4 70 NCINC‘2 IF(IREV)71.72.72 71 QPI1.0/Q PP'P/(QN2.0) SO TO 73 72 QPIQ PPIP/2.0 73 FI(PP)"2-QP IF(F)74.75.75 74 U(NC+1)I-PP UINC)I-PP V(NC+1)ISQRT(-F) V(NC)I-V(NC+1) GO TO 76 75 IF(PP)81.80.81 80 UINC+1IIISQRT(F) GO TO 82 81 U(NC+1)I-(PPIABS(FP))l(ABS(PP)+SQRT(F)) 82 CONTINUE V(NC+1)I0.0 U(NC)IQP/U(NC+1) V(NC)I0.0 75 DO 77 I'AONC 77 H(I)IB(I+2) GO TO 4 C 100 RETURN END C C CNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNINNNN‘N CNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNN C C QIQ+(-B(2)lCBAR+B(1)§C(3))ID 49 CONTINUE EIEI4. GO TO 20 50 NCINC-I V(NC)I0.0 IF(IREV)51.52.52 51 U(NC)I1.0/R GO TO 53 52 U(NC)IR 53 DO 54 II1.NC 54 HII)IB(I+1) SO TO 4 70 NCINC-2 IF(IREV)71.72.72 71 QPI1.0/Q PPIP/(Qi2.0) GO TO 73 72 QPIQ PPIP/2.0 73 FI(PP)!*2IQP IF(F)74.75.75 74 U(NC+1)I-PP U(NC)I-PP V(NC+1)ISQRT(-F) V(NC)I-V(NC+1) GO TO 76 75 IF(PP)81.80.81 80 U(NC+1)I-SQRT(F) GO TO 82 81 U(NC+1)I-(PP/ABS(PP))I(ABS(PP)+SQRT(F)) 82 CONTINUE V(NC+1)I0.0 U(NC)IQP/U(NC+1) V(NC)I0.0 76 DO 77 II1.NC 77 H(I)IB(I+2) GO TO 4 C 100 RETURN END C C CNNNNNNN‘NNNNNNI‘NNNNIINNNNNNINNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNINNNNN CNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN C C C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN FBLOKS NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CRNNINNNNNNNNNNNNINNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN C C C-- DESCRIPTION: C Perforee ell of the grephicel output ee well ee C output to printer queue. C C-- CONTENTS: C BPLOT generetee e Bode plot C NPLOT generetee e Nyquiet plot C RPLOT generatee e root Iocue plot C DATAPR eende output directly to printer queue C C-- INDEX: C BPLOT C DATAPR C NPLOT C RPLOT C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN BPLOT NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNINNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN SUBROUTINE BPLOT USES A SUBSET OF THE OUTPUT FROH THE SUBROUTINE FRESP TO GENERATE THE BODE PLOT. URITTEN BY J. GREGORSKI AUGUST.1984 --- INPUT: (1) ’FOUTBK’ : A COHHON BLOCK CONTAINING A SUBSET OF OUTPUT FROH FRESP. IT IS GENERATED IN FDISP AND CONTAINS HAGNITUDE. PHASE. AND FREQUENCY INFORHATION FOR THE SELECTED DISPLAY RANGE OF FREQUENCIES. -- OUTPUT: (1) THE OUTPUT IS IN GRAPHIC PORN ONLY . A) HACNITUDE AND PHASE VERSUS FREQUENCY. (ICICICICICICICICICICICICYCICICI SUBROUTINE BPLOT C: INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)LABLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)FOUTBK.TEXT’ DIHENSION F(10).G(10).H(10) DIHENSION ISTRIN(13).JSTRIN(16).KSTRIN(9) REAL U(HAXFRP).H(HAXFRP).PD(NAXFRP).PR(HAXFRP) INTEGER K.NSTEP.N DATA ISTRIN/10.10.10.10.77.65.71.78.73.84.85.68.69/ DATA JSTRIN/IO.10.10.10.10.10.10.10.10.10.10.80.72.65. & 83.69] DATA KSTRIN/70.82.69.81.85.69.78.67.89/ C c--- READ IN THE OUTPUT OF FRESP FOR PLOTTING C NSTEP I NPTOUT DO 10 IKI1.NSTEP U(IK) I UOUT(IK) N(IK) I HASOUT(IK) PD(IK) I PHDOUT(IK) PR(IK) I PHOUT(IK) 10 CONTINUE DO 800 KI1.NSTEP NI(ABS(PD(K))+180.)/360. RNIN PD(K)IPD(K)-360.ISIGN(RN.PD(K)) AZIPD(K) 600 CONTINUE DO 50III1.10 IIII-I F(II)3180. GIIIII-IBO. N(IIIIU(1)+((U(NSTEF)-H(1))/9.)NI 50 CONTINUE C IF (.NOT.VLOG) THEN SOTO 20 ELSE GOTO 30 ENDIF C c... THIS IS THE PLOT ROUTINE FOR LINEAR OHEGA VALUES C C-- FOR HAGNITUDE VERSUS FREQUENCY C 20 CALL RECOVR CALL BINITT CALL HOVER(50.0) CALL SLIHX(150.850) CALL SLIHY(400.700) CALL VLABEL(13.ISTRIN) CALL VLABEL(16.JSTRIN) CALL NOTATE(450.20.9.KSTRIN) CALL LINEIO) CALL NPTS(NSTEP) CALL CHECK(U.H) CALL DSPLAY(U.H) C C-- FOR PHASE VERSUS FREQUENCY C CALL BINITT CALL SLIHXI150.850) CALL SLIHY(100.300) C CALL CALL CALL CALL CALL LINE(2) DLIHY(-180..180.) NPTS(NSTEP) CHECK(U.PD) DSPLAYIU.PD) C-- PUT THE 180 DEGREE LINES ON PHASE PLOT C C CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL LINE(O) NPTS(10) CHECK(H.F) CPLOT(H.F) LINE(O) NPTS(10) CHECKIH.G) CPLOT(H.G) HOVABS(250.755) CHARTKITITLE1.1.0) HOVABS(250.730) CHARTK(TITLE2.1.0) HOHE ANHODE GO TO 40 C-- THIS IS THE PLOT ROUTINE FOR LOG OHEGA VALUES C C--- PHASE C 30 C CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL VERSUS FREQUENCY RECOVR BINITT HOVER(50.0) VLABEL(13.ISTRIN) VLABEL(16.JSTRIN) NOTATE(450.20.9.KSTRIN) SLIHX(150.850) SLIHY(100.300) LINE(2) XTYPE(2) XLAB(2) YTYPE(1) YLAB(1) DLIHY(-180..180.) NPTS(NSTEP) CHECK(U.PD) OSPLAY(U.PD) C--- PUT THE 180 DEGREE LINES ON PHASE PLOT C CALL CALL CALL CALL CALL CALL LINE(O) NPTS(10) CHECKIH.F) CPLOT(H.F) LINE(O) NPTS(10) C CALL CALL CHECK(H.G) CPLOT(H.G) c-.. HAGNITUDE VERSUS FREQUENCY C C C CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL BINITT SLIHX(150.850) SLIHY(400.700) LINE(O) XTYPE(2) XLAB(2) YTYPE(2) YLAB(2) NPTS(NSTEP) CHECK(U.H) DSPLAY(U.H) BINITT HOVABS(250.755) CHARTK(TITLEI.1.0) HOVABS(250.730) CHARTK(TITLE2.1.0) HOHE ANHODE CONTINUE RETURN CNNNNNNNNNNNNNNNNNNN NNNNNNNNNN NPLOT NN‘NNNNNNINNNNNNN‘NNNNNNNNNNNNN CNNNNNNNNNNNNNNNININNINNNNNNNNNNNNN‘INNNNNNNINNNNNNNNNNNNNNNNNNNNNNN SUBROUTINE NPLOT USES A SUBSET OF THE OUTPUT FROH THE SUBROUTINE FRESP TO GENERATE THE NYQUIST PLOT. URITTEN BY J. GREGORSKI AUGUST.1984 --- INPUT: (1) ’FOUTBK’ : A COHHON BLOCK CONTAINING A SUBSET OF OUTPUT FROH FRESP. IT IS GENERATED IN FDISP AND CONTAINS NAGNITUDE. PHASE. AND FREQUENCY INFORHATION FOR THE SELECTED DISPLAY RANGE OF FREQUENCIES. ~- OUTPUT: (1) THE OUTPUT IS IN GRAPHIC PORN ONLY . A) THE NYQUIST PLOT 0000000000000000 SUBROUTINE NPLOT 0 INCLUDE ’SYSKIT)COHHON.DIR>CTRLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)LABLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)FOUTBK.TEXT’ DIHENSION XNYIHAXFRP).YNY(HAXFRP) DIHENSION NSTRIN(10) DIHENSION NSTRIN(22) REAL U(HAXFRP).H(HAXFRP).PD(HAXFRP).PR(HAXFRP) INTEGER NSTEP DATA NSTRIN/10.10.10.10.10.10.10.73.77.65.71.73.78.65.82.89. N 10.10.65.88.73.83l DATA HSTRIN/82.69.65.76.32.32.65.88.73.83/ C c-.. REASSIGN OUTPUT VARIABLES. C C C NSTEP I NPTOUT DO 20 IJI1.NSTEP U(IJ) I VOUT(IJ) N(IJ) I HAGOUT(IJ) PD(IJ) I PHDOUT(IJ) PR(IJ) I PHOUT(IJ) CONTINUE DO 80 KI1.NSTEP XNY(K)IN(K)NCOS(PR(K)) YNY(K)IH(K)§SIN(PR(K)) CONTINUE CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL RECOVR BINITT SLIHY(150.700) SLIHX(100.730) NOTATE(400.40.10.HSTRIN) HOHE VLABEL(22.NSTRIN) NPTS(NSTEP) CHECK(XNY.YNY) DSPLAY(XNY.YNY) HOVABS(250.755) CHARTK(TITLE1.1.0) HOVABS(250.730) CHARTK(TITLE2.1.0) HOHE ANHODE RETURN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN RPLOT NNNNNNNNNNNINNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN‘NN‘NNNNNNNNNNNNNN SUBROUTINE RPLOT PLOTS THE ROOT LOCUS OUTPUT. THE CALLING PROGRAH RUST PAGE THE SCREEN BY USING AN INITT CALL AND THEN RETURN TO ALPHANUHERIC HODE BY USING CALL ANHODE. URITTEN BY J. GREGORSKI AUGUST.1984 0000000 SUBROUTINE RPLOT ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ ’SYSKIT)COHHON.DIR)ROUTBK.TEXT’ ’SYSKIT)COHHON.DIR)LABLBK.TEXT’ INCLUDE ’ SYSK I T)COIIIION. D I R)ROOTBK. TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)POLYBK.TEXT’ DINENSION U(HAXRLPIHAXDEG).V(HAXRLPlHAXDEG).X(2).Y(2) CHARACTER'33 NAHE1 CHARACTERI80 NAHES DIEENSION ILABEL(14).JLABEL(9) INCLUDE INCLUDE INCLUDE DATA ILABEL/73.77.65.71.73.78.65.82.89.10.80.65.82.84/ DATA JLABEL/82.69.65.76.32.80.65.82.84/ -- FILL THE NAHE VECTORS USED TO LABEL THE PLOT 0000000 URITE(NAHE1.100) FORHAT(15X.’ROOT LOCUS PLOT ’) VRITE(NAHE5.104) KOUT(I).KOUT(NOUT) FORHAT(’SYSTEH GAIN IS VARIED BETUEEN’.F10.3.’ AND ’.F10.3) 100 104 C c--- GENERATE 1-D PLOTTING ARRAYS FROH 2-D OUTPUT ARRAYS. C 350 300 C KIO DO 300 II1.IDDEG DO 350 JI1.NOUT KIK+1 U(K) I RROUT(I.J) V(K) I RIOUT(I.J) CONTINUE CONTINUE HINOUTIIDDEG C-- LABEL C CALL THE PLOT RECOVR BINITT HOVABS(0.750) CHARTK(NAHE1.1.5) HOVABS(150.710) CHARTK(NAHE5..9) HOVABS(44.375) VLABEL(14.ILABEL) CHARTK(’IHAG.’..75) HOVABS(44.350) CHARTK(’AXIS’..75) HOVABSI500.70) HLABEL(9.JLABEL) CHARTK(’REAL AXIS’..75) HOVABS(250.45) CHARTK(TITLE1.1.0) HOVABS(250.20) C CALL CHARTK(TITLE2.1.0) c--- PLOT THE ROOT LOCUS C C CALL CALL CALL CALL CALL CALL CALL CALL CALL SLIHX(175.900) SLIHY(150.626) NPTS(H) SIZES(.45) SYHBL(1) LINE(44) LINE(I4) CHECK(U.V) DSPLAY(U.V) C-- PLOT THE POLES AND ZEROS C C CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL SIZESI1.0) LINE(I4) SYHBL(2) NPTS(IDDEG) CHECK(RDR.RDI) CPLOT(RDR.RDI) SYHBL(4) NPTS(INDEG) CHECK(RNR.RNI) CPLOT(RNR.RNI) C--- DRAU IN THE ASYHPTOTES C DO 400 JI1.IOUT X(I) X(2) Y(I) Y(2) CALL CALL CALL CALL CALL I SOUT I SOUT+ZHAX§COS(AOUT(J)) I 0.0 I ZHAXNSIN(AOUT(J)) SYHBL(0) NPTS(2) LINE(1212) LINE(3) CPLOT(X.Y) 400 CONTINUE CALL HOHE CALL ANHODE RETURN END C C CNNNNNNNNNNNNNNNNNNINNNNNNNNN DATAPR NNNNNNNNNNNNINNNNNNNINNNNNNNN CNN!NNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNINNNN C C C THIS THING IS NOT TRANSPORTABLE ANYUHERE C THIS SUBROUTINE ALLOUS OUTPUT TO BE URITTEN DIRECTLY TO THE PRINTER QUEUE USING PRIHOS FUNITI9 (LUNI13). THE CALLING PROGRAH URITES THE INFO. AND THEN RUST CLOSE THE UNIT. RE-URITTEN BY J. GRESORSKI AUGUST.1984 (UCICUCNO SUBROUTINE DATAPR (I INTEGERl2 INFO(12).BUF(1024).BUFL.CODE BUFLI1024 INFO(1)I10 INFO(2)I9 INFO(3)I0 INFO(4)I:120240 INFO(5)I8120240 INFO(618:120240 CALL SPOOLO(INTS(2).’SPOOL_FROH_HODF’.15.INFO.BUF.BUFL.CODE) CALL ERRPRC(KOIRTN.CODE.0.0.0.0) RETURN END C c . CINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNINN! C C C C Appendix C HODULE C SOURCE CODE LISTINGS CNN!NNNNINNNNNNNNNNNNNNNNNNNNN flODULC NNNNNNNIINNNINNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNINNNNNINNNNNNNNNNNINNNNNNNNNNNINNNNNNNNNNINNNNNNNN 0000000000 0 1000 HAIN PROGRAH FOR TIHE DONAIN CONVER- SION OF H'Z”+CIZ’+KIZILlF AND C(I)§Y”’+ETCID(I)lU” ETC (ORDINARY NTH ORDER DIFF EQ) TO X’IAIX+BlU VRITTEN BY RCR’BERG AND KDU 10-1-82 REURITTEN BY J.GREGORSKI 3-25-82 PROGRAH HODULC INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)VIBRBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)SGLIBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)PARHBK.TEXT’ INCLUDE ’ SYSK I T)COIIHON. D I R)LABLBK. TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)FILRBK.TEXT’ INTEGER JUHPER CALL INITLC CALL TOPHDC IF (SYSFLG) THEN CALL CLEAVE IF (HODFLG) THEN GOTO 10 ELSE GOTO 999 ENDIF ENDIF GOTO 10 HODFLGI.FALSE. CALL UHEREC(JUHPER) GOTO(10.20.30.40.50.60.70.80.90.100)JUHPER c--- 10 c--- C c-.. C 80 C c--- C 90 INITIALIZE CALL ENTERC IF (HODFLG) GOTO 1000 PROBLEH TITLE CALL TTLGET IF (HODFLG) GOTO 1000 IF (SGLIFG) GOTO 50 H.C.K. INPUT CALL INHCK IF (HODFLG) GOTO 1000 L INPUT CALL INPUTL IF (HODFLG) GOTO 1000 SOTO 60 C(I). D(I) INPUT CALL SGLINP IF (HODFLG) GOTO 1000 LOOK AT. SPOOL. OR FILE A.B AND E.V. CALL SHOVAB IF (HODFLG) GOTO 1000 SOTO 100 PROBLEH OR RESULTS FILE HANAGEHENT CALL UNIDRV IF (HODFLG) GOTO 1000 LEAVE BLOCK CALL SAVPRC CALL CLEAVE IF (HODFLG) GOTO 1000 GOTO 999 SAVE PROBLEH DESCRIPTION ON DISK OR PRINTER CALL SAVPRC SOTO 1000 CONTINUE TO NEXT BLOCK IF (IBLK.GE.6) THEN SOTO 1000 ELSE IBLKIIBLK+1 GOTO ( 10.20. 25. 40. 60.100) IBLK ENDIF C 999 CONTINUE END C C CNNNNNNNINNINNNNNNNNNNNNNNNNNINNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN CINNNNNNNNNNNNINNNNNNNNNNNININNNNINNNNNINNNNNNNNNNNININNNNNNNINNNNN C C C C CNNNNNNNNNNNNNNNNNNNNNINNNNNNN CBLO‘I NNNNINNNNNNNNNNNNNNNNNNNNNNNN CNNIINNNNNNNNNNNNNNNNNNNNNNNINNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN C C C--- DESCRIPTION: (ICICICIleiflfififififiriflCICICI(ICICICICICICICICICICICI Set up end ee end initielize Hodule c. Gete problee title lection of eode end prohlee entry type. Conteine the eein eenu end on-line ueer help. Aleo output or filing of the O.D.E. problee or the eeeocieted etete epece foreuletion. III CONTENTS: SETUPC INITLC TDPHDC VHEREC ENTERC TTLGET SHOUAB SAVPRC CLEAVE CLEAVE ENTERC INITLC SAVPRC SETUPC SHOUAB TOPHDC TTLGET UHEREC block dete to eet pereenent pereeetere initielize pereeetere end dete heee on-line help for Hodule C eein eenu diepley end option proepte eode eelection end prohlee entry enter or chenge the prohlee title diepley or eeve etete equation dete write prohlee eteteeent to e file or printer exite Hodule C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN SETUPC NINNNNNNNNNNNNNNNNNNNNNNNNINN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNN CICUCICICICI SETS PARAHETERS FOR HODULE C UHICH ARE SPECIFIC TO IT AND VHICH ARE TO REHAIN UNCHANGED. URITTEN BY J. GREGORSKI HARCH.1985 BLOCK DATA SETUPC INCLUDE ’SYSKIT)COHHON.DIR)FILRBK.TEXT’ DATA UANTYP(1).UANTYP(2).PRBTYP/2.3.1/ DATA HEADER(1).HEADER(2)/2.1/ DATA HODULEI’C’I C CNNINNNNNNNNNNNNNNNNNNNINNNNNN IIITLC INNNNNNNNNNNNNNNNNNNINNNNNNNI CNNNNNNNNNNNNNNNNNNNNNINNNNININNINNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNN SET PARAHETERS FOR DEFAULT PROBLEH FORHULATION AS HELL AS INPUT LIHITS.COHPUTATION RANGE.TITLES.ETC... VRITTEN BY J. GREGORSKI HARCH.1985 (ICICICICICI SUBROUTINE INITLC III SETUP PARAHETERS FOR DEFAULT PROBLEH. CICICI INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)VIBRBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)SGLIBK.TEXT’ INCLUDE ’SYSKIT>COHHON.DIR)PARHBK.TEXT’ INCLUDE ’SYSKIT>COHHON.DIR)LABLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)FILRBK.TEXT’ SGLIFGI.FALSE. DIHHI2 HATHI1.1)I2.0 HATH(1.2)I4.0 NATN(2.1)I4.0 HATH(2.2)I9.0 INVN(1.1)I.045 INVH(1.2)I0.0 INVH(2.1)II2.0 I"Vfl(292).1.0 HATC(1.1)I1.0 HATC(1.2)IO.0 HATC(2.1)I0.0 HATCI2.2)I1.0 HATK(1.1)I2.0 HATKI1.2)I5.0 HATK(2.1)I5.0 HATK(2.2)I7.0 COLLI2 HRTLIIVA).1.0 HATL(1.2)I0.0 HATL(2.1)I0.0 HATL(2.2)I1.0 ORDERI3 COEF(1)I6.0 COEF(2)I2.O COEF(3)I5.0 COEF(4)I6.0 INNHBI1 INPT(1)I4.0 INPT(2)I1.0 BLOII1.E+15 BHII1.E+15 PRBFILI.TRUE. C C SYSFLGI.FALSE. HODFLGI.FALSE. LIBNAHI’PROBLEHNLIB’ TITLElI’IfiI HODULE C PROBLEH {fli’ RETURN END CININNNNNNNNNNNNNNNNNNNNNNNNNN TOPHDC NNNNNNNN‘NNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNINNNINNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 0000000000 0 1077 c--- 1000 1100 THIS SUBROUTINE IS DESIGNED TO DESCRIBE THE HODULE TO THE USER AND DETERHINE IF THE USER UISHES TO USE THE HODULE URITTEN BY ERIK GOODHAN. HODIFIED BY KEN UNITE AND RON ROSENBERG HODIFIED BY J. GREGORSKI HARCH.1985 SUBROUTINE TOPHDC INCLUDE ’SYSKIT)COHHON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)COHHON.DIR)LABLBK.TEXT’ LOGICAL YES CHARACTER§1 DUN URITE(1.1077) FORHAT(//’ HODULE C IS AT YOUR SERVICE FOR’. 2/’ CONVERTING DIFFERENTIAL EQUATIONS’. 3/’ TO STATE EQUATION FORH...’. 4//’ DO YOU UANT HORE DETAILS? (NO): ’.$) IF (YES(7.’N’)) THEN INTRODUCTORY TEXT URITE(1.1000) FORHATIII’ HODULE C DESCRIPTION’. 2/’ ’. 3l’ HODULE C CONVERTS PROBLEHS DEFINED’. 4/’ BY HIGHER-ORDER DIFFERENTIAL EQUATIONS’. 5/’ TO STATE-VARIABLE FORH. THO HODES ARE’. 6/’ AVAILABLE.’. 7//’ (1) STANDARD VIBRATION FORH:'. 8/l’ HIZ”” + C'Z” + KIZ I L'F’) URITE(I.1100) HAXDIH/2.HAXDIH FORHAT(I’ VHERE I IS POSITION VECTOR (DIN 1-’.I2.’).’ 2/’ F IS FORCING VECTOR (DIH 0-’.I2.’).’. 3/’ H IS HASS HATRIX.’. 4/’ C IS DAHPING HATRIX.’. 5/’ K IS STIFFNESS HATRIX.’. 6/’ AND L IS INPUT HATRIX.’) URITE(1.1200) 1200 FORRAT(I’ HIT (RET) TO CONTINUE...’) READ(1.1300) DUR 1300 FORRAT(Al) URITE(1.1400) RAXDIR.RAXDIRI1 1400 FORRAT(II’ (2) SINGLE HIGHER-ORDER DIFFERENTIAL’. Al’ EQUATION (EXARPLE):’. 2/l’ C2lY”” +C1IY” +C0lY I D1OU” +D05U’. 3/l’ UHERE Y IS OUTPUT (SCALAR).’. 41’ U IS INPUT (SCALAR).’. 5” AND C AND D ARE COEFFICIENTS.’. 6//’ THE HIGHEST DERIVATIVE FOR Y IS ’.I2.’ AND’. 7/’ FOR U IS ’.I2.’.’. 8/’ ’) URITE(1.1500) 1500 FORRAT(I’ PROCEED IN RODULE C? (YES): ’.3) IF (.NOT.YES(11.’Y’)) SYSFLGI.TRUE. ENDIF C RETURN END C C CRNNNNNNNNNNNNNNNNNNNNNNNNNNNN UHEREC NNNNN‘NNNNNNNNNNNNNRNNNNNNNNNN CINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNN 000 DISPLAYS RAIN HERO AND PRORPTS USER FOR OPTION DESIRED.CHECKS THAT IT IS A VALID OPTION. SENDS OPTION SELECTED TO RAIN AS JURPER. RE-URITTEN BY J. GREGORSKI RARCH.1985 SUBROUTINE VHEREC(JURPER) III RAIN RODULE OPTIONS 000 0000 URITE(1.111) 111 FORRAT(II’ RODULE C OPTIONS’./. 2’ ’9’, 3’ 1: SELECT RUDE AND PROBLER ENTRY’./. 4’ 2: ALTER THE PROBLER TITLE’./. 5’ 3: ALTER THE R.C.K RATRICES’./. 6’ 4: ALTER THE L RATRIX’./. 7’ 5: ALTER THE DIFFERENTIAL EQUATION’./. 8’ 6: VIEV OR SAVE THE A AND B RATRICES’) URITE(1.912) 912 FORRAT(’ 7: PROBLER OR RESULTS FILE RANAGERENT’./. 2’ 8: SAVE PROBLER STATERENT AND RETURN’./. 3’ 9: CONTINUE FROR LAST ACTION (IDEF)’./. 4’ 10: LEAVE THIS RODULE’./. 5’ ’) URITE(1.113) 113 FORRAT(’ PLEASE ENTER OPTION (9): ’.$) C C JURPERI9 CALL GETINTIJURPER.1.10.25) RETURN END CNNNNNINNNINNNNRNINNNNRNNNNNNN ENTERC NINNNNNNNNNNNINNINNNNNNNINNNN CNNNNNNNNNNNNNNINNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNIN 0000000 0 C BLOCK FOR PERFORRING DATA RELOAD FROR FILE. ALSO DETERRINES UHICH TYPE OF DIFF. EQU. FORRAT IS TO BE USED: VIBS OR HIGHER ORDER FORR. URITTEN BY J. GREGORSKI RARCH.1985 SUBROUTINE ENTERC INCLUDE ’SYSKIT)CORRON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)FILRBK.TEXT’ LOGICAL YES CI-I DETERRINE TYPE OF DIFF. EQU. TD VORK UITH. C 1010 100 1020 1030 150 C IBLKII URITE(1.1010) FORRAT(II’ DO YOU UANT TO UORK UITH’) VRITEI1.1020) FORRAT(’ R.C.K RATRICES? (YES): ’.0) IF (YES(11.’Y’)) THEN SGLIFGI.FALSE. GOTO 1 ENDIF URITE(1.1030) FORRAT(’ A SINGLE HIGHER-ORDER DIFF. EQU.? (YES): IF (YES(19.’Y’)) THEN SGLIFGI.TRUE. GOTO 1 ENDIF GOTO 100 RODFLGI.FALSE. URITE(1.150) FORRAT(II.’ PROCEED ? (YES): ’.3) IF(.NOT.YES(22.’Y’)) THEN RODFLGI.TRUE. RETURN ENDIF CIII DETERRINE RETHOD OF PROBLER ENTRY DESIRED. C 200 2020 RODFLGI.FALSE. URITE(1.2020) FORRAT(’ ENTER A NEH PROBLER INTERACTIVELY? (YES): IF (YES(11.’Y’)) RETURN IF DESIRED. ’.O) ’.8) URITEI1.2030) 2030 FORRATI’ RELOAD A PREVIOUSLY SAVED PROBLER FILE? (YES): '.O) IF (.NOT.YESI19.’Y’)) GOTO 200 PRBFILI.TRUE. LIBRARI’FRORLERNLIB’ CALL LODFIL URITEI1.150) IF (.NOT.YES(22.’Y’)) RODFLGI.TRUE. RETURN C END C C ClNNNNNNNNNNNINNNNNINNNNNIININ TTLGET NININNNNIINNNINNNNNNNNNNNINNN CINNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNINNNNININNNNNNNNNNNN C C C ENTER OR CHANGE THE TITLE FOR THE PROBLER. C RODIFIED BY J. GREGORSKI AUGUST.1984 C SUBROUTINE TTLGET C INCLUDE ’SYSKIT)CORRON.DIR)LABLBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)CTRLBK.TEXT’ C . LOGICAL YES C IBLKI2 C 10 URITE(1.1010)TITLE1 1010 FORRAT(II’ THE PROBLER TITLE IS:’.//.1X.A40//. 2 ’ CHANGE THE TITLE? (NO): ’.0) IF (YES(15.’N’)) THEN URITE(1.1020) 1020 FORRAT(II’ ENTER NEH TITLE ON ONE LINE:’/) READ(1.1030)TITLE1 1030 FORRAT(A40) GOTO 10 ENDIF C URITE(1.2000) 2000 FORRAT(II’ PROCEED? (YES):’.O) IF (YES(23.’Y’)) RETURN RODFLGI.TRUE. RETURN END C C CNINNNNNNNNNNNNNNINNNNNNNNNNNN SHOUAB NNNNNINNNNNNNNNININNNNNNNNNNN CNNNNNNNINNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNIINNNINNN C C C THIS SUBROUTINE VILL ALLOV THE USER TO VIEV. C PRINT OUT. OR SAVE THE A.B.C RATRICES AND E.V. HRITTEN BY KEN HHITE OCT 10.1982 REIHRITTEN BY J. GRESORSKI RARCH.1985 SUBROUTINE SHOHAB INCLUDE ’ SYSK IT)CORRON. D I R)CTRLBK. TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)PARRBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)SGLIBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)VIBRBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)EIGNBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)FILRBK.TEXT’ CHARACTERN1 RNARE.DUR LOGICAL YES C IBLKIS C CIII THIS BLOCK HILL CALL OUTRAT IF THE CIII USER HANTS TO VIEH THE A.B.C RATRICES C RNAREI’A’ HRITE(1.1010) RNARE 1010 FORRAT(II’ DO YOU HISH TO VIEH THE’I1X. +A1.’ RATRIX? (YES): ’.O) IF(YES(23.’Y’))THEN CALL OUTRAT(RNARE.DIRX.DIRX.A) ENDIF IF(DIRU.GT.0)THEN RNAREI’B’ HRITE(1.1010) RNARE IF(YES(23.’Y’))THEN CALL OUTRAT(RNARE.DIRX.DIRU.B) ENDIF END IF RNAREI’C’ HRITE(1.1010) RNARE IF (YES(23.’Y’)) THEN CALL OUTRAT(RNARE.DIRY.DIRX.C) ENDIF C CIII OPTION TO VIEH THE EIGENVALUES C HRITE(1.1110) 1110 FORRAT(II’ DO YOU HISH TO VIEH THE EIGENVALUES? (YES): ’.8) IF (YES(17.’Y’)) THEN HRITE(1.1100) 1100 FORRAT(3X./’ THE EIGENVALUES:') HRITE(1.2000) 2000 FORRAT(3X./’ VALUE’.4X.’REAL’.6X.’IRAGINARY’) DO 70 II1.DIRX HRITE(1.2020) I.EVALR(I).EVALI(I) 2020 FORRAT(IX.I3.2X.1PE12.5.1X.El2.5) 70 CONTINUE ENDIF C CIII OPTION TO OUTPUT A.B.C AND E.V. TO PRINTER C HRITE(1.1000) 1000 FORRAT(II’ HANT TO PRINT THE A.B.C RESULTS AND’. 21’ EIGENVALUES ON THE PRINTER? (NO): ’.O) IF (YES(17.’N’)) THEN HRITE(1.1020) 1020 FORRAT(I’ READY THE PRINTER’. 2 I’ AND HIT (RETURN)...’.O) READ(1.’(A1)’) DUR CALL PRINAB ENDIF C CIII OPTION TO SAVE A.B.C AND E.V. IN A FILE C HRITE(1.101) 101 FORRAT(I’ DO YOU HISH TO SAVE THE A.B.C RATRICES’./. 2’ AND EIGENVALUES IN A FILE? (NO): ’.O) IF(YES(16.’N’))THEN PRBFILI.FALSE. LIBNARI’PROBLERNLIB’ CALL SAVFIL ENDIF RETURN END C C CNNNNNNNNNNNNNNNNIINNNINNNNNNN SAVPRC NNNNINNNNINNNNNNNNIINNNNNINNN CNNNNNNNNNNNNNINNNINNNNNNINNNNNINN!NINNNNNNNNNINNNNNNNNNNNINNNNINNN IT QUERIES THE USER. AND HRITES INFORRATION TO A PRINTER OR FILE IF REQUESTED. THEN RETURNS TO CALLING PROGRAR FOR CONTINUATION OR EXIT. HRITTEN BY J. GREGORSKI RARCH.1985 0000000 SUBROUTINE SAVPRC 0 INCLUDE ’SYSKIT)CORRON.DIR)FILRBK.TEXT’ LOGICAL YES CHARACTER§3 ANSHER C HRITE(1.1000) 1000 FORRAT(II’ DO YOU HANT TO LIST’. 2 I’ THE CURRENT PROBLER STATERENT’. 3 /’ ON THE PRINTER? (ND): ’.3) IF (YES(14.’N’)) THEN HRITE(1.1010) 1010 FORRAT(II’ READY THE PRINTER’. 2 /’ AND HIT (RETURN)...’.$) READ(1.’(A3)’) ANSHER CALL PRINYR ENDIF C HRITE(1.101) 101 FORRAT(I’ DO YOU HISH TO SAVE THE CURRENT’./. 2’ PROBLER STATERENT IN A FILE? (NO): ’.0) IF(YES(16.’N’))THEN PRBFILI.TRUE. LIBNARI’PROBLERILIB’ CALL SAVFIL ENDIF RETURN END C C CNNNNNNNNNNNNNNNNNNNNINNNNNNNN CLE‘VE NNNNNNRNNNNNNNNNNNNNNNNNNRNNN CRNRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNINNNNNNNNNNNNN C C C ASKS IF USER HANTS TO EXIT RODULE C. C IF YES THEN IT GIVES A RESSAGE AND EXITS. C IF NO THEN RETURN TO RAIN RENU. C HRITTEN BY J. GREGORSKI RARCH.1985 C SUBROUTINE CLEAVE C INCLUDE ’ SYSK I T)CORRON. DI R)CTRLBK. TEXT’ LOGICAL YES C IBLKI6 HRITE(1.100) 100 FORRAT(II’ HANT TO LEAVE THIS RODULE? (YES): '.C) IF (YES(5. ’Y’ )) THEN HRITE(1.110) 110 FORRAT(II’ SEE YOU LATER...’/ 8’ i}! EXITED RODULE C flii’) RODFLGI.FALSE. ELSE RODFLGI.TRUE. ENDIF RETURN END C C ClINNNNNNNNNNINNNINNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNINNNNNNNNNNNN c:RainauuliiralauHERussaREE:E:REHXREHXEIXRERERRERRRHEXEXRIEXEERHIEX C C C C CNNNNNNNNNNNNNNNNNNNNNINNNNNNN CBLOK2 NNRNNNNNNNNRNNNNNNNNNNNNNNNNN CiNNNNNNNNNNNNNNNNNNNNNNNINN!NNINNNNNNNNNNINNNNNNNNNNNNNNNNNINNNNNI C C C-- DESCRIPTION: C Interective input of either e Vihe. fore or e eingle C higher order differential equ. Convereion to etete C epece foreuletion occure eutoeeticelly. C C--- CONTENTS: C INHCN inpute the R.C.K eetricee . foree A & C C INPUTL inpute the L eetrix . foree B a D C SGLINP inpute e eingle O.D.E. . foree A.B.C.D C C--- INDEX: C INHCK C INPUTL C SGLINP C C CRNNNNNNINNNNNNINNINNNNINNNNNN [NECK NRNNNNNNNNNNNNNNNNNNNNNNNNNNN CIINNRNNNNNNNNNNNNNNNNNINNNNIINNNINNNNNNNIRNNNNNNNINNNNNNNNNINNNNIN THIS SUBROUTINE IS DESIGNED TO INPUT THE R.C.K RATRICES NEEDED TO SOLVE VIBRATORY SYSTERS IN THE TIRE DORAIN HRITTEN BY KEN UNITE. AUG 2.1982 RODIFIEO BY J. GREGORSKI RARCH.1985 INVRK PRODUCT OF INVR AND THE K RATRIX l'vnc VP ’9 c ’9 CPOLY COEFFICIENTS FOR CHARACTERISTIC POLYNORIAL SIZE THE DIRENSION OF THE R.C.K RATRICES CICICICICI(ICICICICICICICI WMWHRIHG (I INCLUDE ’SYSKIT)CORRON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)PARRBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)VIBRBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)EIGNBK.TEXT’ LOGICAL FLAGR.GO.YES.BADDAT CHARACTERNI RNARE INTEGER RI.CI.LR.EC.FLAG.SIZE.I.ILOU.IHIGH REAL XDOTT(RAXDIR+1).TERPX(RAXDIH+1).INVRC(RAXDIR.RAXDIR). + INVRK(RAXDIR.RAXDIR).CPOLY(RAXCOF) C CIII CHECK TO SEE IF IN PROPER PROBLER RODE C IF (SGLIFG) THEN HRITE(1.110) 110 FORRAT(II’ Ii! HRONG INPUT RODE lfll’l. + ’ CANNOT ALTER VIBS. FORR UHEN IN SINGLE D.E. RODEI’) RODFLGI.TRUE. RETURN ENDIF C IBLKI3 C CIII PRORPT FOR RATRIX DIRENSION C ILOUI1 IHIGHIRAXDIR/2. SIZEIDIRR 11 URITE(1.100)DIRR 100 FORRAT(I.’ ENTER THE DIRENSION OF 2 (’.I1.’): ’.3) CALL GETINT(SIZE.ILOU.IHIGH.10) C CIII IF THE RATRIX SIZE IS INCREASED. THEN CIII DEFAULT VALUES ARE LOADED INTO THE CIII NEH ELERENTS C IF(SIZE.GT.DIRR)THEN DO 60 RII1.SIZE DO 60 CIIDIRR+1.SIZE RATR(RI.CI)I0. RATC(RI.CI)I0. 60 RATK(RI.CI)I0. DO 70 RIIDIRR+1.SIZE DO 75 CII1.DIRR RATR(RI.CI)I0. RATC(RI.CI)I0. RATK(RI.CI)I0. RATL(RI.CI)I0. 75 CONTINUE 7O CONTINUE DO 80 IIDIRR+1.SIZE RATR(I.I)I1.0 RATC(I.I)I1.0 80 RATK(I.I)I1.0 ENDIF C CIII STORE THE CURRENT RATRIX DIRENSIONS CIII INTO THE PROPER CORRON BLOCK VAR C DIRRISIZE C CIII NOU LOAD THE RATRICES CIII THE RATRICES HILL BE FILLED ONE CIII AT A TIRE DO 10 [31:3 IF(I .EQ. 1) RNAREI’R’ IF(I .EQ. 2) RNAREI’C’ IF(I .EQ. 3) RNAREI’K’ c-.. c--- c... c-..- 1010 c--- INPUTH ALLOUS THE USER TO LOAD THE RATRICES UITH DATA IF(I.EQ.1)THEN CALL INPUTR(RNARE.DIRR.DIRR.RATR) DETERRINE IF H IS SINGULAR. IF NOT. GET ITS INVERSE CALL SIREQ(RATR.XDOTT.DIRR.INVR.TERPX.FLAG) FLAGRI.FALSE. IF(FLAG.EQ.0)THEN URITE(1.1010) FORRAT(I’ THE R RATRIX IS SINGULAR. DO YOU’. 2 /’ HANT TO CORRECT IT? (YES):’.O) IF(YES(11.’Y’))THEN FLAGRI.TRUE. ELSE RODFLGI.TRUE. END IF ENDIF END IF IF INVR IS OKAY. LOAD THE K.C RATRICES IF((.NOT.FLAGR).AND.(.NOT.RODFLG))THEN IF(I.EQ.2)CALL INPUTRIRNARE.DIRR.DIRR.RATC) IF(I.EQ.3)CALL INPUTR(RNARE.DIRR.DIRR.RATK) END IF CONTINUE IF(FLAGR)GOTD 11 IF(.NOT.RODFLG)THEN NOH RULTIPLY K.C BY INVR CALL RRULTIINVR.RATC.INVRC.DIRR.DIRR.DIRR) CALL RRULT(INVR.RATK.INVRK.DIRR.DIRR.DIRR) FORR THE NEGATIVE OF INVRC AND INVRK DO 1 RII1.DIRR DO 2 CII1.DIRR INVRC(RI.CI)IIINVRCIRI.CI) INVRKIRI.CI)IIINVRK(RI.CI) CONTINUE CONTINUE NOH FORR THE A RATRIX. ITS DIRENSIONS UILL BE TUICE THAT OF THE R RATRIX. IT UILL BE FORRED FROR 4 SEPARATE RATRICES. DO 3 RII1.DIRR LRIDIRR+RI DO 4 CII1.DIRR ECIDIRR+CI C CIII THIS FILLS THE UPPER LEFT QUADRANT C A(RI.CI)I0. C CIII THIS FILLS THE UPPER RIGHT QUADRANT C IF(CI.EQ.RI)THEN A(RI.EC)I1. ELSE A(RI.EC)IO. END IF C CIII THIS FILLS THE LOHER LEFT QUADRANT C A(LR.CI)IINVRK(RI.CI) C CIII THIS FILLS THE LOHER RIGHT QUADRANT C A(LR.EC)IINVRC(RI.CI) 4 CONTINUE 3 CONTINUE C DIRXIDIRRN2 DIRYIDIRR C CIII FIND THE EIGENVALUES FOR THE A RATRIX C BADDATI.FALSE. CALL CHREQA(A.DIRX.CPOLY.BADDAT) IF (BADDAT) THEN HRITE(1.222) 222 FORRAT(I’ BAD INPUT DATA. UNABLE TO CALCULATE THE’. + /’ EIGENVALUES. PLEASE REIENTER THE PROBLERI’) GOTO 11 ENDIF CALL PROOT(DIRX.CPOLY.EVALR.EVALI.1) CALL SORT(EVALR.EVALI.DIRX) C CIII STORE THE C RATRIX C DO 500 RII1.DIRY DO 499 CII1.DIRX 499 C(RI.CI)I0. 500 C(RI.RI)I1. C CIII PREPARE TO LEAVE C CALL PROCED(GO) IF(.NOT.GO)RODFLGI.TRUE. END IF C RETURN END C C CNNNINNINNNNNNNNRNNINNNNNNNNNN I'Pm NNNNNNNNNNNNNNRNNNNNNNNNNNNNR CRIN‘NINNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNIINNNNNNNNNN C C C THIS SUBROUTINE HILL INPUT THE RATRIX C FOR THE VIBRATION SYSTER FORCING VECTOR C HRITTEN BY KEN UHITE OCT 12.1982 C RODIFIED BY J. GREGORSKI RARCH.1985 C C SIZEL NURBER OF INPUTS C INVRL PRODUCT OF INVR AND RATL C SUBROUTINE INPUTL C INCLUDE ’SYSKIT)CORRON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)PARRBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)VIBRBK.TEXT’ C CHARACTERRI RNARE LOGICAL GO INTEGER RI.LR.CI.INIGH.ILOU.SIZEL REAL INVRL(RAXDIR.RAXDIR) C CIII CHECK TO SEE IF IN PROPER PROBLER RODE C IF (SGLIFG) THEN URITE(1.110) 110 FORRAT(II’ OI! HRONG INPUT RODE lfll’l. + ’ CANNOT ALTER VIBS. FORR UHEN IN SINGLE D.E. RODEI’) RODFLGI.TRUE. RETURN ENDIF C IBLKI4 C C--- GET THE COLURN SIZE FOR RATL C ILOHIO IHIGHIRAXDIR SIZELICOLL RNAREI’L’ URITE(1.200)COLL 200 FORRAT(I.’ ENTER THE DIRENSION OF F (’.Il.’): ’.3) CALL GETINTISIZEL.ILOH.IHIGN.10) IF (SIZEL.EQ.0) GOTO 900 C CIII LOAD DEFAULT VALUES INTO RATL IF THE CIII SIZE IS INCREASED (I 900 C IF(SIZEL.GT.COLL)THEN DO 80 RII1.DIRR DO 85 CIICOLL+1.SIZEL RATL(RI.CI)I0. CONTINUE CONTINUE END IF PUT RATL DIRENSIONS IN CORRON BLOCK COLLISIZEL ALLOH THE USER TO LOAD RATL. FIRST. RAKE SURE THAT RATL IS NON-ZERO. DIRUICOLL IF(COLL.GT.0)THEN CALL INPUTR(RNARE.DIRR.SIZEL.HATL) HULTIPLY BY INVERSE R CALL RRULT(INVR.RATL.INVRL.DIRR.DIRR.COLL) FORR THE B RATRIX. IT IS FORRED FROR THO RATRICES DO 5 RII1.DIRR LRIDIRR+RI DO 5 CI31:COLL FIRST. FILL THE UPPER HALF B(RI.CI)I0. NOH FILL THE LOHER HALF B(LR.CI)IINVRL(RI.CI) CONTINUE CONTINUE END IF SET THE D RATRIX DO 300 RII1.DIRY DO 300 CII1.DIRU D(RI.CI)I0. READY TO EXIT CALL PROCED(GO) IF(.NOT.GO)RODFLGI.TRUE. RETURN END C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 56]..le INNNNNNNNNNNNNNNNNNNNNNNNNNIN CNNINRNNNNN’NNNNNNNNNNINNNNNINNINNNNNNNNNNINNNNNNNNINNNNNNNNNNNNNNNN THIS SUBROUTINE INPUTS A SINGLE DIF- FERENTIAL EQUATION. THEN FORRS THE A AND B RATRIX FROR THIS EQUATION. XIIY BY DEFINITION: B IS A COLURN VECTOR HRITTEN BY KEN UHITEIIAUG 10.1982 RODIFIEO BY RCR’BERG-INOV 30.1982 RODIFIED BY J. GREGORSKI RARCH.1985 TEHP CORPARES NEH VALUES OF ORDER AND INNHB UITH OLD CPOLY COEFFICIENTS OF THE CHARACTERISTIC POLYNORIAL 00000000000000 SUBROUTINE SGLINP 0 INCLUDE ’SYSKIT)CORRON.DIR)CTRLBK.TEXT’ INCLUDE ’ SYSKIT)CORIION. DIR)SGLIBK. TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)PARRBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)EIGNBK.TEXT’ INTEGER II.RI.CI.I.TERP.ILESSI.INIGH.ILOU REAL RESULT.INVLC.EXPN.CPOLY(RAXCOF) LOGICAL OK.GOOD.CHNGCF.YES.BADDAT C CIII CHECK TO SEE IF IN PROPER PROBLER RODE C IF (.NOT.SGLIFG) THEN HRITE(1.110) 110 FORRAT(II’ NI! URONG INPUT RODE Uil’l. + ’ CANNOT ALTER SINGLE D.E. FORR UHEN IN VIBS. RODEI’) RODFLGI.TRUE. RETURN ENDIF C IBLKI4 C CIII PRORPT FOR THE ORDER OF THE EQUATION C ILOUI1 IHIGHIRAXDIR TERPIORDER 11 HRITE(1.504)’Y’.ORDER IF(YES(14.’N’))THEN HRITE(1.502)ORDER CALL GETINTIORDER.ILOU.IHIGH.12) C CIII IF THE ORDER IS INCREASED. FILL THE CIII NEH COEFS UITH DEFAULT VALUES 45 C IF(ORDER.GT.TERP)THEN DO 45 IITERP+2.ORDER+1 COEF(I)I1 CONTINUE ENDIF ENDIF CIII PRORPT FOR THE COEFFICIENTS. FIRST. CIII ALLOU THE USER TO VIEH THEN C 77 81 80 C HRITE(1.511)’Y’ IF(.NOT.YES(16.’Y’))GOTO 27 DO 80 IIORDEN+1.1.I1 URITE(1.512)COEF(I).’Y’ DO 81 II'I‘IP 19-1 HRITE(1.513) CONTINUE CONTINUE CIII ALLOU THE USER TO CHANGE THE VALUES C 27 29 C 28 200 C CHNGCFI.FALSE. URITE(1.503)’Y’ IF(YES(16.’N’))CHNGCFI.TRUE. CONTINUE IF (CHNGCF) THEN VALICOEF(ORDER+1) URITE(l.100)’C’.ORDER.VAL CALL GETREL(VAL.BLO.BHI.23) IF (VAL.EQ.0) THEN URITE(1.200) FORRAT(I’ II! THE LEADING COEFFICIENT’. 2l’ RUST NOT BE ZERO.’) GOTO 28 ELSE COEF(ORDER+I)IVAL ENDIF ENDIF INVLCI1./COEF(ORDER+1) DO 10 I'OBDER: 10-1 VALICOEFII) ILESSlII-I IF(CHNGCF)THEN URITE(1.100)’C’.ILESSl.VAL CALL GETREL(VAL.BLO.BHI.23) END IF CIII RAKE SURE THAT THE COEFFICIENT HILL CIII RENAIN IN RANGE UHEN DIVIDED BY THE CI-I LEADING COEFFICIENT C CALL RLTYCK(INVLC.VAL.GOOD.RESULT.EXPN) C CIII LOOP BACK TO CHANGE BAD DATA C IF(.NOT.GOOD)THEN HRITE(1.1000) VAL.ORDER.’C’.ILESSl 1000 FORRAT(I’ Nil THIS COEFFICIENT (’.1PE10.3.’)’. 2 /’ LEADS TO A NURBER OUT OF RANGE.’. 3 /’ RAKE C(’.I2.’) LARGER OR RAKE ’.A1.’(’.I2.’)’. 4 /’ SRALLER IN RAGNITUDE.’) CHNGCFI.TRUE. GOTO 29 ENDIF COEF(I)IVAL C CIII THE FIRST COL OF A IS LOADED HERE TO TAKE CIII ADVANTAGE OF THE RESULT RETURNED BY RLTYCK A(ORDER+1II.1)IIRESULT 10 CONTINUE IF (CHNGCF) THEN URITE(1.511)’Y’ , IF (YES(16.’Y’))GOTO 77 ENDIF CIII PRORPT FOR THE ORDER OF THE INPUT ILOHIO IHIGHIORDERII IF (INNRB.GT.IHIGH) INNRBIILOU TERPIINNRB URITE(1.504)’U’.INNRB IF(YES(14.’N’))THEN URITE(1.103IINNRB CALL GETINT(INNRB.ILOU.IHIGH.15) CIII LOAD DEFAULT VALUES INTO INPT IF THE CIII THE NURBER OF INPUTS IS INCREASED C IF(INNRB.GT.TERP)THEN DO 50 IITERP+1.INNRB+I INPT(I)I1. 50 CONTINUE ENDIF ENDIF C CIII CHECK IF INPUTS ARE TO BE CHANGED. c--- FIRST ALLOU THE USER THE VIEH THEN URITE(1.5III’U’ IF(.NOT.YES(IG.’Y’))GOTO 79 78 DO 82 I'INNHB‘PIVIF‘I URITE(1.512)INFT(I).’U’ DO 83 IIIII1.1.I1 URITE(1.513) 83 CONTINUE 82 CONTINUE C CIII ALLOU THE USER TO CHANGE THE VALUES C 79 CHNGCFI.FALSE. URITE(1.503)’U’ IF(YES(20.’N’))CHNGCFI.TRUE. C CIII ENTER NEU INPUTS C DO 15 IIINNRB+1.1.I1 VALIINPT(I) ILESSIIIII IF(CHNGCFITHEN URITE(1.100)’D’.ILESSl.VAL CALL GETREL(VAL.BLO.BHI.23) END IF C CIII RAKE SURE INPUTS RERAIN IN RANGE UHEN CIII DIVIDED BY THE LEADING COEFFICIENT C CALL RLTYCK(INVLC.VAL.GOOD.RESULT.EXPN) C CIII LOOP BACK TO CHANGE BAD DATA C IF (.NOT.GOOD)THEN HRITE(1.1000) VAL.ORDER.’D’.ILESS1 CHNGCFI. TRUE. GOTO 29 ENDIF INPT(I)IVAL C CIII SET NONZERO PART OF B VECTOR HERE C B(ORDER+1II.1)IRESULT C 15 CONTINUE IF (CHNGCF)TNEN URITE(1.5111’U’ IF (YES(16.’Y’))GOTO 78 ENDIF C CIII NOH FORR THE REST OF THE A RATRIX C DO 25 RII1.ORDER DO 30 CII2.ORDER IF(CI.EQ.RI+1)THEN A(RI.CI)I1. ELSE A(RI.CI)I0. END IF 30 CONTINUE 25 CONTINUE C CIII NOU FORR THE REST OF THE B VECTOR C DO 35 II1.ORDERIINNRBI1 B(I.1)I0. 35 CONTINUE C CIII STORE DIRENSIONS OF A. B AND SET C.D. C DIRXIORDER DIRUI1 DIRYI1 C(1.1)I1. DO 40 II2.DIRX 40 C(1.1)I0. D(1.1)I0. C CIII FIND THE EIGENVALUES FOR THE A RATRIX C BADDATI.FALSE. CALL CHREQA(A.DIRX.CPOLY.BADDAT) IF (BADDAT) THEN HRITE(1.222) 222 FORRAT(I’ BAD INPUT DATA. UNABLE TO CALCULATE THE’. + /’ EIGENVALUES. PLEASE REIENTER THE PROBLERI’) GOTO 11 ENDIF CALL PROOTIDIRX.CPOLY.EVALR.EVALI.1) CALL SORT(EVALR.EVALI.DIRX) C CIII FORRAT STATERENTS C 100 FORRAT(I.’ ENTER ’.A1.’(’.I1.’). ITS CURRENT VALUE’./. 2’ IS(’.1PE10.3.’): ’.O) 103 FORRAT(I.’ ORDER OF THE INPUT? (’.I1.’): ’.O) 502 FORRAT(I.’ ORDER OF THE EQUATION? (’.I1.’): ’.8) 503 FORRAT(II.’ CHANGE THE ’.A1.’ COEFFICIENTS? (N0): ’.5) 504 FORRAT(I.’ THE HIGHEST ’.A1.’ DERIVATIVE IS ’.I1.’.’./. +’ HANT TO CHANGE THE ORDER? (NO): ’.0) 511 FORRAT(I.’ DO YOU HANT TO SEE THE ’./.1X.A1. +’ COEFFICIENTS? (YES): ’.0) 512 FORRAT(/.6X.’(’.1PE10.3.’)!’.A1.8) 513 FDRRAT(””.0) C CIII PREPARE TO EXIT C CALL PROCED(OK) IF(.NOT.OK)RODFLGI.TRUE. C RETURN END C CNNNNNNNNNNNINNNNNNNNNNNRNNNNNNNNNNNNNINNNNNINNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNRNNNINNNNINNNNNNN‘NNNNNNNNNNNNRNNNNNNNNNNNNNNNNNNNINNNINNNN C C CNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNRNNNNNNNNNNNNN CNRNNNNNNINNNNNNNNNNNNNNNINNNNNNNNNNNNRNNNNNNNNNNNNNNNNNNNNNNNNRNNN C C C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN CBLOK3 NNNNNIINNNNNNNNNNNNNNRNNNNNNN CNNNNNNNRNNNNNNNNNNNNNIINNINNNNNNNNRNNNNNNINNNNNNNNNNNNNNNNNNNNNNNN C C C-- DESCRIPTION: C Reede end eritee prohlee end reeulte filee. Aleo C diepIey or printing of O.D.E. or etete equ. prohlee C end eetrix input eube. C C-- CONTENTS: CPROB reede or uritee prohlee filee CRSLT eritee the etete equetion file PRINYR uritee the problee eteteeent to the printer PRRTX outpute eny eetrix PRINAB uritee the etete equetione to the printer DATAPR eende the output directly to the printer queue INPUTH input eny eetrix interectively ELGET gete individuel errey eleeente OUTRAT diepleye eny eetrix III INDEX: CPROB CRSLT DATAPR ELGET INPUTR OUTRAT PRINAB PRINYR PRRTX CICICUCICICIC:(I(ICICTCICICICICICICICICI(If! CRNNNNNNNNNNNNNNNNNNNNNNNNNNNI CPROB NNINNNINNNNNNNNNNNNNNNNNNNNNN CNNNINNNNNNNINNNRRNNNINNNNRNINNNNNNNNNINNNNNNNNNNNNNNNNNNNNINNNNNNN READS OR URITES PROBLER FILES FOR RODULE C. CAN READ FILES CREATED BY RODULE C ONLY. CALLED BY SAVFIL OR LODFIL IN UNIFIL.FTN HRITTEN BY J. GREGORSKI APRIL.1985 (TCTCICICIGHO SUBROUTINE CPROB(FILNAR.READIN.ERROR) INCLUDE ’SYSKIT)CORRON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)LABLBK.TEXT’ INCLUDE ’SYSKIT>CORRON.DIR)SGLIBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)VIBRBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)PARRBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)EIGNBK.TEXT’ CHARACTER'15 FILNAR I NTEGER I ROD LOGICAL READIN.ERROR LUNI5 ERRORI.FALSE. C CIII CREATE NEH FILE OR READ OLD PROBLER FILE. C IF (.NOT.READIN) THEN OPEN(LUN.FILEIFILNAR.ERRI991.STATUSI’UNKNOUN’. 2 FORRI’UNFORRATTED’) C CIII BEGIN HRITING SINGLE D.E. PROBLER TO NEH FILE. C IF (SGLIFG) THEN IRODI3 URITE(LUN.ERRI991)IROD URITE(LUN.ERRI991)TITLE1 URITE(LUN.ERRI991)COEF.INPT.ORDER.INNRB URITE(LUN.ERRI991)A.B.DIRX.DIRU URITE(LUN.ERRI991)EVALR.EVALI ENDFILE(LUN) C CIII BEGIN HRITING VIBS. FORR PROBLER TO NEU FILE. C ELSE IRODI2 URITE(LUN.ERRI991)IROD URITE(LUN.ERRI991)TITLE1 URITE(LUN.ERRI991)RATR.RATC.RATK.RATL.INVR URITE(LUN.ERRIQQI)DIRR.COLL URITE(LUN.ERRI991)A.B.DIRX.DIRU URITE(LUN.ERRI991)EVALR.EVALI ENDFILE(LUN) ENDIF C CIII ZERO THE C AND D RATRICES C ELSE DO 100 II1.RAXDIR DO 100 JI1.NAXDIR C(I.J)I0. 100 D(I.J)I0. C CIII BEGIN READING INFORRATION FROR FILE SPECIFIED C OPEN(LUN.FILEIFILNAR.ERRI991.STATUSI’OLD’. 2 FORRI’UNFORRATTED’) READ(LUN.ENDI991.ERRI991)IROD READ(LUN.ENDI991.ERRI991)TITLE1 C CIII READ SINGLE D.E. TYPE PROBLER FILE C IF(IROD.EQ.3)TNEN READ(LUN.ENDI991.ERRI991)COEF.INPT.ORDER.INNRB READ(LUNVEND'QQAVERR'QSAJAVBVDIHXVDIHU READ(LUN.ENDI991.ERRI991)EVALR.EVALI DIRYI1 C(1.1)I1. C CIII READ VIBS. FORR TYPE PROBLER FILE C ELSEIF (IROD.EQ.2)THEN READ(LUN.ENDI991.ERRI991)RATR.RATC.RATK.RATL.INVR READ(LUN.ENDI991.ERRI991)DIRR.COLL DIRYIDIRR DIRXI2IDIRR DO 200 II1.DIRY 200 C(I.I)I1. READ(LUN.ENDI991.ERRI991)A.B.DIRX.DIRU READ(LUN.ENDI991.ERRI991)EVALR.EVALI C CIII INCORRECT INPUT FOR THIS RODULE C ELSE ERRORI.TRUE. URITE(1.997) 997 FORRAT(II’ llUARNINGii THIS FILE IS NOT VALID’./. 2 ’ INPUT FOR RODULE C. I CANNOT READ IT.’./. 3 ’ PLEASE TRY ANOTHER PROBLER FILE.’) ENDIF C ENDIF CLOSE(LUN.STATUSI’KEEP’) GOTO 999 C 991 ERRORI.TRUE. URITE(1.993) FILNAR 993 FORRAT(II' Xi: ERROR as: THE FILE: '.A15./. 2 ' IS NOT USABLE. CHOOSE ANOTHER. ') CLOSE(LUN.STATUSI’KEEP’) C 999 RETURN END C CIII DURRY PROBLER READING SUBROUTINES FOR RODULES T AND F CIII ADDEO TO AVOID LOAD NOT CORPLETE FROR CALLS IN UNIFIL. C SUBROUTINE FPROB(FILNAR.READIN.ERROR) CHARACTEROIS FILNAR LOGICAL READIN.ERROR HRITE(1.100) 100 FORRAT(II’ THIS IS THE PROBLER READER FOR RODULE F.’ + /’ YOU SHOULD NOT BE HEREI’) ERRORI.TRUE. RETURN END SUBROUTINE TPROB(FILNAR.READIN.ERROR) CHARACTER§15 FILNAR LOGICAL READIN.ERROR URITE(1.100) 100 FORRAT(II’ THIS IS THE PROBLER READER FOR RODULE T.’ + /’ YOU SHOULD NOT BE NEREI’) ERRORI.TRUE. RETURN END C C CNNNNRNNNNNNNRINNNNNNNNNNNNNNN CRSLT NINNNNNNINNNNNNNNNNNNINNNNINN CNNRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRNNNN‘NNNNNNNNINNNNNNNNNNNNNNNRNINN (READS OR) URITES STATE-SPACE TYPE PROBLER FILES FOR RODULE C. STATE EQU. ARE THE PSEUDO RESULTS FOR THIS RODULE. CALLED BY SAVFIL OR LODFIL FROR UNIFIL.FTN URITTEN BY J. GRESORSKI APRIL.1985 SUBROUTINE CRSLT(FILNAR.READIN.ERROR) 0 00000000 INCLUDE ’SYSKIT)CORRON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)LABLBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)PARRBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)EIGNBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)INTGBK.TEXT’ CHARACTERN15 FILNAR INTEGER IROD LOGICAL READIN.ERROR LUNI5 ERRORI.FALSE. C CIII CREATE NEH FILE OR READ OLD PROBLER FILE. CIII SET CERTAIN PARARETERS FOR A.B DATA FORRAT. c..- BEGIN HRITING PROBLER TO NEH FILE. C IF (.NOT.READIN) THEN OPEN(LUN.FILEIFILNAR.ERRI991.STATUSI’UNKNOUN’. 2 FORRI’UNFORRATTED’) IRODII FBKFLGI.FALSE. DO 10 II1.RAXDIR KFB(I)I1.0 IC(I)I0.0 ITYPE(I)I1.0 10 UDEF(I.1)I1.0 DO 20 II2.10 DO 20 JI1.RAXDIR 20 UDEF(J.I)I0.0 KGAINI1.0 C TINITI1.0 TFINALI10.0 TINTEGI1.0 TSTOREI1.0 NSTEPII NSTORIIO TITLE2I’!!§ RODULE C A.B RESULTS NI!’ URITE(LUN.ERRI991)IROD URITE(LUN.ERRI991)TITLE1 URITE(LUN.ERRI991)DIRX.A URITE(LUN.ERRI991)EVALR.EVALI URITE(LUN.ERRI991)FBKFLG URITE(LUN.ERRI991)KFB.KGAIN.IC URITE(LUN.ERRI991)DIRU.B URITE(LUN.ERRI991)ITYPE URITE(LUN.ERRI991)UDEF URITE(LUN.ERRI991)DIRY.C.D URITE(LUN.ERRI991)TINIT.TFINAL.TINTEG URITE(LUN.ERRI991)TSTORE.NSTEP.NSTOR URITE(LUN.ERRI991)TITLE2 ENDFILE(LUN) CIII BEGIN READING INFORRATION FROR FILE SPECIFIED CIII ERROR IF NOT PROPER FILE TYPE FOR RODULE C C ELSE C CIII HILL NOT ALLOU READING OF A.B PROBLER FILE CIII IN RODULE C. CODE TO PERFORR READ OF USEFULL CIII PORTION OF A.B FILE IS INCLUDED IF DESIRED TO CIII CHANGE THIS IN FUTURE BUT IS CURRENTLY BYPASSED. C 150 ... + C C C 2 C C C C C C C C C C C C997 C 2 C 3 URITE(1.150) FORRAT(II’ ill ERROR Oi! ’.l. ’ NOT ALLOHED TO LOAD A.B PROBLER ’./. ’ FILES UHILE IN RODULE CI ’) OPEN(LUN.FILEIFILNAR.ERRI991.STATUSI’OLD’. FORRI’UNFORRATTED’) READ(LUN.ENDI991.ERRI991)IROD IF(IROD.EQ.1)THEN READ(LUN.ENDI991.ERRI991)TITLE1 READ(LUN.ENDI991.ERRI991)DIRX.A READ(LUN.ENDI991.ERRI991)EVALR.EVALI READ(LUN.ENDI991.ERRI991)FBKFLG READ(LUN.ENDI991.ERRI991)KFB.KGAIN.IC READ(LUN.ENDI991.ERRI991)DIRU.B ELSE ERRORI.TRUE. URITE(1.997) FORRAT(II’ NIHARNINGII THIS FILE IS NOT VALID’./. ’ INPUT FOR RODULE C. I CANNOT READ IT.’./. ’ PLEASE TRY ANOTHER A.B PROBLER FILE.’) C ENDIF ENDIF CLOSE(LUN.STATUSI’KEEP’) GOTO 999 C 991 ERRORI.TRUE. URITE(1.993) FILNAR 993 FORRAT(II’ iii ERROR III THE FILE: ’.A15./. 2 ’ IS NOT USABLE. CHOOSE ANOTHER. ’) CLOSE(LUN.STATUSI’KEEP’) C 999 RETURN END C CIII DURRY RESULTS READING SUBROUTINES FOR RODULES T AND F CIII ADDEO TO AVOID LOAD NOT CORPLETE FROR CALLS IN UNIFIL. C SUBROUTINE FRSLT(FILNAR.READIN.ERROR) CHARACTERN15 FILNAR LOGICAL READIN.ERROR URITE(1.100) 100 FORRAT(II’ THIS IS THE RESULTS READER FOR RODULE F.’ + /’ YOU SHOULD NOT BE HEREI’) ERRORI.TRUE. RETURN END SUBROUTINE TRSLT(FILNAR.READIN.ERROR) CHARACTERNI5 FILNAR LOGICAL READIN.ERROR URITE(1.100) 100 FORRAT(II’ THIS IS THE RESULTS READER FOR RODULE T.’ + /’ YOU SHOULD NOT BE HEREI’) ERRORI.TRUE. RETURN END C C CNNNNRNNNNNNNNNNNNRNNNNNNNNNNN PRINY“ NNNRNNNNNNNNNNNNNNNNNNNNNNNNN . CRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNINN URITES EITHER THE Y.U DIFF EQ OR R.C.K.L ARRAYS DIRECTLY TO THE PRINTER DURING PROGRAR EXECUTION. DATAPR IS USED TO SET UP THE PRINTER. RODIFIED BY J. GREGORSKI APRIL.1985 1013(1CTCICI0 SUBROUTINE PRINYR (I INCLUDE ’SYSKIT)CORRON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)LABLBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)SGLIBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)VIBRBK.TEXT’ 1015 1000 1010 1020 10 20 3010 3020 3030 5000 INTEGER LUNPR CRARACTER'IS DU.DY LUNPRI13 CALL DATAPR URITE(LUNPR.1015) FORRAT(II’ UN! RODULE C PROBLER DESCRIPTION lli’) URITE(LUNPR.900) TITLE1 FORRAT(II’ THE PROBLER TITLE:’.//.1X.A40) IF (SGLIFG) THEN HRITE(LUNPR.1000) FORRAT(II’ THE DIFFERENTIAL ERUATION:’.O) HRITE(LUNPR.1010) ’Y’ FORRAT(II’ THE 'oAI.’ COEFFICIENTS ARE’) DO 10 IIORDER.O.I1 HRITE(OY.’(15AII'I’Y’.(”".J-I.1.I1) HRITE(LUNPR.IO20) COEF(I+1).DY FOR“AT(’OSXO’(’91PE10e3’.)..OAO.) CONTINUE IF (INNRR.GT.0) THEN URITE(LUNPR.1010) ’U’ DO 20 I'INNRB.O.I1 HRITE(DU.’(15AII’I’U’.(””.J'I.1.I1) URITE(LUNPR.1020) INFT(I+1).DU CONTINUE ENDIF ELSE HRITE(LUNPR.3000) DIRR FORRAT(II’ THE NURBER OF COORDINATES IS ’.I2) URITE(LUNPR.3010) ’R’ FORRAT(II’ THE ".A1." RATRIX:’./) CALL PRRTXIDIRR.DIRR.RATR) URITE(LUNPR.3010) ’C’ CALL PRRTX(DIRR.DIRR.RATC) URITE(LUNPR.3010) ’K’ CALL PRRTXIDIRR.DIRR.RATK) URITE(LUNPR.3020) FORRAT(II’ THE 'INVERSEIR' RATRIX:’./) CALL PRRTX(DIRR.DIRR.INVR) URITE(LUNPR.3030) COLL FORRAT(II’ THE NURBER OF INPUTS IS ’.I2) IF (COLL.GT.0) THEN URITE(LUNPR.3010) ’L’ CALL PRRTX(DIRR.COLL.RATL) ENDIF ENDIF URITE(LUNPR.5000) FORRAT(II’ RN! END OF PROBLER STATERENT lfii’) CLOSE(LUNPR) RETURN END C C CNNNNNNNNNNINNNNNNNNNRNNNNNINN PRHTX INNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNINININRNRUINNNNNINNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNN CICICICICI (1 1000 100 C C PRINTS OUT ANY RATRIX GIVEN TO IT RODIFIEO BY J. GRESORSKI APRIL.1985 SUBROUTINE PRRTXINROU.NCOL.RTX) INCLUDE ’SYSKIT)CORRON.DIR)CTRLBK.TEXT’ INTEGER NROU.NCOL.LUNPR REAL RTX DIRENSION RTX(RAXDIR.RAXDIR) LUNPRI13 DO 100 II1.NROH URITE(LUNPR.1000)(RTX(I.J).JI1.NCOL) FORRAT(3X.5E13.5:/.(3X.5E13.5)) CONTINUE RETURN END CINNNNNNNNNNNNNNNNNNNNRNNNRNNN PRINAB NNNNNNNNNNNNINNNNNNINNNINNNNN CNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN (I (ICICICICICICI URITES THE A.B RATRICES AND E.V. DIRECTLY TO THE PRINTER DURING PROGRAR EXECUTION. DATAPR IS USED TO SET UP THE PRINTER. RODIFIED BY J. GREGORSKI APRIL.1985 SUBROUTINE PRINAB INCLUDE ’SYSKIT)CORRON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)LABLBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR>PARRBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)EIGNBK.TEXT’ INTEGER LUNPR LUNPRI13 CALL DATAPR URITE(LUNPR.1015) FORRAT(II’ ill RODULE C PROBLER CONVERSION NNN’) URITE(LUNPR.1000) TITLE1 FORRAT(II’ THE PROBLER TITLE:’.//.1X.A40) URITE(LUNPR.1010) ’X’.DIRX FORRAT(II’ THE LENGTH OF ’.A1.’ IS ’.I2) URITE(LUNPR.1020) ’A’ 1020 1100 2000 2020 70 C C FORRAT(I’ THE ’.A1.’ RATRIX:’./) CALL PRRTX(DIRX.DIRX.A) URITE(LUNPR.1010) ’U’.DIRU IF (DIRU.GT.0) THEN URITE(LUNPR.1020) ’8’ CALL PRRTX(DIRX.DIRU.B) ENDIF URITE(LUNPR.1010) ’Y’.DIRY URITE(LUNPR.1020) ’C’ CALL PRRTXIDIRY.DIRX.C) URITE(LUNPR.1100) FORRAT(3X./’ THE EIGENVALUES:’) HRITE(LUNPR.2000) FORRAT(3X./’ VALUE’.4X.’REAL’.6X.’IRAGINARY’) DO 70 II1.DIRX URITE(LUNPR.2020) I.EVALR(I).EVALI(I) FORRAT(1X.I3.2X.1PE12.5.1X.E12.5) CONTINUE URITE(LUNPR.5000) FORRAT(II’ ii. END OF PROBLER STATERENT lll’) CLOSE(LUNPR) RETURN END CNNNNNNNNNNNNNNNNNINNNNNNNNNN DATAPR NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CRNINNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNINNNNNINNNNNNNNNNNIRNN 0 000000000 THIS THING IS NOT TRANSPORTABLE ANYUHERE THIS SUBROUTINE ALLOUS OUTPUT TO BE URITTEN DIRECTLY TO THE PRINTER QUEUE USING PRIROS FUNITI9 (LUNI13). THE CALLING PROGRAR URITES THE INFO. AND THEN RUST CLOSE THE UNIT. REIURITTEN BY J. GREGORSKI AUGUST.1984 SUBROUTINE DATAPR INTEGER§2 INFO(12).BUF(1024).BUFL.CODE BUFLI1024 INFO(IIIIO INFO(2)I9 INFO(3II0 INFO(4)I:120240 INFO(5)I:120240 INFO(6)I:120240 CALL SPOOL.(INTS(2).’SPOOL_FROR_RODF’.15.INFO.BUF.BUFL.CODE) CALL ERRPR8(K$IRTN.CODE.0.0.0.0) RETURN END C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN INPUT“ NRINNNNNNNNNNNNNRNNNNNNNNNNNN CNRNNNNNNNNNNNNNNNINNNNINN!NINNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNRNNIN 0000000000 0 101 102 103 104 105 USED FOR INPUTTING ANY RATRIX INTERACTIVELY RODIFIEN BY J. GREGORSKI APRIL.1985 LABEL CHARACTER NARE FOR RATRIX TO BE INPUT DIRR DIRENSION OF ROU SPACE DIRC DIRENSION OF COL SPACE RATRIX ACTUAL ARRAY TO BE INPUT SUBROUTINE INPUTR(LABEL.DIRR.DIRC.RATRIX) INCLUDE ’SYSKIT)CORRON.DIR)CTRLBK.TEXT’ INCLUDE ’ SYSK I T)CORRON. D I R)LABLBK . TEXT’ CNARACTER'I LABEL.DUR INTEGER DIRR.DIRC REAL RATRIXIRAXDIR.RAXDIR) LOGICAL OK.YES RENU FORRAT FOR RATRIX INPUT HRITE(1.100) LABEL FORRAT(II’ OPTIONS FOR THE ’.A1.’ RATRIX’. 2/’ ’) URITE(1.101) FORRAT(’ A: CHANGE ALL ENTRIES’. 2/’ R: CHANGE A ROU’. 3/’ C: CHANGE A COLURN’) URITE(1.102) FORRAT(’ E: CHANGE AN ENTRY’. 2/’ Z: ZERO THE RATRIX’. 3/’ L: LOOK AT THE RATRIX’) IF (LABEL.NE.’A’) THEN URITE(1.103) FORRAT(’ T: TO RODULE OPTIONS’) ENDIF URITE(1.104) FORRAT(’ P: PROCEED (IDEFAULT)’. 2/’ ’) URITE(1.105) FORRAT(I’ ENTER OPTION (P): ’.N) IF(LABEL.EQ.’A’)THEN CALL RENU(OK.ICH.’A’.’R’.’C’.’E’.’Z’.’L’.”.’P’.’ 2 ’P’.25) ELSE CALL RENU(OK.ICH.’A’.’R’.’C’.’E’.’Z’.’L’.’T’.”. 2 ’P’.25) ENDIF IF(OK) THEN SOTO(10.30.40.50.70.60.80.1.999)ICH ELSE GOTO 1 ENDIF C CIII ENTER ALL BY ROU-COL C 10 DO 15 II1.DIRR URITE(1.’(/)’) DO 15 JI1.DIRC 15 CALL ELGET(I.J.RATRIX(I.J).LABEL) SOTO 1 C CIII ENTER A ROU C 30 URITE(1.140) 140 FORRAT(I’ ENTER ROU INDEX: ’.I) IRI1 CALL GETINT(IR.1.DIRR.25) URITE(1.’(/)’) DO 35 JI1.DIRC 35 CALL ELGET(IR.J.RATRIX(IR.J).LABEL) SOTO 1 C CIII ENTER A COLURN C 40 URITE(1.150) 150 FORRAT(I’ ENTER COL INDEX: ’.$) JCI1 CALL GETINTIJC.1.DIRC.25) HRITE(1.’(/)’) DO 45 II1.DIRR 45 CALL ELGET(I.JC.RATRIX(I.JC).LABEL) GOTO 1 C CIII ENTER AN ELERENT C 50 URITE(1.140) IRI1 CALL GETINT(IR.1.DIRR.25) URITE(1.150) JCI1 CALL GETINT(JC.1.DIRC.25) URITE(1.’(/)’) CALL ELGET(IR.JC.RATRIX(IR.JC).LABEL) GOTO 1 C CIII LOOK C 60 CALL OUTRAT(LABEL.DIRR.DIRC.RATRIX) URITE(1.600) 600 FORRAT(I’ PRESS (RET) KEY TO CONTINUE...’) C CIII DURRY CHAR FOR CALL C DURI’A’ CALL GETCHR(DUR.1) GOTO 1 C CIII ZERO RATRIX C 70 URITE(1.180) 180 FORRAT(I’ ZERO THE RATRIX? (NO): ’.4) IF(YES(16.’N’)) THEN DO 74 IRI1.DIRR DO 74 ICOLI1.DIRC 74 RATRIX(IR.ICOL)I0.0 URITE(1.176)LABEL 176 FORRAT(I’ RATRIX ’.A.’ HAS BEEN ZEROED.’) ENDIF GOTO 5 C CIII ESCAPE C 80 RODFLGI.TRUE. C 999 RETURN END C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ELGET NNINNNNNNNNNNINNNNNNNNINNNNNN C!NNNINNNNNNNNNNNNNNNNNNNNNNNNNNNINNINNNNNNNNNNNNNINNNNNNNNNNNNNNNN C C C USED TO GET INDIVIDUAL ARRAY ELERENTS. C SUBROUTINE ELGET(I.J.VAL.LABEL) C INCLUDE ’SYSKIT)CORRON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)PARRBK.TEXT’ CHARACTERll LABEL C UHITEIIIIOOI LABEL.I.J.VAL 10° FOBHAT(BXPA1”"PIIU’U’PI19’)? (’OIPEAO.3T’): ’v” CALL GETREL(VAL.BLO.BHI.15) RETURN END C C CRNNN‘NN‘NNN‘NNN‘R‘RNN‘N‘N‘NN‘N‘N‘N‘NNN‘R‘NN’ OUTHAT ‘N’N‘N‘N‘N’N‘N‘N'NN‘N‘NN‘R‘RN‘R‘N‘N‘N‘N‘R‘NNN‘N‘N‘N c.NNNNNNN’NNNNNNN‘NNNNN’NNNNN’N’N’N‘N‘NN’NN‘N’NN‘NN‘NN‘N’N’N‘NNNN‘N’NN’NNNN‘N’N’NNNN’N’N’N‘NN‘N’ THIS SUBROUTINE DISPLAYS ANY RATRIX UITH SPECIFIED LABEL AND DIRENSION URITTEN BY DZUNG A. DANG JULY 01. 1982 RODIFIED BY J. GREGORSKI APRIL.1985 0000000 C LABEL NAHE OF HATRIX C NROU NURBER OF ROUS C NCOLUH NURBER OF COLS C HAX HAXIHUH SIZE OF RATRIX C NFIELD NUHBER OF FIELDS OF HATRIX ELEHENTS C HARGIN RIGHT HARGIN OF THE SCREEN C LIHIT HAXIHUH NUHBER OF COLS CAN BE DISPLAYED UITH GIVEN HARGIN C FORH FORHAT OF THE DISPLAYED HATRIX C I ROU INDEX C J COL INDEX C SUBROUTINE OUTHATILABEL.NROU.NCOLUH:RATRIX) C INCLUDE ’SYSKIT>COHHON.DIR>CTRLBK.TEXT’ C CHARACTER'I LABEL CHARACTER'ZO FORH INTEGER IoJvNROUvNCOLUHoHAXaNFIELDoNARGINoLIHIT REAL HATRIX(NAXDIH.HAXDIH) C HAXIHAXDIH NFIELD-IZ NARGIN'4O LIHITaNCOLUN IFI(NCOLUH'NFIELD).GT.HARGIN) LIHIT'(NCOLUH+1)/2 C C-- SPECIFYING THE OUTPUT FOBHAT OF THE HATRIX C FORflt’IIXoAl.I1.AIo3E12.4)’ IF(NCOLUH.EO.1) FORH=’(lXoAI.IIoAl.E12.4)’ IF((NCOLUH.EO.2).OR.(NCOLUH.EO.4)) FORHS’(lonlsIIoA1o2E12.4)’ C C--- DISPLAYING THE HATRIX C URITE(Io’IIo” THE "oAlo" HATRIX IS3”o/)’) LABEL IF(NCOLUH.EO.I) THEN URITE(Io’(lOXo”C1”o/)’) ELSEIFIINCOLUH.EO.2).OR.(NCOLUH.EO.4)) THEN URITE(lo’(IOX."C1".lOXo”C2”o/)’) ELSE URITE(Io’(10X."Cl”o10X.”C2”o10Xo”C3"./)’) ENDIF DO 100 I'loNROU URITE(luFORH) ’R'.I.’3’o(HATRIX(I.J).J=I.LIHIT) 10 CONTINUE IF(NCOLUN.NE.LINIT) THEN URITE(Io’I” ”)’) IF(NCOLUH.EO.4) THEN URITE(lo’(lOXo”C3”o10Xo”C4"./)’) ELSEIF(NCOLUH.EO.5) THEN FORHS’ (1X. A10 Il.A1o2E12. 4) ’ URITE(Io’(IOXo"C4”910Xv”C5”o/)’) ELSE URITE(lo’(10X."C4"o10X.”CS”.IOX.”C6”./)’) ENDIF DO 20. I31.NROU URITE(loFORII) ’R’oIo’z’o(HATRIXIIoJIoJ-LIHIT+IoNCOLUII) 20 CONTINUE ENDIF URITE(Io’(/)’) C RETURN END C C CNNNNINNINNNNNNIINNNNIINNNNNN‘I‘INNNNNNNI‘I‘INNNNNNNNNNNNNNNNNNININNHNI CNNNNINNINNINNNNNINNNNINNNNININNINNINNINNNNNNNNNNIII’IQNIINNNINNINNI C C C C Ch! CI! C C c... CICICICICI (Iflflrl(Iflfirlfiflfifi(ICICICICI(I Ci! Ch! (I (ICICICICICICYCI f} 60 100 NNINNNNNNNNNNNNNNNNNNNNilN! CBLOKA NNNINNNNNNNNNINNNINNNININNNNN NNNNNNNNNNNNNNNNNNNINNNNNNNNNINNNNNNNNNNNNNNNNNNININNNNNNINNNNNN - DESCRIPTION: Contains all coeputational routines. Periorss both scalar and aatrix eultiplication and eatrix inversion. Also iinde and sorts eigenvalues. -- CONTENTS: HHULT eultiplies too eatrices SIHEQ iinds the inverse ot a satrix RLTYCK eultiplies too nusbers and checks if in range CHREQA tinde the characteristic poly. oi an A satrix DET tunction that gets the detereinant ot a satrix PROOT finds the roots ot a polynosial SORT puts eigenvalues in ascending order --- INDEX: CHREQA DETIFCN) HLTYCN HHULT PROOT SIHEO SORT NINNNNNNNNNNNNNNNNNNNNNINNN “HULT NNNNNNNNNNNNNINNNNNNNINNNNNNN NNNNNNNNNNNINNNNNNINNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNI HULTS CIA X B oREAL HATRICES. ASSUNES ALL HATRIifls (AND VECTORS) HAVE HAX DINENSION HAXDIH IN CALLING PROGRAH. E. GOODHAN. JULY 19. 1982 HODIFIfll BY J. GREGORSKI APRIL.1985 SUBROUTINE HNULTIAoBoCoNRAoNCAoNCB) INCLUDE ’SYSKIT>COHHON.DIR>CTRLBK.TEXT’ REAL A(HAXDlflcNCA).BINAXDIN.NCB).CIHAXDIH.NCB).THP DO 100 KtlvNCB DO 80 I‘loNRA THP'O. DO 60 JBIoNCA THP=AIIoJIIBIJoKI+THP CONTINUE C(I.K)8THP CONTINUE CONTINUE C C RETURN END coleooiilllIaiiiaaolliuilioila $1330 NNINNIIIN!NNINNNNINIQNNINNNN! CilnoeeaaoouiaillasauoouaIana{neuronouoouolilulooiuoauiIluouauuoona (I (ICICICICICY EIOWQ 10 12 THIS SUBROUTINE FINDS THE INVERSE OF THE HATRIX A USING DIAGONLIZATION PROCEDURES. HODIFIED BY J. GREGORSKI APRIL.1985 SUBROUTINE SIHEO (A.XDOT.KC.AINV.X.IERR) INCLUDE ’SYSKIT>COHHON.DIR>CTRLBH.TEXT’ DIHENSION A(HAXDIHuHAXDIN)oB(HAXDIH.HAXDIH).XDOTIHAXDIH+I). '* X(HAXDIH+I)oAINVIHAXDINoHAXDIH) IERR‘I DO 1 I81.KC DO I J'I.KC AINVIIchio D(IoJI'AIIoJ) CONTINUE DO 2 III.KC AINVIIuIlal XIII'XDOTII) CONTINUE DO 3 I'loKC COHP'O Nil Nil IF(ABS (BIKoIII-ABS ICONP))S.5.4 CONP'BIKoI) NIH NIH+I IFIN-NCIBo6o7 IF(DINoIIIOoSIoB IF(N‘IISIoIZoS DO 10 H3I.HC TERP'BIIOH) BII.H)=B(N.H) B(Nofl)=TEHP TEHP=AINVII9H) AINV(I.H)=AINV(N.H) AINVINvNIITENP CONTINUE TEHP=X(I) XIIISXIN) XINI=TEHP X(I)‘X(I)/B(Iol) TENP'BII.I) 13 14 15 17 16 C C DO 13 n-1.xc AINVII.H)-AINVII.H)ITEHP BII.N)IB(I.N)/TEHP CONTINUE DO 16 J81.KC IF(J’III4916914 IF(B(J.I))15.16.15 X(J)'X(J)-B(J.I)!X(I) TERPIBIJol) DO 17 N-1.KC AlNVIJ.N)8AINV(J.Nl-TEHPIAINVIIoN) BIJ.Nl=BIJ.N)-TEHPIBII.N) CONTINUE CONTINUE CONTINUE RETURN IERR-O RETURN END CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN flLTYCK NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNN‘NNNNNNINNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNN 0 000000000000 THIS SUBROUTINE IS DESIGNED TO TEST THO REAL NUNBERS TO DETERRINE IF THEIR PRODUCT WILL BE IN RANGE. IT UILL FIND THIS PRODUCT UHEN IT IS IN RANGE. IF THE EXPONENT OF THE PRODUCT IS LESS THAN -15. RESULT BILL EQUAL 0 AN EXPONENT GREATER THAN 15 IS OUT OF RANGE. URITTEN BY KEN UHITE--AUG 19.1982 SUBROUTINE HLTYCN(NUH1oNUNZoGOODoRESULToEXPN) REAL NUHloNUH2.RESULT.EXPN LOGICAL ONOD GOOD=.TRUE. IF((ABSINUH1).LT.l.0E-35).OR.(ABSINUHZ).LT.l.0E-35))THEN RESULT=0.0 ELSE EXPNBALOGlOIABSINUH1))+ALOG1O(ABS(NUH2)) IF(EXPN.GT.15.)THEN GOOD=.FALSE. ELSE IF(EXPN.LT.-15.)THEN RESULT=0.0 ELSE RESULT=NUH1§NUH2 END IF END IF C C RETURN END CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN CflREOA NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNINN!NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN flfiflfiflflflflflfifl (I 20 10 14 SUBROUTINE CHREQA DETERRINES COEFFICIENTS OF CHAR POLY OF A. SEE J.L.HELSA: 'AN ALGORITHH FOR THE DESIGN OF LINEAR STATE VARIABLE FEEDBACK SYSTEHS'. PROC ASILOHAR CONFERENCE ON SYSTEHS AND CIRCUITsuflONTEREYo CALIFORNIA .PP. 791-799. NOV. 1967. RODIFIED BY J. GREGORSKI DECEHBERa1984 NIIDDEG. O'COEFFDo A=A RATRIX SUBROUTINE CHREOAIAoNoCoBADDAT) INCLUDE ’SYSNIT>COHNON.DIR>CTRLBK.TEXT’ LOGICAL BADDAT REAL A(HAXDIHoHAXDIH).CINAXDIH+1) REAL BINAXDINvHAXDIHIoDIISO) INTEGER N.J(HAXDIH+1) NNIN+1 DO 20 I'IONN CIII=0.0 C(NNI'1.0 DO 14 H'IvN N‘O L81 JIII'I GO TO 2 J(L)'J(L)+1 IF(L‘H)3059990 NN'N-I DO 4 I'LoHH II8I+1 JIII)8J(I)+1 DO 10 I'lofl DO 10 HN=19N NRIJ(I) NC'JIKN) BIIoKKISAINRoNC) KHK+1 D(KISDETIBofll DO 6 I‘lrfl L8H-I+1 IF(JIL)-(N-H+L))196.990 CONTINUE H1'N-N+1 DO 14 I'lcx C(H1)=C(H1)+D(I)§(-1.0)**N C C GOTO 999 BADDAT=.TRUE. RETURN END CNNNNINNNNNNNNNNNNINNNNNNNNNNN DET(FC") NNNNNNINNNNNNNNNNNNNNNINNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNINNNNNNNNNNNNNNNNNNNN (I fifififififi 10 12 13 14 19 16 17 2O 51 FUNCTION DET CALCULATES THE DETERRINANT OF A RATRIX . A IS THE RATRIX AND KC IS THE ORDER OF HATRIX A . RODIFIED BY J. GREGORSKI DECEHBER91984 FUNCTION DET(A.KC) INCLUDE ’SYSKIT>COHHON.DIR>CTRLBK.TEXT’ REAL A(NAXDIHoHAXDIH)oBIHAXDIHoHAXDIH) IREV'O DO 1 I'1.NC DO 1 JiloKC BIIpJI'AIIuJ) DO 20 I'foKC K'I IF(DIN.I)IIO¢11.10 K'H+1 IF(N’KCISoSoSI IF(I-N)12914951 DO 13 H'loKC TENP'BII-H) B‘IOH’.B(KOH) BINOHI'TEHP IREVIIREV+1 II3I+1 IFIII.GT.HC) GO TO 20 DO 17 H-IIoNC IF(BIHoIIIISoI7v19 TEHP‘B(HOI’/B(IoII DO 16 N'IvKC BIN.N)'B(H.N)’BIIoNINTENP CONTINUE CONTINUE DET=1.0 DO 2 181.KC DET'DETIBIIoI) DET'I-1.0)*§IREVNDET RETURN DETIO.O RETURN END CNNNINNNNNNNIINNNIINNNNINNNNNN PROOT INNNNNNNNINNNINNNNNINNNNNINNN CNNNINNNNIINNNNNNNNINNNNNNiNININNNNNNNNNNNNNNINNNINNNNNNNNNNNNNNNNN 00000000000000 0 SUBROUTINE PROOT USES A RODIFIED BARSTOU HETHOD TO FIND THE ROOTS OF A POLYNORIAL . SEE R. V. HAHHING: NUMERICAL HETHODS FOR SCIENTISTS AND ENGINEERS o HCGRAN-HILL BOOK COHPANY v INC . o 1%2 o PP. 356-359 9 FOR FURTHER INFORRATION . RODIFIED BY J. GREGORSKI DECEHBEflo1984 NtORDER POLYNORIAL AICOEFFICIENTS POLY U'REAL PARTS ROOTS V-IHAG PARTS ROOTS IRSHAGICAL HYSTERY VARIABLE SUBROUTINE PROOTINcAoUcVoIR) INCLUDE ’SYSKIT)COHHON.DIR>CTRLBK.TEXT’ REAL AIHAXCOF).UIHAXDEGloVIHAXDEG)oHIHAXCOF). 2 BIHAXCOFIoCIHAXCOF) IREVIIR NCIN+1 m 1 IaloNC HIII'AII) P'0.0 O'0.0 R'0.0 IF(HIIII49204 NC'NC-I IF(NC.LE.O) GOTO 100 VINC)’0.0 U(NC)‘0.0 DO 1002 IflloNC 1002 HIII8H(I+1) UlUlb 11 GO TO 3 IF(NC‘I ’50 10005 IF(NC-Zl7.6.7 RI-HIl)/H(2) GO TO 50 IF(NC-319.8.9 P-H(2)/H(3) O-HIIIIHIBI GO TO 70 IF(ABS(HINC-1)/H(NC))-ABS(H(2)/H(l))110.19.19 IREVI-IREV H8NC/2 DO 11 II1.N NL=NC+l-I FIRINL) N(NL)=H(I) HII)=F 12 13 15 16 19 49 50 51 52 53 54 7O 71 IF(O)13.12.13 P-0.0 GO TO 15 PIP/O O-i.O/O IF(R)16.19.16 R-i.0/R E-4.0E-7 D(NCI-NINC) C(NC)-NINC) D(Nc+i)-0.0 C(Nc+i)-0.0 NP-NC-I DO 49 JI1.1000 DO 21 Ii-i.NP I-NC-Ii IIIIINII)+RIB(I+1) C(Il-BII)+Bac(l+l) IF(ABS(BII)IN(1))-E)50.50.24 IF(CI2))23.22.23 R-R+i.0 GO TO 30 R-R-Bti)/C(2) DO 37 I181.NP I-NC-Ii BII)-N(I)-P!B(I+i)-Qs8(1+2) C(I)-B(I)-P§C(l+l)-O&C(I+2) IF (N(2))32.31.32 IF(ABS(B(2)/N(i))-E)33.33.34 IFIABSIBI2)/N(2))-E)33.33.34 IF(ABS(BIl)/N(1))-E)70.70.34 CHAR-C(2)-B(2) 086(3)I92-CBARIC(A) IF(DI30.35.36 PIP-2. OIOIIO+1.O) as TO 49 P-P+(B(2)IC(3)-B(l)!C(4))ID O-O+(-B(2)GCBAR+B(1)uC(3))ID CONTINUE E-E!4. GO TO 20 NCsNC-i VINC)-0.0 IF(IREV)51.52.52 U(NC)-1.0/R GO TO 53 U(NC)IR DO 54 I‘IONC N(I)-B(I+1) GO TO 4 NC8NC-2 IF(IREV)71.72.72 OP-i.0/O 72 74 81 82 FP‘P/(ON2.0) GO TO 73 OP-O PP-P/2.0 FIIPP) l'2-OP IF(F)74.75.75 U(Nc+1)--PP U(NC)I-PP VINC+1)-SORT(-Fl VINClI-VINC+1) GO TO 78 IF(PP)81.80.81 U(NC+1)I-SORT(F) GO TO 82 U(NC+l)--(PPIABS(PP))!(ABS(PP)+SORT(F)) CONTINUE VINC+1180.O U(NC)IOP/UINC+1) VINC)I0.0 DO 77 I-IONC HII)-B(I+2) GO TO 4 RETURN END CHINNNNNNNINNNNNNNNNNNNNNNNNNN SORT NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CINNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNN C C C C C C C 25 3O 4O PUTS EIGENVALUES IN ASCENDING ORDER RODIFIED BY J. GREGORSKI APRIL.1985 SUBROUTINE SORTIRRoRIoNORDER) INCLUDE ’SYSNIT>COHHON.DIR>CTRLBK.TEXT’ DIRENSION RRIHAXDIH).RI(HAXDIH) DO 40 I-1-NORDER-1 DO 30 JtloNORDER-I IF(RRIJ).LE.RR(J+1)) GO TO 25 N3J+1 RRTEHPtRRIJ) RITEHPIRI(J) RRIJ)=RR(N) RIIJ)=RI(N) RRIN)=RRTEHP RIINISRITEHP CONTINUE CONTINUE CONTINUE RETURN END C C CNNNNNNINNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNN C C Appendix D UTILITY FILES SOURCE CODE LISTINGS C C CNNNNNNNNNNNNNNNNNNNNINNNNINNN IOUTIL NNNNNNNNNNNNNNNNNNNNNNNNINNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN C C C-- DESCRIPTION: C Contains all I/O routines to insure robust C operation. All inputs are checked for validity C before being used. C C--- CONTENTS: FNANE reads input filenase & checks for validity GETINT reads an integer nusber GETREL reads a real nusber GETCNR reads a character GETLIN reads an entire line CRECXT checks a string for all integer values CHRPCK orites an array of characters to a string YES logical function to read YES or NO response RENO reads senu option selected and checks if valid PROCED asks if you sent to proceed NYCRAR function returns true ASCII code of a char. -- INDEX: CHECKY CHRPCK FNAHE GETCHR GETINT GETLIN GETREL HENU HYCHARIFCN) PROCED YESILGL FCN) (If)(If)(TCICICICICI()rIfICIfICICICICIflfiflrlfl(If) CNNNNNNNNNNNNNNNNNNNNNNNINNNNN FNAflE INNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNN C C C READS IN FILENAHE.CHECKS FOR A VALID FILENAHE. C CHECKS AGAIN UITH USER.IF NO NARE ENTERED C THEN EXIT SET TO TRUE.CALLING SEGHENT USES THIS C TO EXIT FROR TASK. C URITTEN BY J. GREGORSKI RARCH.1985 C SUBROUTINE FNAHEIFILNARoEXIT) C CHARACTER'I LINE(40) CHARACTER!15 FILNAR LOGICAL YESoEXIT EXIT'.FALSE. C 100 URITE(1o89) 89 FORRAT(I’ ENTER A FILE NARE (15 CHAR. OR LESS)’. 2/o’ OR HIT (RETURN) TO EXIT. ’0.) CALL GETLINIISTART.ISTOP.LINE917) C C-- NOTE EXTRA COLUHNS READ TO DETECT TOO-LONG NARE... C IF(ISTART.GE.18)THEN EXIT-.TRUE. ONTO 999 ENDIF C C~-* CHECK VALIDITY OF FILENAHE TYPED IN. C IF(ISTOP.GT.15.0R.LINE(ISTART).LT.’A’ 2 .OR.LINE(ISTART).GT.’Z’)THEN URITE(1.102) 102 FORRAT(I’ FILE NAHE RUST BE 1-15 ALPHANUNERIC’./. 2 ’ CHARACTERS (INCLUDING '.' AND 'l'l’o/o 3 ' AND START UITH A LETTER. ’) GO TO 100 ENDIF DO 105 I3ISTRRT9ISTOP C C--- CHECK FOR ALPHAoDIGITo PERIOD. OR SLASH... C IF(LINEII) .GE. '.’ .AND. LINE(I) .LE. ’9’ .OR. 2 LINE(I) .GE. ’A’ .AND. LINE(I) .LE. ’Z’ITHEN GO TO 105 ELSE URITE(1.102) ON TO 100 ENDIF ~105 CONTINUE C C-- ASSEHBLE FILE NAHE C URITE(FILNAH.111)(LINE(I).I=ISTART.ISTOP) 111 FORHATI15A1) C C--- VERIFY NAHE FOR HRITING OR READING C URITE(1.201) FILNAR 201 FORRAT(I’ YOU ENTERED FILE NARE: ’.A15o/o 2 ' IS THAT CORRECT? (YES): ’.O) IF(.NOT.YES(15p’Y’))GO TO 100 999 RETURN END C C CNNNNNNNNNNNNNNNNNNNNNNNNNNINN GETINT NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNN C THIS ROUTINE RETURNS AN INTEGER IN IVAR C READ FROH THE CONSOLE AND CHECKED FOR VALIDITY... SUBROUTINE GETINT(IVARvLOUERuUPPERoLEN) C CHARACTER'S IZINT CHARACTERII LINE(40) INTEGER ISTART.ISTOP.IVAR.LOUER.UPPERoFRSTCH-LENoLLEN LOGICAL JUNK C LLEN‘LEN 10 CALL GETLIN(ISTART:ISTOPoLINEoLLEN) C IF(ISTART.EO.LLEN+1) RETURN C C--- RETURN ON NO INPUT UITH DEFAULT VALUE PRESENT IN IVAR g-- NE CHECK THE FIRST CHARACTER FOR +. -. OR NURBER c I'HYCHAR(LINE(ISTART)) g-- CHECK FOR + (ASCII843) C-- CHECK FOR - (ASCII345) C C FRSTCH I ISTART IF(I.NE.43 .AND. I.NE.45) GOTO 15 FRSTCH I FRSTCH+1 C 15 CALL CHECKY(LINE.FRSTCH.ISTOPoJUNK) IF(JUNK) GOTO 800 C C--- NON NE RAKE A CURSORY CHECK FOR RANGE... C IF((ISTOP-ISTART).GT.3) THEN GOTO 800 ENDIF C C--- NOU HE CAN SEND AN INTEGER BACK... C URITE(IZINT9300) (LINE(I).I=ISTART.ISTOP) 300 FORRAT(5A1) g-- AND NON NE GET THE INTEGER INTO AN INTEGER VARIABLE... c READ(IZINTo400) I 400 FORRAT(BNoI5) g-- VE CHECK AGAIN TO SEE IF INPUT IS UITHIN RANGE... c IF(I.LT.LOUER .OR. I.GT.UPPER) THEN ONTO 800 ENDIF IVAR I I C C C-- AND NOV HE CAN 63 NONE... C C RETURN C . 800 URITE(1.1OOILOUERoUPPER 100 FORRAT(I’ ENTER INTEGER FROH ’oI5.’ TO ’oI5.’3 ’.O) LLEN-5 ONTO 10 END C C ClNNNNNNNNNNNNNNNNNNNNNNNNNNNN GETREL NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNINNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN THIS ROUTINE GETS A LINE FROH THE CONSOLE. LOOKS FOR A REAL NURBER AND PERFORHS VALIDITY CHECKS. IF IT DOESN’T LIKE UHAT THE USER HAS GIVEN IT. THE USER UILL BE DUNNED INTO PRODUCING AN ACCEPTABLE REAL NURBER. 0000000 SUBROUTINE GETREL(RELVARoLOVER.UPPERoLEN) 0 LOGICAL JUNK INTEGER FRSTCH CHARACTER'I IZDOToIZE CHARACTERll LINE(40) CHARACTERI4O STRING INTEGER ISTART.ISTOP.LEN.LLEN REAL LOVER.UPPER.TENP.X C C--- FRSTCH POINTS TO THE FIRST NUHERICAL CHAR (OR .) C-- IDOT POINTS TO A DECINAL POINT C DATA IZDOT.IZE/’.'.’E’/ C LLEN-LEN 10 CALL GETLINIISTART.ISTOPoLINEvLLEN) C IF(ISTART.EO.LLEN+1) RETURN C FRSTCH'ISTART+1 C I'HYCHAR(LINE(ISTART)) IF(I.EO.43 ) GOTO 20 IF(I.EO.45 ) @flTO 2O FRSTCH'ISTART C IF(I.EO.46) GOTO 20 IF(I.GE.48 .AND.I.LE.57) GOTO 20 C C--- NE EET A LOSER... C GOTO 800 C 20 IDOT I O IPOSE I 0 DO 30 I‘ISTART.ISTOP IF(LINE(I).EO.IZDOTIIDOT=I IF(LINE(I).EO.IZEIIPOSE8I 3O CONTINUE C K ' ISTOP IF(IPOSE.NE.O) THEN C C-- VE HAVE AN EXPONENT... C J-IPOSE+1 IINYCHAR(LINE(J)) IF(I.EO.43.0R.I.EO.45) J=J+1 C C-- J NOU POINTS TO THE FIRST 4 IN EXPONENT... C CALL CHECKY (LINE.J.ISTOP.JUNK) IF(JUNK) GOTO 800 IJKIISTOP-J IF((IJK ).GT.1) GOTO 800 IF((IJK ).EO.1 .AND.NYCHAR(LINE(J)).GT.50)GOTO 800 C C-- VE CHECK TO SEE THAT THERE IS SOHE NURBER AFTER EXP. C IF((IJK ).LT.O)GOTO 800 C C--- CHECKS FOR OVERLARGE EXPONENT... C K 3 IPOSE - 1 ELSE IPOSE 3 ISTOP+1 C C--- IPOSE POINTS TO THE PLACE AFTER HANTISSA.. C ENDIF C NON NE CHECK FOR A PERIOD.. IF(IDOT.NE.O) THEN HERE NE CHECK FOR AN REAL NURBER... ISIDOT-1 I POINTS TO LAST POSSIBLE CHAR BEFORE ’.’. CALL CHECKY(LINE.FRSTCH.IoJUNK) IF(JUNKIGOTO 800 K POINTS TO LAST CHAR BEFORE EXPONENT... I'I+2 I POINTS TO THE FIRST CHAR AFTER ’.’ CALL CHECKY(LINE.I.K.JUNK) IF(JUNK) ONTO 800 ELSE HERE NE CHECK FOR AN INTEGER... (POSSIBLY UITH EXPONENT) CALL CHECKY(LINE-FRSTCH.K.JUNK) IF(JUNKIGOTO 800 IF(IDOT.E0.0 .AND.IPOSE.NE.O)GOTO 800 LINE(K+1)8'.’ ENDIF NOV NE CHECK THE RANGE... IF(IDOT.E0.0) THEN IPOVER'K-FRSTCH+1 ELSE IPOUER'IDOT-FRSTCH ENDIF CHECK FOR LEADING ZEROES DO 40 IPOVIFRSTCHaK I'NYCHAR(LINE(I)) IF(I.NE.46 .OR. I.NE.48) GOTO 50 IPOUERSIPOUER-l CONTINUE CONTINUE NOV HE CHECK THE EXPONENT.. IF(IPOSE.LT.ISTOP)THEN IEXP 8 NYCHARILINE(J)) - 48 IF(J.NE.ISTOP) IEXPBIEXP510+NYCHAR(LINE(ISTOP)1-48 C C-- CHECK FOR NEG EXPONENT AND ADD TO IPOVER.. C IF(LINE(J-1) .EO.’-') IEXPS-IEXP C IPOVER 8 IPOUER +IEXP ENDIF C IF(IPOUER.GT.16) GOTO 800 IF(IPOUER.LT.-14)GOTO 810 C C--- NON NE PACK IT BACK INTO A STRING.. C CALL CHRPCK(LINE.STRING.ISTART.ISTOP) C READ(STRING.100) TEHP 100 FORHAT(BN.F10.0) IF (LONER.GT.UPPER) THEN X'LOUER LOUER'UPFER UPPER-X ENDIF IF ((TENP.LT.LOUER).OR.(TENP.GT.UPPER)) GOTO 800 RELVAR'TENP RETURN C C-- THIS IS WHAT I CALL THE PAUL HAAS NENORIAL C--- ’PLEASE TRY AGAIN. DOORKNOB...’ SECTION C 600 NRITE(1.200)LOUER.UPPER 200 FORRAT(I’ ENTER NURBER FROR ’.1PE10.3. 2 ,0. TO '91PEIO.30'3’0.) LLEN'23 ONTO 10 810 URITE(1.2101 210 FORRAT(I’ i5! NURBER TOO SHALL. ENTER 0 OR’. 2 I’ NURBER UITH NAGNITUDE OVER 1.E-15.’. 3 /’ ENTER NURBER: ’.O) LLEN-23 GO TO 10 C C END C C C!NNNNNNNNNINNNNNNINNININININN GETCfiR NNNNNNNNNNNNNNNNNINNNNNNNNNNI C!NNNNNNNNNNNNNNINNININININNNNNNNNNNNNNNNNN!!!NININNNNNNNNNNNINNNNN C C C ACCEPTS DEFAULT. CAR. IN AND LOOKS FOR LEGAL CAR. IN C LEN COLUHNS. RETURNS AS NEV VALUE OF CAR. IF BLANK LINE. C RETURNS DEFAULT IN CAR UNCHANGED. C SUBROUTINE GETCHR(CAR.LEN) C INTEGER LEN.ISTART.ISTOP.LLEN CHARACTflflil LINE(40).CAR C LLENILEN 10 CALL GETLIN(ISTART.ISTOP.LINE.LLEN) C IF(ISTART.GE.LLEN+1) RETURN C IIHYCHAR(LINE(ISTART)) IF(I.LT.32 .OR. I.GT.90) GOTO 800 C CAR I LINE(ISTART) RETURN C 800 URITE(1.100) 100 FORKAT(’ ILLEGAL CHARACTER ENTERED. ’./. 2’ PLEASE TRY AGAIN: ’.O) LLENI2O GOTO 10 END C C CUNNINNNNNNNNNNNNNNNNNNNNNNINN GETLIN NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNN!NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN FINDS AND NUHBERS BLANKS IN INPUT LINE. DETERRINES RANGE OF NON-BLANK CHARACTERS IN STRING. 000000 SUBROUTINE GETLIN(ISTART.ISTOP.INPUT.LEN) 0 CHARACTERfil INPUT(40) INTEGER ISTOP.ISTART.LEN C C READ(1.100) (INPUT(I).I=1.LEN) 100 FORRAT(4OA1) C C--- FIND THE FIRST NON-BLANK CHARACTER... C ISTART = O 10 ISTART I ISTART+1 IF(INPUT(ISTART).EO.’ ’ .AND.ISTART.LT.LEN+1) GOTO 10 C C--- FIND THE FIRST BLANK AFTER ISTART.. C ISTOP I ISTART - 1 2O ISTOP I ISTOP +1 C C IF(INPUTIISTOP+1).NE.’ ’ .AND.ISTOP .LT.LEN+1) GOTO 20 RETURN END CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN CHECKY NNNNINNNNNNNNNNNNNNNNNINNNNNN CNNNNNNINNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN CICICICYCICYCI (I C C THIS ROUTINE CHECKS A STRING OF CHARACTERS TO SEE IF THEY ARE ALL INTEGERS AND RETURNS A LOGICAL VARIABLE (JUNK) .TRUE. IF THEY ARE NOT. SUBROUTINE CHECKY (LINE.ISTART.ISTOP.JUNK) CHARACTER'I LINE(40) INTEGER ISTART.ISTOP LOGICAL JUNK DO 10 IIISTART.ISTOP JINYCHAR(LINE(I)) IF(J.LT.48 .OR. J.GT.57) THEN JUNK I .TRUE. RETURN ENDIF CONTINUE JUNK I .FALSE. RETURN END CNNNNNNNNNINNNNNNNNNNNNNNNNNNN CHRPCK NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNINNNNNNNNNNNNNNNNNNNINNINNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNN (TCTCSCTCICI f) 100 URITES ARRAY OF CHARACTERS TO A STRING. STRING REVISED TO '32 TO UORK FOR FILENANES PASSED. USER SHOULD NOT CALL UITH ISTOP BEYOND 32. SUBROUTINE CHRPCK(LINE.STRING.ISTART.ISTOP) CHARACTERll LINE(40) CHARACTER'32 STRING INTEGER ISTART.ISTOP VRITE(STRING.100) (LINE(I).I=ISTART.ISTOP) FORRAT(32A1) RETURN END C C CNNNNNNINNNNNNNNNNNNNNNNNNNNNN YES(LGL. PC") NNNNNININNNNNNNNNINNNNN CINNNNNNNINNNNNNNNNINNNNNNNNNNNNNNNN!NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN SETS YESI.TRUE. IF RESPONSEIYES OR SETS YESI.FALSE. IF RESPONSE INO. ASKS AGAIN IF NEITHER. LOGICAL FUNCTION YES(LEN.DEFCHR) 0 000000 CHARACTERil CHDF.DEFCHR INTEGER LEN.LLEN YESI.FALSE. LLENILEN IO CHOP-DEFCHR CALL GETCHR(CHDF.LLEN) IF(CHDF.EO.’Y’)THEN YESI. TRUE. RETURN ELSE IF(CHDF.EO.’N’)THEN RETURN ELSE URITE(1.100) 100 FORRAT(I’ YES OR NO. PLEASE: ’.$) LLENI2O GO TO 10 ENDIF END C C CNNNNNINNNNNNNNNNNNIIIINNINNNN NENU NNNNNNNNNNNNINNNNNINNNNNNNIII CNN!!!IINNNNNNNINNNNININNNNNNNNNNNNNINNNNNNNNNNNNNINNNNNNNNNNNNNINN READS NENU OPTION DESIRED AND CHECKS FOR VALIDITY. RETURNS SELECTED OPTION IF OK. 00000 SUBROUTINE NENU(OK.I.C1.C2.C3.C4.C5.C6.C7.C8.C9.C10. 2 DEFCHR.LEN) INTEGER LEN.LLEN.I LOGICAL OK CHARACTERll C(10).C1.C2.C3.C4.C5.C6.C7.C8.C9.C10.CAR. 2 DEFCHR C(1)IC1 C(2)IC2 C(3)IC3 C(4)IC4 C(5)IC5 C(8)IC6 10 100 110 C C C(7)IC7 C(8)IC8 C(9)IC9 C(10)IC10 LLENILEN NI1 CARIDEFCHR CALL GETCHR(CAR.LLEN) DO 10 J‘IIIO IF(CAR.EO.C(J))THEN IF(CAR.EO.’ IIJ OKI.TRUE. RETURN ENDIF CONTINUE IF(N.EO.1)THEN NI2 URITE(1.100) FORRAT(I’ BAD OPTION. ENTER NEU CHOICE: ’.O) LLENI13 GO TO 5 ELSE HRITE(1.110) FORRAT(I’ BAD OPTION AGAIN. ’) OKI.FALSE. RETURN ENDIF END CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN PROCED NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNN!NNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNN C C C C C 51 C C PROCEED ROUTINE IS ROBUST. RETURNS T OR F. EDG. SUBROUTINE PROCED(ANSUER) LOGICAL ANSHER.YES URITE(1.51) FORRAT(I’ PROCEED? (YES): ’.9) IF(YES(23.’Y’))THEN ANSUERI.TRUE. ELSE ANSUERI.FALSE. ENDIF END CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN HYCHAR(FCN) NNNNNNNNNNNNNNNINNNNNNIN CNNNNNNNNNNININNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN C NYCHAR RETURNS ’TRUE’ ASCII CODE OF CHAR 11107/83 ZZ FUNCTION NYCHAR(CH) 0 0000 CHARACTER'l CH NYCHAR I ANDIICRARICH).127) RETURN END C C CNNNNNNNNNNNNINNNNNNNININN!!!NNNNNNNNNININNNININNINNNNNINNNNNNNNNNN CNNINNNNNNINNNNNNNNINNNNNNNNINNNNNNININNNINNNNNNNNNNNNNNNNNNNNNNNIN C C C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN UNIFIL NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNINN!NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN C C C--- DESNHIPTION: C Perforss eanageeent of both problea and results C user files. File nases are stored in the library C file and the files reside in the users directory. C C--- CONTENTS: C UNIDRV aain driving prograa for file agt. C LSTLIB lists the library of user files C DELFIL deletes a user file C CNKLIB updates or creates the file library C ADAFIL adds a filenase to the library C SAVFIL creates a user file C LODFIL loads a user file C C-- INDEK: C ADAFIL C CNKLIB C DELFIL C LODFIL C LSTLIB C SAVFIL C UNIDRV C C CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN UNIDRV NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNINNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNINNNINNNNNNI NAIN CALLING ROUTINE FOR FILE NANAGEHENT SYSTER. CONTAINS NENU AND DIRECTS FLOV APPROPRIATELY. URITTEN BY J. GREGORSKI JANUARY.1985 CICICICICICT SUBROUTINE UNIDRV (I INCLUDE ’SYSKIT>CONNON.DIR>FILRBK.TEXT’ INCLUDE 'SYSKIT>CONHON.DIR>CTRLBK.TEXT’ CHARACTERNQ INSET LOGICAL OK.YES C-- ASK USER FOR TYPE OF FILES THEY VANT TO ACCESS. C--- USER IS BADGERED UNTIL THEY NAKE A DECISION. C--- USE PROPER LIBRARY AND HENU FOR TYPE OF FILES. C-‘- HADE TO BE COHPATIBLE VITH ALL 3 RODULES. IF (HODULE.EO.'C’) THEN LIBNANI’PROBLEHNLIB’ INSETI’ PROBLER ’ ENDIF 110 100 125 120 135 130 1010 C GOOUIUNHU>~1 HRITE(1.110) FORHATI/l’ DO YOU VANT TO VORK NITH:’) IF (NODULE.EQ.’C’) THEN URITE(1.125) FORNAT(’ DIFFERENTIAL EQUATION PROBLER FILES? (YES): ’.3) ELSE URITE(1.120) FORNAT(’ PROBLER FILES? (YES): ’.O) ENDIF IF (YES(19.’Y’)) THEN PRBFILI.TRUE. IF (NODULE.EQ.’C’) GOTO 5 LIBNAHI’PROBLENNLIB’ INSETI’ PROBLER ’ ONTO 5 ENDIF IF (HODULE.EQ.’C’) THEN URITE(1.135) FORRAT(’ STATE EQUATION PROBLER FILES? (YES): ’.O) ELSE URITE(1.130) FORNAT(’ RESULTS FILES? (YES)! ’.I) ENDIF IF (YES(19.’Y’)) THEN PRBFILI.FALSE. IF (NODULE.EQ.’C’) GOTO 5 LIBNAN=’RESULTSILIB’ INSETI’ RESULTS ’ GOTO 5 ENDIF ONTO 100 URITE(1.1010) INSET.INSET.INSET.INSET FORNAT(/A9.’FILER OPTIONS’. /’ ’. l’ 58 SAVE THE’.A9.’IN A FILE’. /’ U8 UNSAVE (LOAD) A’.A9.’FILE’. /’ C: CHECK DIRECTORY AGAINST EXISTING FILES’. /’ L8 LIST THE DIRECTORY CONTENTS’. I’ D3 DELETE A’.A9.’FILE’. /’ A: ADD A FILE TO THE OIRECTORY’. /’ R3 RETURN TO THE RAIN NENU (IDEFAULT)’. /’ ’. /’ ENTER OPTION (R): ’.O) CALL NENU(OK.IX.’S’.’U’.’C’.’L’.’D’.’A’.’R’.”. 2 V IF (.NOT.OK) GOTO 5 GOTO (10.20.30.40.50.60.70) IX C-- SAVE A PROBLER OR RESULTS C 10 C c-.. C 20 C c--- C 30 C c--- C 40 C c..- C 50 C c--- C 50 C c..- C 70 C C CALL SAVFIL GOTO 5 LOAD A PROBLER OR RESULTS CALL LODFIL GOTO 5 CHECK DIRECTORY CALL CHKLIB ONTO 5 LIST THE DIRECTORY CALL LSTLIB GOTO 5 DELETE A FILE CALL DELFIL GOTO 5 ADD A FILE CALL ADAFIL ONTO 5 RETURN TO NAIN NENU RODFLGI.TRUE. RETURN END CNNNNNNNNNNNNNNNINNNNNNNNNNNNN LSTLIB NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CINNNNNNNNNNNNNNNINNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 00000000 0 0 LSTLIB PRINTS A LIST OF THE STORED PROBLER OR RESULTS FILE LIBRARIES ON THE USER SCREEN. LIBRARY NARES ARE STORED IN THE FILE LIBNAH. EACH PROBLER OR RESULTS SET IS FILED IN ITS OVN PERHANENT FILE. CREATED BY J. GREGORSKI JANUARY.1985 SUBROUTINE LSTLIB INCLUDE ’SYSKIT>CONRON.DIR>FILRBK.TEXT’ LOGICAL FXST.FOUND.YES CHARACTER'9 NODNAH(5) CHARACTERNB ANSVER LBLUNIO C-- ALL 5 FOR CONPAT UITH ALL RODULES C--- BOTH PROBLEHS AND RESULTS C NODNAN(1)I’T OR F: ’ NODNAN(2)I’C: ' NODNANI3)I’F8 ’ NODNAH(4)I’T: ’ HODNAH(5)I’T.F OR Cl’ C C-- DETERRINE PROPER HEADING FOR FILE LISTING C-- HEADERS SET BY INIT. PROCESS FOR RODULE (SETUP) IF (PRBFIL) THEN JXKIHEADER(1) ELSE JXKIHEADER(2) ENDIF C-- SEE IF THERE ARE ANY LIBRARIES AT ALL INQUIREIFILEILIBNAN.EXISTIFXST) IF(FXST) THEN OPENILBLUN.FILEILIBNAN.ERRI990.STATUSI’OLD’. 2 FORHI’UNFORHATTED’) READ(LBLUN.END=990.ERRI99O) NUNUFL IF(NUHUFL.GT.O) THEN READ(LBLUN.ENDI990.ERRI990)(FLNAN(I).II1.NUNUFL) READ(LBLUN.EN08990.ERR=990)(TITLE(I).II1.NUNUFL) READ(LBLUN.END=990.ERR=990)(TYPE(I).II1.NUNUFL) CLOSE(LBLUN.STATUSI’KEEP’) FOUNDI.FALSE. URITE(1.180) HODNAH(JXK) 180 FORRAT(I’ FILES FOR RELOADING RODULE ’.A9./. 2 ’ ’) NLINEI3 DO 200 III.NUNUFL IF ((((.NOT.PRBFIL).AND.(TYPEII).EQ.PRBTYP)) .OR.((PRBFIL).AND.(TYPE(I).EQ.NANTYP(1))) .OR.((PRBFIL).AND.(TYPE(I).EQ.UANTYP(2)))) .OR.(TYPE(I).EQ.O)) THEN URITE(1.201)FLNAN(I).TITLE(I) 201 FORNATI/2X.A15./.1X.A40) FOUNDI.TRUE. NLINEINLINE+3 IF (NLINE.GE.25) THEN URITE(1.1010) 1010 FORRAT(I.’ HANT TO SEE KORE? (YES): ’.3) IF (.NOT.YES(25.’Y’)) GOTO 999 URITE(1.I) ’ ’ NLINEIO ENDIF DUN ENDIF 200 CONTINUE IF (.NOT.FOUND) THEN URITE(1.182) 182 FORRATI’ (NO SUCH FILES IN THE LlBRARY)’) ENDIF C ELSE URITE(1.1000) 1000 FORHATII' THERE ARE NO USER LIBRARY FILES.’) ENDIF C C-—- LIBNAH DOOENT EXIST. USE CHKLIB TO CREATE IT C ELSE CALL CHKLIB URITE(1.1000) ENDIF ONTO 999 C 990 URITE(1.991) 991 FORRAT(II' NI! ERROR lli’./. 2 ’ THE LIBRARY OF FILES lS UNREADARLEI’) C 999 URITE(1.995) 995 FORHATI/l.’ HIT (RETURN) TO RETURN TO HENU. ’.O) READ(l.’(A3)’) ANSHER RETURN END C C csauaeeeeeeeealesauneolnrunion DELFIL NNIINNIRHINNIINNNNNNNNNNNINNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNINNNNNNNNNNNINNNNINNNNNN C C C USED TO DELETE A PROBLER OR RESULTS FILE FROR THE LIBRARY. C CREATED BY J. GREGORSKI JANUARY.1985 C SUBROUTINE DELFIL C INCLUDE ’SYSKIT>CONNON.DIR>FILRBK.TEXT’ C LOGICAL EXST.YES.EXIT CHARACTER'B ANSHER LBLUNI8 C C l CONTINUE C HRITE(1.1000) 1000 FORNATII’ IN: ENTER NANE OF FILE TO BE DELETED NNN ’) CALL FNANE(NAHE.EXIT) IF (EXIT) THEN URITE(1.1020) 1020 FORRAT(I’ DELETE EXITED. NO CHANGES NADE. ’) RETURN ENDIF C C--- SEE IF NARE EXISTS C INQUIREIFILEILIBNAN.EXISTIEXST) IF(.NOT.EXST) THEN URITE(1.1010) 1010 FORRAT(I’ III NO FILES IN LIBRARY TO DELETE *ifi’) URITE(1.1020) RETURN ELSE OPEN(LBLUN.FILEILIBNAN.ERRI990.STATUSI’OLD’. 2 FORHI’UNFORHATTED’) READ(LBLUN.ENDI990.ERRI990) NUHUFL IF(NUNUFL.GT.O) THEN READ(LBLUN.END=99O.ERRI990)(FLNAN(I).III.NUHUFL) READ(LBLUN.END8990.ERRI990)(TITLE(I).II1.NUNUFL) READ(LBLUN.ENDI990.ERRI990)(TYPE(I).II1.NUHUFL) CLOSE(LBLUN.STATUSI’KEEP’) NLBIO DO 100 II1.NUNUFL IF(FLNAH(I).EQ.NANE) THEN NLBII ENDIF IOO CONTINUE ELSE IF (NUHUFL.LT.O) THEN CLOSE(LBLUN.STATUSI’KEEP’) GOTO 990 ELSE CLOSE(LBLUN.STATUSI’KEEP’) URITE(1.1010) URITE(1.1020) RETURN ENDIF ENDIF IF (NLB.EQ.O) THEN URITE(1.1050) 1050 FORRAT(I’ NARE DOESN”T EXIST. TRY AGAIN.’) GOTO 1 ELSE URITE(1.1060) 1060 FORRAT(I’ FILE FOUND. DELETE IT? (NO): ’.3) IF (.NOT.YES(25.’N’)) THEN GOTO 1 ELSE C C--- HE REALLY VANTS TO DELETE IT! C OPEN(9.FILEINANE.STATUSI’UNKNOUN’.FORH=’UNFORHATTED’) CLOSE(9.STATUS=’DELETE’) C-- REURITE LIBNAH C 300 C OPENILBLUN.FILEILIBNAN.ERRI990.STATUSI’UNKNOVN’. FORNI’UNFORNATTED’) CLOSE(LBLUN.STATUSI’DELETE’) OPENILBLUN.FILEILIBNAN.ERRI990.STATUSI’NEU’. 2 FORNI’UNFORHATTED’) NUHUFLINUNUFL-1 DO 300 II1.NUNUFL IF (I.GE.NLB) THEN FLNAN(I)=FLNAN(I+1) TITLE(I)ITITLE(I+1) TYPE(I)ITYPE(I+1) ENDIF CONTINUE URITE(LBLUN.ERRI990) NUNUFL VRITE(LBLUN.ERR=990)(FLNAN(I).II1.NUNUFL) URITE(LBLUN.ERRI990)(TITLEII).II1.NUHUFL) VRITE(LBLUN.ERR=990)(TYPE(I).II1.NUHUFL) ENDFILE(LBLUN) CLOSE(LBLUN.STATUSI’KEEP’) ENDIF ENDIF C-- UANT TO TRY ANOTHER ONE. C 3000 1080 fififi NRITE(1.3000) FORRAT(I’ flfll FILE DELETION COHPLETED NNN’) URITE(1.1080) FORRAT(I’ VANT TO DELETE ANOTHER FILE? (NO): ’.O) IF (.NOT.YES(25.’N’)) THEN GOTO 999 ELSE GOTO 1 ENDIF URITE(1.991) FORNATI/l’ fifi! ERROR fil!’./. 2 ’ THE LIBRARY OF FILES IS UNREADABLEI’) URITE(1.995) FORRAT(II.’ HIT (RETURN) TO RETURN TO HENU. ’.I) READ(l.’(A3)’) ANSHER RETURN END CNNNINNNNNNNNNNNNNNNNINNNNNNNN CHKLIB NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNN C C C CHKLIB UPDATES THE LIBRARY NANE FILE. LIBNAN. IF IT DOESN’T EXI 0 0000 1001 ST IT IS CREATED. ANY FILES THAT DO NOT EXIST ARE DELETED FRON LIBNAN. CREATED BY J. GREGORSKI JANUARY.1985 SUBROUTINE CHKLIB INCLUDE ’SYSKIT>CONHON.DIR>FILRBK.TEXT’ CHARACTERl40 STOTTL CHARACTERII5 STONAN INTEGER STOTYP CHARACTERG3 ANSHER LOGICAL EXST LBLUNI8 URITE(1.1001) LIBNAN FORRAT(I’ CHECKING DIRECTORY STATUS: ’.A) INQUIREIFILEILIBNAH.EXISTIEXST) IF(.NOT.EXST) THEN OPEN(LBLUN.FILEILIBNAH.ERRI990.STATUSI’NEU’. 2 FORHI’UNFORHATTED’) 1000 C C-- L C 2 1003 NUNUFLIO NRITE(LBLUN.ERR=990)NUNUFL ENDFILE(LBLUN) CLOSE(LBLUN.STATUSI’KEEP’) HRITE(1.1000) LIBNAN FORNATII’ Nil DIRECTORY FILE CREATED: ’.A) IBNAN EXISTS. CHECK DIRECTORY AGAINST USER FILES. ELSE OPEN(LBLUN.FILEILIBNAH.ERRI990.STATUSI’OLD’. FORNI’UNFORNATTED’) READ(LBLUN.ENDI990.ERRI990) NUNUFL IF (NUNUFL.EQ.0) THEN CLOSE(LBLUN.STATUSI’KEEP’) URITE(1.1003) FORRAT(I’ THE DIRECTORY IS EHPTY.’) ELSE IF (NUNUFL.LT.0) THEN CLOSE(LBLUN.STATUSI’KEEP’) GOTO 990 ELSE READ(LBLUN.ENDIQQO.ERR8990)(FLNAN(I).III.NUHUFL) READ(LBLUN.END=990.ERR=990)(TITLE(I).II1.NUNUFL) READ(LBLUN.ENDIQQO.ERR8990)(TYPEII).IIl.NUNUFL) CLOSE(LBLUN.STATUSI’KEEP’) NEXIO DO 100 II1.NUNUFL INQUIRE(FILEIFLNAN(I).EXIST=EXST) IF(EXST) THEN NEXINEX+1 STONANIFLNAN(I) STOTTLITITLE(I) STOTYPITYPEII) FLNAHINEX)ISTONAH TITLE(NEX)ISTOTTL TYPE(NEX)=STOTYP URITE(1.1005) FLNAN(I) 1005 FORHAT(4X.’ FILE FOUND: ’.A) ELSE URITE(1.1010) FLNAH(I) 1010 FORRAT(4X.’ FILE HISSING: ’.A. 1 I4X.’ IT UILL BE DELETED FROR THE DIRECTORY.’) ENDIF 100 CONTINUE C C--- IF DIRECTORY IS CORRECT. NEXINUHUFL C IF (NEX.NE.NUNUFL) THEN OPEN(LBLUN.FILEILIBNAH.ERRI990.STATUSI’OLD’. 2 FORNI’UNFORNATTED’) CLOSE(LBLUN.STATUSI’DELETE’) OPENILBLUN.FILE=LIBNAH.ERRI990.STATUSI’NEN’. 2 FORNI’UNFORHATTED’) VRITE(LBLUN.ERR=990)NEX URITE(LBLUN.ERR8990)(FLNANII).II1.NEX) URITE(LBLUN.ERR=990)(TITLE(I).I=1.NEX) VRITE(LBLUN.ERRI990)(TYPE(I).II1.NEX) ENDFILE(LBLUN) CLOSE(LBLUN.STATUS=’KEEP’) ENDIF ENDIF ENDIF GOTO 999 990 URITE(1.991) 991 FORRAT(II’ ii! ERROR *fii’./. 2 ’ THE LIBRARY OF FILES IS UNREADABLEI’) 999 URITE(1.995) 995 FORRAT(II.’ HIT (RETURN) TO RETURN TO NENU. ’.O) READ(1.’(A3)’) ANSHER RETURN END (Iflf) CNNNNNNNNNNNNNNNNNNNNNNNNNNNNI ADAFIL NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ADDS AN EXISTING FILE TO THE DIRECTORY LIST. CREATED BY J. GREGORSKI JANUARY.1985 (ICICICIC) SUBROUTINE ADAFIL (I INCLUDE ’SYSKIT>CONHON.DIR>FILRBK.TEXT’ C LOGICAL EXST.YES.EXIT CHARACTERi3 ANSVER CHARACTERI40 ADDTTL CHARACTER'O ENDTTL LBLUNIO C C-- GENERATE END OF DEFAULT TITLE FOR C-- CONPATIBILITY UITH ALL RODULES. C ENDTTLI’NODULE ’l/NODULE C C--‘ ASSEHBLE DEFAULT TITLE FOR ADDED FILES C VRITE(ADDTTL.2000) LIBNAN.ENDTTL 2000 FORHAT(’§§! ADDED TO ’.A11.’ BY ’.A8.’ Ill’) 1 CONTINUE HRITE(1.1000) 1000 FORRAT(I’ NNN ENTER NARE OF FILE TO BE ADDED llr’) CALL FNANEINANE.EXIT) IF (EXIT) THEN URITE(1.1020) 1020 FORRAT(I’ ADD FILE EXITED. NO CHANGES HADE.’) RETURN ENDIF C C-- SEE IF FILE NARE EXISTS C INQUIREIFILEINAHE.EXISTIEXST) IF (.NOT.EXST) THEN URITE(1.1010) NANE 1010 FORRAT(I’ NO SUCH FILE FOUND: ’.A) ONTO 1 ENDIF C C--- SEE IF NANE EXISTS IN LIBRARY C INQUIREIFILEILIBNAN.EXIST=EXST) IF(.NOT.EXST) THEN CALL CHKLIB ELSE OPEN(LBLUN.FILEILIBNAN.ERR=990.STATUS=’OLD’. 2 FORN=’UNFORHATTED’) READ(LBLUN.END=990.ERR8990) NUNUFL IF(NUNUFL.GT.0) THEN READ(LBLUN.END=990.ERR=990)(FLNAN(I).I=1.NUNUFL) READ(LBLUN.END=990.ERR=990)(TITLE(I).II1.NUHUFL) READ(LBLUN.END=990.ERR=990)(TYPEII).IIl.NUNUFL) CLOSE(LBLUN.STATUS=’KEEP’) DO 100 [=1.NUNUFL IF(FLNAHII).EQ.NAHE) THEN URITE(1.1040) 1040 FORNATII’ THIS FILE ALREADY LISTED IN DIRECTORY.’) ONTO 1 ENDIF 100 CONTINUE ELSE IF (NUNUFL.LT.0) THEN CLOSE(LBLUN.STATUSI’KEEP’) GOTO 990 ELSE CLOSE(LBLUN.STATUSI’KEEP’) ENDIF ENDIF C C-- ADD THE FILE NARE TO DIRECTORY C NUHUFLINUHUFL+1 IF (NUHUFL.GT.NAXNUF) THEN NUHUFLINAXNUF URITE(1.1050) NUNUFL 1050 FORRAT(I’ If! DIRECTORY IS FULL AT ’.I4.’ FILES.’) URITE(1.1020) RETURN ENDIF C C-- ADD DEFAULT TITLE AND NEUTRAL PRBTYP(IO) C--- ALLOUS LISTING OF FILE BY ALL RODULES C FLNAH(NUNUFL)INANE TITLE(NUNUFL)IADDTTL TYPE(NUNUFL)I0 C C-- REVRITE LIBNAN UITH NEU FILE NARE ADDED C OPEH(LBLUN.FILEILIBNAH.EHR8990.STATUSS’OLD’. 2 FORNI’UNFORNATTED’) CLOSE(LBLUN.STATUSI’DELETE’) C OPENILBLUN.FILEILIBNAN.ERRI990.STATUSI’NEV’. 2 FORNI’UNFORRATTED’) VRITE(LBLUN.ERRI990) NUHUFL NRITE(LBLUN.ERR3990)(FLNAN(I).II1.NUNUFL) URITE(LBLUN.ERRI990)(TITLE(I).II1.NUNUFL) URITE(LBLUN.ERRI990)(TYPE(I).II1.NUHUFL) ENDFILE(LBLUN) CLOSE(LBLUN.STATUSI’KEEP’) C C-- VANT TO TRY ANOTHER ONE. C . URITE(1.3000) 3000 FORRAT(I’ lfli FILE ADDITION CONPLETED NNN’) URITE(1.1080) 1080 FORRAT(I’ UANT TO ADD ANOTHER FILE? (NO): ’.I) IF (.NOT.YES(25.’N’)) THEN GOTO 999 ELSE CICIC: ONTO 1 ENDIF URITE(1.991) FORRAT(II’ NNN ERROR ao§’,/. 2 ’ THE LIBRARY OF FILES IS UNREADABLEI’) URITE(1.995) FORRAT(II.’ HIT (RETURN) TO RETURN TO RENU. ’.O) READ(1.’(A3)’) ANSHER RETURN SIN CRNNNNNNNNNNNNNNNNNNNNNNNNNNNN SAVFIL NNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNINNNNNNINNNNIINNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN (I CICICICICI 000 N0 1010 C SAVES THE PROBLER DESCRIPTION OR RESULTS IN A USER NARED FILE. CREATED BY J. GREGORSKI JANUARY.1985 SUBROUTINE SAVFIL INCLUDE ’SYSKIT)CORRON.DIR)CTRLBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)FILRBK.TEXT’ INCLUDE ’SYSKIT)CORRON.DIR)LABLBK.TEXT’ CHARACTER'3 ANSHER LOGICAL LBXST.READIN.EXIT.YES.INLIB.EXST.ERROR INTEGER NFILE.FILTYP LBLUNI8 CONTINUE INLIBI.FALSE. -- CALL FOR THE FILE NARE URITE(1.1010) FORRAT(I’ II! ENTER NARE FOR THE SAVED FILE *ifl’) CALL FNARE(NARE.EXIT) IF (EXIT) RETURN C--- RAKE SURE NARE FILE EXISTS TO BE ACCESSED C 15 INQUIRE(FILEILIBNAR.EXISTILBXST) IF(.NOT.LBXST) THEN CALL CHKLIB GOTO 15 ENDIF OPENILBLUN.FILE=LIBNAR.ERR=990.STATUS=’OLD’. 2 FORRI’UNFORRATTED’) READ(LBLUN.ENDIQSO.ERR=990) NURUFL IF(NURUFL.EQ.0) THEN CLOSE(LBLUN.STATUSI’KEEP’) ONTO 600 ELSEIF (NURUFL.EQ.RAXNUF) THEN URITE(1.1015) 1015 FORRAT(I’ SORRY. NO RORE ROOR IN DIRECTORY FILE.’) CLOSE(LBLUN.STATUSI’KEEP’) GOTO 999 ELSEIF ((NURUFL.LT.0).OR.(NURUFL.GT.RAXNUF)) THEN CLOSE(LBLUN.STATUSI’KEEP’) GOTO 990 ELSE READ(LBLUN.ENOI990.ERRI990)(FLNAR(I).II1.NURUFL) READ(LBLUN.END8990.ERR8990)(TITLE(I).II1.NURUFL) READ(LBLUN.END=990.ERR8990)(TYPE(I).II1.NURUFL) CLOSE(LBLUN.STATUSI’KEEP’) ENDIF C C-- CHECK IF FILE IS IN LIBRARY AND EXISTENCE OF FILE C . DO 100 II1.NURUFL IF (FLNAR(I).EQ.NARE) THEN INLIBI.TRUE. NFILEII GOTO 600 ENDIF 100 CONTINUE C 600 INQUIRE(FILEINARE.EXISTIEXST) C C-- IF FILE EXISTS. CHECK IF USER UANTS TO OVERURITE C-- AN IRPLIED OVERURITE IF FILE DOES NOT EXIST C-- ASK FOR ANOTHER FILE NARE IF NO OVERVRITE C IF (EXST) THEN IF (INLIB) URITE(1.1020) 1020 FORRAT(I’ THIS FILE ALREADY EXISTS. SHALL I’. 2 /’ OVERVRITE IT UITH A NEW ONE? (NO): ’.O) IF (.NOT.INLIB) URITE(1.1030) 1030 FORRAT(I’ THIS FILE ALREADY EXISTS. BUT IT IS NOT’. 2 /’ CURRENTLY LISTED IN THE FILE LIBRARY.’. 3 /’ SHALL I OVERVRITE IT UITH A NEU ONE? (NO): ’.3) IF (.NOT.YES(25.’N’)) GOTO 2 ENDIF C C--- INCREASE LIB. SIZE AND ADD FILE TO END C--- IF FILE IS NOT LISTED IN THE LIBRARY C IF (.NOT.INLIB) THEN NURUFLINURUFL+1 NFILEINURUFL ENDIF C C-- DETERRINE FILTYP FOR LISTING IN LIBRARY. IF ((RODULE.EQ.’C’).AND.(PRBFIL)) THEN IF (SGLIFG) THEN FILTYPIUANTYP(2) ELSEIF (.NOT.SGLIFG) THEN FILTYPIUANTYP(1) ENDIF ELSE FILTYPIPRBTYP ENDIF C C-- REURITE THE LIBRARY FILE. C FLNAR(NFILE)INARE TITLE(NFILE)ITITLE1 TYPEINFILE)IFILTYP OPEN(LBLUN.FILEILIBNAR.ERRI990.STATUSI’OLD’. 2 FORRI’UNFORRATTED’) URITE(LBLUN.ERR=990) NURUFL URITE(LBLUN.ERRI990)(FLNAR(I).II1.NURUFL) URITE(LBLUN.ERR=990)(TITLE(I).II1.NURUFL) VRITE(LBLUN.ERRI990)(TYPE(I).II1.NURUFL) ENDFILE(LBLUN) CLOSE(LBLUN.STATUSI’KEEP’) C C-- OPEN NEU FILE AND VRITE PROBLER OR RESULTS C--- CALLS PROPER SUB. ACCORDING TO RODULE IN USE C READINI.FALSE. C IF (PRBFIL) THEN IF (RODULE.EQ.’F’) THEN CALL FPROB(NARE.READIN.ERROR) ELSEIF (RODULE.EQ.’T’) THEN CALL TPROB(NARE.READIN.ERROR) ELSEIF (RODULE.EQ.’C’) THEN CALL CPROB(NARE.READIN.ERROR) ENDIF ELSE IF (RODULE.EQ.’F’) THEN CALL FRSLT(NARE.READIN.ERROR) ELSEIF (RODULE.EQ.’T’) THEN CALL TRSLT(NARE.READIN.ERROR) ELSEIF (RODULE.EQ.’C’) THEN CALL CRSLT(NARE.READIN.ERROR) ENDIF ENDIF C IF (ERROR) GOTO 2 C C--- STORAGE CORPLETED C URITE(1.3200) 3200 C 990 991 C 999 995 (I (If)?! FORRAT(I’ IN! FILE STORED IN LIBRARY lflfi’) ONTO 999 URITE(1.991) FORRAT(II’ ii! ERROR N!!’./. 2 ’ THE LIBRARY OF FILES IS UNREADABLEI’) URITE(1.995) FORRAT(II.’ HIT (RETURN) TO CONTINUE. ’.O) READ(1.’(A3)’) ANSHER RETURN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNN LODFIL NNNNNNNNNNNNNNNNNNNNINNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNINNNNNNNNNNNNNNNNNNNNNN CICICICIC) C) c--- c--- 1010 c--- 10 1020 1025 LOADS A PROBLER OR RESULTS FROR A USER-NARED FILE. CREATED BY J. GREGORSKI JANUARY.1985 SUBROUTINE LODFIL INCLUDE ’SYSKIT)CORRON.DIR)FILRBK.TEXT’ LOGICAL LXST.FXST1.READIN.EXIT.ERROR LBLUNI8 RAKE SURE DIRECTORY FILE EXISTS CREATE IT IF IT DOESN’T AND EXIT. INQUIRE(FILEBLIBNAR.EXISTIFXSTI) IF(.NOT.FXST1) THEN CALL CHKLIB URITE(1.1010) FORRAT(I’ NO FILES IN LIBRARY. HENCE NO LOAD.’) ONTO 999 ENDIF SEE IF USER REQUEST IS IN DIRECTORY URITE(1.1020) FORRAT(I’ lfil ENTER NARE OF FILE TO BE LOADED NI} ’) CALL FNARE(NARE.EXIT) IF (EXIT) THEN URITE(1.1025) FORRAT(I’ LOADER EXITED. NO PROBLER LOADED. ’) RETURN ENDIF OPENILBLUN.FILE=LIBNAR.ERR=990.STATUS=’OLD’. 2 FORRI’UNFORRATTED’) READ(LBLUN.END=990.ERRI990) NURUFL IF(NURUFL.GT.O) THEN READ(LBLUN.ENDI990.ERRI990)(FLNAR(I).II1.NURUFL) READ(LBLUN.ENDI990.ERRI990)(TITLE(I).II1.NURUFL) READ(LBLUN.EN08990.ERR8990)(TYPE(I).II1.NURUFL) CLOSE(LBLUN.STATUSI’KEEP’) LXSTI.FALSE. DO 100 II1.NURUFL IF(NARE.EQ.FLNAR(I)) LXSTI.TRUE. 100 CONTINUE ELSE CLOSE(LBLUN.STATUSI’KEEP’) LXSTI.FALSE. ENDIF C C-- IF USER FILE EXISTS LOAD IT IN C IF(LXST) THEN INQUIRE(FILEINARE.EXISTILXST) IF (.NOT.LXST) THEN URITE(1.1030) 1030 FORRAT(I’ THIS FILE DOES NOT EXIST.’) GOTO 10 ENDIF READIN=.TRUE. IF (PRBFIL) THEN IF (RODULE.EQ.’F’) THEN CALL FPROB(NARE.READIN.ERROR) ELSEIF (RODULE.EQ.’T’) THEN CALL TPROB(NARE.READIN.ERROR) ELSEIF (RODULE.EQ.’C’) THEN CALL CPROB(NARE.READIN.ERROR) ENDIF ELSE IF (RODULE.EQ.’F’) THEN CALL FRSLT(NARE.READIN.ERROR) ELSEIF (RODULE.EQ.’T’) THEN CALL TRSLT(NARE.READIN.ERROR) ELSEIF (RODULE.EQ.’C’) THEN CALL CRSLT(NARE.READIN.ERROR) ENDIF ENDIF C IF (ERROR) GOTO 10 C URITE(1.1040) 1040 FORRAT(I’ iii USER FILE HAS BEEN LOADED NNN’) ELSE URITE(1.1060) 1060 FORRAT(I’ THIS FILE NARE NOT IN DIRECTORY.’) ONTO 10 ENDIF ONTO 999 C 990 URITE(1.991) 991 FORRAT(II’ til ERROR I!!’./. 2 ’ THE LIBRARY OF FILES IS UNREADABLEI’) C 999 URITE(1.995) 995 FORRAT(II.’ HIT TO CONTINUE. ’.I) READ(I. ' (A3) ’) ANSHER RETURN END C C CNNNNNNNNNNNIINNNNNNNNNNINININN!NNNNNNNNNNNNNNNNNNNNNNNINNNINNN!Nil CNNNNNNNNNNNNINNNNNNNNNNNNNNINNNNNNNNNNNNNNNINNNNNNNNNNINNINNIINNIN C C Appendix E CORRON BLOCKS LISTINGS C C C!!! CTRLBK : CORRON BLOCK TO CONTROL RAIN PROGRAR FLOU ilfiiliifii CNN! ALSO CONTAINS PARARETER DEFINITIONS illiliiir CNNNNNNNNNNNININNNNNNINNNNNINNNNNINNNNNNINNNNNIINNNNNNNIIINNIIINNN C C-- VARIABLES 0000000000000 SYSFLG PROCEED FROR INSTRUCTIONS? YESI.FALSE..NOI.TRUE. RODFLG PROCEED IN RAIN (.FALSE.).GOTO RENU (.TRUE.) FRQYES FREQUENCY RESPONSE (.TRUE.).ROOT LOCUS (.FALSE.) IBLK CONTROL FLOU IN RAIN.LOOK FOR END OF PROGRESSION SGLIFG HIGH ORDER DIFF. EQU.(.TRUE.).VIBS. FORR(.FALSE.) FBKFLG FEEDBACK EFFECTS IN A.B PROB. IF (.TRUE.) RAXDEG RAXIRUR DEGREE OF POLYNORIALS (BOTH NUR. & DEN.) RAXCOF RAXIRUR NURBER OF POLYNORIAL COEFFICIENTS RAXFRP RAXIRUR NURBER OF FREQ. RESP. RESULT POINTS RAXRLP RAXIRUR NURBER OF ROOT LOCUS RESULT POINTS RAXDIR RAXIRUR DIRENSION OF STATE SPACE PROBLER PARARETER (RAXDEGI10.RAXCOFIRAXDEG+1.RAXFRPI500. RAXRLPI100.RAXDIRI10) C INTEGER IBLK LOGICAL SYSFLG.RODFLG.FRQYES.SGLIFG.FBKFLG C CORRON/CTRLBK/SYSFLG.RODFLG.FRQYES.SGLIFG.FBKFLG.IBLK C CHIN END OF CTRLBK INNNNNNINNNNINNNNNNNINNNNNNIINNNNNINNINN!INN!!! C C C C C!!! LABLBK 8 CORRON BLOCK FOR PROBLER & RESULTS TITLES iflilliifit C!NNI!NNNNNNNNNNNNIINNNNNNNNNNNNNINNINNNINNNNNINNINNNNNNNNNINNINN! C C--- VARIABLES C C TITLE1 TITLE FOR PROBLER STATERENT C TITLE2 TITLE FOR RESULTS C CHARACTER§40 TITLE1.TITLE2 C CORRON/LABLBK/TITLEl.TITLE2 C C!!! END OF LABLBK NNNNNNNNNINNNNINNNNNINNNNNNNNNNNNNNNNNNNIINNINN C C C C C!!! POLYBK : CORRON BLOCK FOR DESCRIPTION OF POLYNORIAL uraurnrn craaareeeeoaInsneeoeuesuuraiunureoeorurauleauuluurueoiouul55:55.55 C C-- VARIABLES C C INDEG DEGREE OF NURERATOR POLYNORIAL C IDDEG DEGREE OF DENORINATOR POLYNORIAL C COEFFN COEFFICIENTS OF NURERATOR POLYNORIAL C COEFFD COEFFICIENTS OF DENORINATOR POLYNORIAL C GAIN GAIN OF POLYNORIAL C C--- CTRLBK RUST PRECEED THIS BLOCK FOR PARARETER ASSIGNRENTS C REAL COEFFN(RAXCOF).COEFFO(RAXCOF).GAIN INTEGER INDEG.IDDEG C CORRON/POLYBK/COEFFN.COEFFD.INDEG.IDDEG.GAIN C Curr END OF POLYDK NNNNNNNNNNINNNNNNNNNNNNNNNNNINNNINNINNNNNNNINN! C C C C Clan RANGBK : CORRON BLOCK FOR OUTPUT RANGE AND SCALING NNINNNNNN CINNNNNNINNNNNNNNNINNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNINNNNINNINN C C--- VARIABLES C C SCRIN RINIRUR VALUE OF FREQUENCY OR GAIN SCALE C SCRAX RAXIRUR VALUE OF FREQUENCY OR GAIN SCALE C BLO RINIRUR ACCEPTABLE VALUE FOR REAL NURBER INPUT C BHI RAXIRUR ACCEPTABLE VALUE FOR REAL NURBER INPUT C NPTS NURBER OF SOLUTION POINTS FOR CALCULATIONS C SCLOG SCALING OF FREQUENCIES OR GAINS (LOG IF I.TRUE.) C REAL SCRIN.SCRAX.BLO.BHI INTEGER NPTS LOGICAL SCLOG C CORRON/RANGBK/SCRIN.SCRAX.NPTS.SCLOG.BLO.BHI C car! END OF RANGBK our!!!use!alreaesenrasrarsaesoaaaenrollaaesair! C C C C CNN! RESULT : CORRON BLOCK FOR FREQUENCY RESPONSE RESULTS ulurara CNNNNNNIININNNINNNNNNNINNNNNNONNNNNNINNNNNNNNNNNNNNINNNNNNNNNNNNNN C C--- VARIABLES C C V FREQUENCIES OF RESULTS POINTS C TRFRAG RAGNITUDES OF RESPONSE C PHID PHASE SHIFTS OF RESPONSE IN DEGREES C PHI PHASE SHIFTS OF RESPONSE IN RADIANS C UGC CROSSOVER FREQUENCY (V FOR RAG.I1) C PR PHASE RARGIN (180+PHASE SHIFT AT UGC) C UPHC FREQUENCY AT -180 PHASE SHIFT C GR GAIN RARGIN (INVERSE OF RAG. AT NPHC) C C--- CTRLBK RUST PRECEED THIS BLOCK FOR PARARETER ASSIGNRENTS c . REAL V(RAXFRP).TRFRAG(RAXFRP).PHID(RAXFRP).PHI(RAXFRP). + UGC.PR.UPHC.GR C CORRON/RSSULT/N.TRFRAG.PHID.PHI.UGC.PR.NPHC.GR C CNNN END OF 8“"..1' NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNN C C C C Crur ROOTBK : CORRON BLOCK FOR ROOTS (& POLES) OF PROBLER usuanuu CUNNINNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNN C C-- VARIABLES SYGAIN SYSTER GAIN C C RNR REAL PARTS OF NURERATOR ROOTS C RNI IRAGINARY PARTS OF NURERATOR ROOTS C RDR REAL PARTS OF DENORINATOR ROOTS (POLES) C RDI IRAGINARY PARTS OF DENORINATOR ROOTS (POLES) C C C-- CTRLBK RUST PRECEED THIS BLOCK FOR PARARETER ASSIGNRENTS C REAL RNR(RAXDEG).RNI(RAXDEG).RDR(RAXDEG).RDI(RAXDEG).SYGAIN C CORRON/ROOTBK/RNR.RNI.RDR.RDI.SYGAIN gee: END OF ROOTBK INNNNNNINNNNNNINNNNNNNNNNNNINNINR!NNNNNNNNNNNNN S C C C!!! FACTBK : CORRON BLOCK FOR FACTORED INPUT FORRAT fliililllflifli CNNINNNNNNNNNNNNNNNNNNNININNNNNNNINNNNNNINNNNNNNNNNNEIINNNNNNNNNNN C C-- VARIABLES C C NFCTFG .TRUE. IF N(S) HAS VALID FACTORED DATA C DFCTFG .TRUE. IF D(S) HAS VALID FACTORED DATA C NFNUR NURBER OF FACTORS IN THE NURERATOR C NFDEN NURBER OF FACTORS IN THE DENORINATOR C LNDEG LIST OF DEGREES OF NURERATOR FACTORS C LDDEG LIST OF DEGREES OF DENORINATOR FACTORS C CFNF ARRAY OF COEFFICIENTS OF NURERATOR FACTORS C CFDF ARRAY OF COEFFICIENTS OF DENORINATOR FACTORS C C-- CTRLBK RUST PRECEED THIS BLOCK FOR PARARETER ASSIGNRENTS C LOGICAL NFCTFG.DFCTFG REAL CFNF(RAXDEG+1.RAXDEG).CFDF(RAXDEG+1.RAXDEG) INTEGER NFNUR.NFDEN.LNDEG(RAXDEG).LDDEG(RAXDEG) C CORRON/FACTBK/NFCTFG.DFCTFG.NFNUR.NFDEN. + LNDEG.LDDEG.CFNF.CFDF C CNN! END OF FACTBK NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNN C C C C Cir! RSLTBK : CORRON BLOCK FOR ROOT LOCUS RESULTS liflililflilllifli CIINNINNNNIIINNNNNNNNNNNIINNNNNNNINNNNNNNNNINNNNNINNNNNINNNNNINNNN C C-- VARIABLES C C RR REAL PARTS OF ROOT LOCI C RI IRAGINARY PARTS OF ROOT LOCI C KGAIN GAINS FOR ROOT LOCI C ANGLE ANGLES OF LOCI ASYRPTOTES C SIGRA ORIGIN OF LOCI ASYRPTOTES C IPOLEX POLE EXCESS (NPOLES-NZEROS) C C--- CTRLBK RUST PRECEED THIS BLOCK FOR PARARETER ASSIGNRENTS C INTEGER IPOLEX REAL RR(RAXDEG.RAXRLP).RI(RAXDEG.RAXRLP).KGAIN(RAXRLP). + ANGLE(RAXDEG).SIGRA C CORRON/RSLTBK/RR.RI.KGAIN.ANGLE.SIGRA.IPOLEX C CRIN END OF BSLTBK NNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNN C C C!!! FOUTBK 8 CORRON BLOCK FOR FREQUENCY RESPONSE OUTPUT NNNINNN! cu..ananssansuua.uunranua...:...:nIt...aarauunuouanaauusuuauusauna C C--- VARIABLES NPTOUT NURBER OF OUTPUT (DISPLAY) POINTS VOUT FREQUENCIES FOR OUTPUT (DISPLAY) RANGE RAONUT RAGNITUDES OF RESPONSE PHDOUT PHASE SHIFTS OF RESPONSE IN DEGREES PHOUT PHASE SHIFTS OF RESPONSE IN RADIANS ULOG SCALING FOR FREQUENCY (LOG SCALE IF I.TRUE.) --- CTRLBK RUST PRECEED THIS BLOCK FOR PARARETER ASSIGNRENTS 0000000000 INTEGER NPTOUT LOGICAL VLOG REAL VOUTIHAXFRP).HAGOUTIHAXFRP).PHDOUTIHAXFRP).PHOUTIHAXFRF) C COHHON/FOUTBK/NPTOUT.NOUT.HAGOUT.PHDOUT.PHOUT.ULOG C Cure END OF FOUTBK NNNNNNNNNNNNINNNNIIINNNNNNININNNNNNINNIINNNNNNN C C C CNN! ROUTBK I CORRON BLOCK FOR ROOT LOCUS OUTPUT iififlifliiiillliil celsaeooeeeenlraanuseeaanueansalouuoernnnnsnreauuuusnuialuaeilnlnr C C-- VARIABLES C C RROUT REAL PARTS OF ROOT LOCI FOR OUTPUT (DISPLAY) C RIOUT INAG. PARTS OF ROOT LOCI FOR OUTPUT (DISPLAY) C KOUT GAINS OF ROOT LOCI FOR OUTPUT (DISPLAY) C AOUT ASSYNPTOTE ANGLES OF LOCI C SOUT ORIGIN OF LOCI ASSYRPTOTES C ROOT NURBER OF OUTPUT ID I SPLAY) PO I NTS C IOUT POLE EXCESS (NPOLES‘NZEROS) C ZRAX GREATEST POINT ON PLOT (FOR PLOTTING ASSYRPTOTES) C KLOG LOCI SCALING (LOG SCALE IF '.TRUE.) C C"- CTRLRN RUST PRECEED THIS BLOCK FOR PARARETER ASSIGNRENTS C INTEGER IOUToNOUT LOGICAL KLOG REAL RROUT(RAXDEGoflAXRLP).RIOUTIRAXDEGvflAXRLP).KOUT(NAXRLP). + AOUTIRAXDEG).SOUT.ZRAX C CONRON/ROUTRK/RROUT.RIOUT.NOUT.AOUT.SOUT. T "OUTOIOUT’znAXO‘LOG C CNN! END OF ROUTBK NNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNINNN C C C C CIII VIBRBK 8 CORRON BLOCK FOR VIBRATION FORR OF O.D.E. Illillfiil CINNNNNNNNNNNNNNINNNNNNNNNIINNNNNNNINNNNINNNNNNNNINNNINNNNNNNNNNNN C C--- THE RATRICES ARE DIRENSIONED 6X8 SO THAT OUTRAT CAN BE USED. C--- THEIR ACTUAL DIRENSIONS ARE 3X3. (RESSAGE KEPT FROR ORIGINAL) C C--- VARIABLES C C RATR RASS RATRIX C RATC DARPING RATRIX C RATK STIFFNESS RATRIX C NATL INPUT RATRIX C INVR INVERSE OF THE R RATRIX C DIRR DIRENSION OF R.C.K RATRICES C COLL NURBER OF COLURNS OF THE L RATRIX C C--- CTRLBK RUST PRECEED THIS BLOCK FOR PARARETER ASSIGNRENTS C INTEORR DIRR.COLL REAL RATR(RAXDIR.RAXDIR).RATCIRAXDIR.RAXDIR). + RATK(RAXDIR.RAXDIR).RATLIRAXDIR.RAXDIR). + INVR(RAXDIR.RAXDIR) C CORRON/VIBRBK/RATR.RATC.RATK.RATL.DIRR.COLL.INVR C C!!! END OF VIDRDK !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! C C C C C!!!!!!I!!! SGLIBK : CORRON BLOCK FOR HIGHER ORDER D.E. !!!!!!!!! c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! C C--- VARIABLES COEF COEFFICIENTS OF HIGHER ORDER D.E. INPT COEFFICIENTS FOR INPUT D.E. ORDER ORDER OF DIFFERENTIAL EQUATION INNRB ORDER OF INPUT DERIVATIVES --- CTRLBK RUST PRECEED THIS BLOCK FOR PARARETER ASSIGNRENTS (TCTCICMOIRCTCI REAL COEF(HAXDIR+I).INPT(RAXDIR) INTE. ORDER. INNRB C CORRON/SGLIBK/COEF.INPT.ORDER.INNRB C C!!! END OF SGLIBN !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! C C C C C!!! PARRBK 8 CORRON BLOCK FOR STATE-SPACE FORRULATION I!!!I!!!!! C!!! ALSO CONTAINS REAL NURBER INPUT LIRITS 'fiiiflilili CNNNNNNNNNNNNNNNNNNINNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNN C C--- VARIABLES C C A THE A RATRIX FOR STATE-SPACE FORRULATION c B 9’ B 9’ VI ’0 C C .. C o. o. I: C D o. D o. o. 9: C IC VECTOR NEEDED TO VRITE A.B PROBLER C UDEF ARRAY FOR INPUTS FOR A.B PROBLER C BLO RINIRUR ACCEPTABLE VALUE FOR REAL NURBER INPUT C BHI RAXIRUR ” ” ” C DIRX NURBER OF STATES (DIRENSION OF A) C DIRU NURBER OF INPUTS (COLURN DIR. OF B AND D) C DIRY NURBER OF OUTPUTS (RON DIR. OF C AND D) C ITYPE VECTOR NEEDED TO VRITE A.B PROBLER C KFB VECTOR NEEDED TO URITE A.B PROBLER C KGAIN GAIN OF THE SYSTER C C--- CTRLBK RUST PRECEED THIS BLOCK FOR PARARETER ASSIGNRENTS C INTEGER DIRX.DIRU.DIRY.ITYPE(RAXDIR) REAL A(RAXDIR.RAXDIR).B(RAXDIR.RAXDIR).C(RAXDIR.RAXDIR). + D(RAXDIR.RAXDIR).IC(RAXDIR).UDEF(RAXDIR.10). + BLO.BHI.KFB(RAXDIR).KGAIN C CORRON/PARRBK/DIRX.DIRU.DIRY.A.B.C.D.IC.UDEF. + ITYPE.BLO.BHI.KFB.KGAIN C CNN! END OF PARKE“ NNNNNNNNNNNNNNNNNNNINNNNNNINNNNNNNNNNNNNNNNNNNN C C C C C!!! EIGNBK : CORRON BLOCK FOR STORAGE OF EIGENVALUES !!!!!!!!!!! c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! C C--- VARIABLES C C EVALR REAL PARTS OF EIGENVALUES C EVALI IRAG. PARTS OF EIGENVALUES C C--- CTRLBK RUST PRECEED THIS BLOCK FOR PARARETER ASSIGNRENTS C REAL EVALR(RAXDEG).EVALI(RAXDEG) C CORRON/EIGNBK/EVALR.EVALI 2!!! END OF EIGNBK !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! C C C C!!! INTOBK : CORRON BLOCK FOR INTEGRATION PARARETERS I!!!!!!!! C!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! C C-- VARIABLES C C TINIT INITIAL VALUE OF INTEGRATION RANGE C TFINAL FINAL ” ” C TINTEG AN INTEGRATION PARARETER c 131033 9. .o o. C NSTEP .. o: v. c "STD“ ’9 V, ’9 C . REAL TINIT.TFINAL.TINTEG.TSTORE INTEGER NSTEP.NSTOR C CORRON!INTGBK/TINIT.TFINAL.TINTEG.TSTORE.NSTEP.NSTOR C CNNN END OF INTGBK NNNNNNNNNNNINNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN C C C C C!!! TERRBK : CORRON BLOCK FOR USER TERRINAL PARARETERS ill!!!!!! C!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! C C-- VARIABLES C C NTERR NURBER OF THE TERRINAL C NTYPE TYPE OF TERRINAL C NRATE BAUD RATE OF THE TERRINAL C NERROR ERROR FLAG FROR CALL TERROO C PLOTIT .TRUE. IF TERRINAL IS CORPATIBLE UITH GRAPHICS C LOGICAL PLOTIT INTEGER NTERR.NTYPE.NRATE.NERROR C CORRON/TERRBK/NTERR.NTYPE.NRATE.NERROR.PLOTIT C C!!! END OF TERRBK !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! C C COHHON BLOCKS FOR FILE HGT.(UNIFIL) I!!!!!!!!!!!!!! CNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNN C C C!!! FILRBK C C--- VARIABLES C C LIBNAR C NURUFL C RAXNUF C FLNAR C NARE C TYPE C TITLE C UANTYP C PRBTYP C PRBFIL C HEADER C RODULE C C C C NARE OF USER FILE DIRECTORY BEING USED NURBER OF USER FILES RAXIRUR NURBER OF USER FILES NARES OF USER FILES IN DIRECTORY CURRENT FILE NARE TYPES OF DATA FILES TITLES FOR DATA FILES TYPES OF FILES USABLE BY RODULE (2) FILE TYPE FOR SAVING PROBLER FILES (.TRUE.).RESULTS FILES (.FALSE.) HEADERS FOR LIBRARY LIST OF LOAOABLE FILES RODULE CURRENTLY IN USE: SET IN SETUP! PARARETER (RAXNUF=40) CHARACTER'I RODULE CHARACTER'II LIBNAR CHARACTER515 FLNARIRAXNUF).NARE CHARACTER540 TITLE(RAXNUF) INTEGER TYPEIRAXNUF).UANTYP(2).PRBTYP.NURUFL.HEADER(2) LOGICAL PRBFIL CORRON/FILRBKI/FLNAR.TITLE.NARE.LIBNAR.RODULE CORRON/FILRBK2/NURUFL.TYPE.VANTYP.PRBTYP.PRBFIL.HEADER CNNN END OF FILRBK NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN C C LIBR MICIIHHIITWINHHSIWITUTUWWII”| HITITIES 3 12 91 1316 I 7 991