Li... .L :15: .. . v 721.... a. s . $3.!!! 3 .31.. .L. i; on .1213: .C. u? .3»...- Sn. .. .a-f: in .17! $. 5 a . n. - .5 .. n.2,... {w;.?..&.....lt. .‘ p. .I o :9! . s. . Ila...“ 3.. '9 .Il. 0|.» Q... 1.5!: I n... 3.3..... II . . u :2! 1. l -.U.........WA .1... c 5. 2.21... y. , . . . MICHIGAN STATE NERSITY LIBRARI m Ill will lllllllllIll/llllllllllllll Z 3 93 01399 6776 This is to certify that the thesis entitled DEVELOPMENT OF A COMPUTER AIDED CUSHION DESIGN SOFTWARE presented by Ruogong Liu has been accepted towards fulfillment of the requirements for Master degree in Packaging 1 ; Julian Lee Major professor Date CZ? g- fj’ MS U is an Affirmative Action/Equal Opportunity Institution LIBRARY Michigan State University PLACE N RETURN BOXto romavothb chockomtrom your record. TO AVOID FINES mum on or More data duo. DATE DUE DATE DUE DATE DUE DEVELOPMENT . OF A COMPUTER AIDED CUSHION DESIGN SOFTWARE By Ruogong Liu A THESIS Submitted to Michigan State University in partial fulfillment of the requirement for the degree of MASTER OF SCIENCE School of Packaging 1 995 ABSTRACT DEVELOPMENT OF A COMPUTER AIDED CUSHION DESIGN SOFTWARE By Ruogong Liu Exponential and polynomial models were found to describe the relationship of dynamic stress with energy density in cushion materials. These models were used for regression analysis of eight cushion materials. A computer program was written according to the two models. The program was coded in Qbasic and named as CUDE. The regression results were stored in a special file called CUDEDAT as cushion data. CUDE contains three basic functions, Computer Design, User Design and Generate Cushion Data. Computer Design gives the cushion thickness and bearing area for the eight cushion materials in One Face Design and Six Face Design. One or All of the design variables, such as cushion thickness, bearing area and cushion material, can be chosen in the User Design. Generate Cushion Data will help packaging engineers to develop new cushion curves. In testing, CUDE provides the same results as the design using cushion curves. Dedicated to my beloved Danping, Shen and my dearest parents. to. a'TC W r . ACKNOWLEDGMENTS The author wishes to express his deepest appreciation to Dr. Julian Lee at the School of Packaging, Michigan State University, for his guidance and encouragement in preparation of this thesis. Thanks are also extended to the members Of his Master’s Guidance Committee: Dr. Gary Burgess at School of Packaging, Michigan State University and Dr. Richard Brandenburg, Associate Dean of Agriculture College, Michigan State University. He also thanks Mr. Chuck Ailsworth for his help in testing the software and writing the thesis. LlST CF LIST CF LlST O CRAP TABLE OF CONTENTS LIST OF TABLES LIST OF FIGURES LIST OF SYMBOLS CHAPTER I INTRODUCTION 1.1 Cushioning 1.2 Cushion Design CHAPTER II DYNAMIC STRESS, ENERGY DENSITY AND COMPUTER MODELING 2.1 Dynamic Stress and Energy Density 2.2 Mathematical Models for Computer Programming 2.3 Consolidation of Cushion Curves Page vii viii xi 10 10 12 15 LETOF CHAPTE C A.) .3 (,AJ CHAPT LIST OF CONTENTS (continued) CHAPTER III COMPUTER PROGRAMMING 33 3.1 Structure of Program 33 3.2 Data File 37 3.3 Interface 39 3.4 Input and Output 41 CHAPTER IV RESULTS AND ANALYSIS 44 4.1 User Design Material 44 4.2 User Design Thickness 46 4.3 User Design Cushioning Area 48 4.4 User Design All Cushion Variables 50 4.5 Computer One Face Design 51 4.6 Computer Six Face Design 53 CHAPTER V CONCLUSIONS 60 APPENDIX QBASIC SOURCE CODE FOR CUSHION DESIGN PROGRAM 62 LIST OF REFERENCES 132 vi Table 1-1 Table 1-2 Table 2-1 Table 22 Table 31 LIST OF TABLES Approximate Fragility of Typical Package Articles Typical Drop Heights DYLITE 01958, 1.25 PCF, 2-5 Impacts, Expandable Polystyrene Dynamic Stress (y) and Energy Density (x) Data for Popular Cushion Materials Data File for the Cushion Design Program vii Page 16 19 38 pg 7 n3 F (I. CC mud F I‘ C» r Ad Figure I a. V A: are Fa d CL r Qua Figure 1-1 Figure 2-1 Figure 2-2 Figure 2-3 Figure 2-4 Figure 2-5 Figure 2-6 Figure 2-7 Figure 2-8 Figure 2-9 Figure 2-10 LIST OF FIGURES Cushion Design Procedure Dynamic Stress and Energy Density for DYLITE D1958, 2-5 Impacts Dynamic Stress and Energy Density for DYLITE 01958, lst Impact Dynamic Stress and Energy Density for ARCEL 512, 2-5 Impacts Dynamic Stress and Energy Density for ARCEL 512, 1st Impact Dynamic Stress and Energy Density for ARPRO 3313, 2-5 Impacts Dynamic Stress and Energy Density for ARPRO 3313, Ist Impact Dynamic Stress and Energy Density for ARPRO 3319, 2-5 Impacts Dynamic Stress and Energy Density for ARPRO 3313, 1st Impact Dynamic Stress and Energy Density for ARSAN 600, 2-5 Impacts Dynamic Stress and Energy Density for ARSAN 600, 1st Impact viii Page 20 21 22 23 24 25 26 27 28 29 Flgu .3 Fgg'e 7" (Q c: Y) LIST OF FIGURES (continued) Figure 2-11 Figure 2-12 Figure 2-13 Figure 3-1 Figure 3-2 Figure 3-3 Figure 3-4 Figure 3-5 Figure 3-6 Figure 3-7 Figure 4-1 Figure 4-2 Figure 4-3 Figure 4-4 Figure 4-5 Figure 4-6 Figure 4-7 Dynamic Stress and Energy Density for 0.7 POIyPIank, 2-5 Impacts Dynamic Stress and Energy Density for 1.6 POIyPIank, 2-5 Impacts Dynamic Stress and Energy Density for 2.2 POIyPIank, 2-5 Impacts Main Structure of the Cushion Design Structure of Computer Design Structure of User Design Structure of Generate Cushion Curves Main Menu of Cushion Design Program (CUDE) The Generate Cushion Data Submenu in CUDE A Sample of Data Input for Six Face Design A Sample Output Result of User Design Material from CUDE A Sample Output Result of User Design Thickness from CUDE A Sample Output Result of User Design Area A Sample Output Result of User Design All Cushion Parameters from CUDE A Sample Output Result of Computer One Face Design A Sample Output of Computer Six Face Design for Top Face A Sample Output of Computer Six Face Design for Bottom Face 30 31 32 34 34 35 36 39 4O 42 45 47 49 50 52 54 55 LIST OF FIGURES (continued) Figure 4-8 A Sample Output of Computer Six Face Design for Front Face Figure 4-9 A Sample Output of Computer Six Face Design for Back Face Figure 4-10 A Sample Output of Computer Six Face Design for Left Face , Figure 4-11 A Sample Output of Computer Six Face Design for Right Face 56 57 58 59 abc LIST OF SYMBOLS a, b, c, d: Constants G: Deceleration 5: Static Stress h: Drop Height t: Cushion Thickness y: Dynamic Stress x: Energy Density xi II C"... CHAPTER I INTRODUCTION 1.1 Cushioning Cushion materials are primarily used to protect products against drops and to decrease the damage from shock and vibration in the distribution environments. A cushion material is any deformable material that can absorb the impact energy. The ideal cushion material should: . Absorb all the impact energy in a drop and prevent the product from rebounding. . Keep the G-Ievel to the product as small as possible. . Be thin to keep the overall package size as small as possible to save on the package cost and transportation cost. 0 Be moldable, so that different product shapes can be easily to accommodated. . Be durable, so the cushion material can stand up to repeated impacts and various environmental hazards such as temperature and humidity. . Be manufactured with consistency in cushioning properties. aspc eiher Ifimvrt 0896’; memtv the air hnkec maten; theCE‘ 2 . Be environmental friendly. Cushion materials should be biodegradable or recyclable to decrease the solid waste. There are two different kinds of cushion materials. One is called loose-fill type. The cushion material is a small piece Of solid materials, such as polystyrene “peanuts”, shredded paper and popcorn. Another is called solid type. These materials are the structural foams made by different polymers such as polyethylene, polypropylene, polystyrene and urethane. All the foams are either closed-cell foam or open-cell foam. A closed-cell foam consists of individual bubbles of air or other gas, such as nitrogen and carbon dioxide, depending on the manufacturing process Of the foam, trapped in a thin unbroken membrane of plastic. A closed-cell foam absorbs the impact energy by compress the air or gases trapped in the cell. The open-cell foam consists of a 30 network linked with cells. Air is able to flow between cells and even out of the cushion materials. Open-cell foam absorbs the impact energy by moving the air through the cells and out of the cushion [1, 2, 3, 4]. The performance between the open and closed cell foams is different. Closed-cell foams are stiff, more durable and better suitable to cushion heavy products. Closed-cell foams also make better thermal insulators. Open-cell foams make better acoustic insulators. Cell size is determined by the density of the cushion materials. The density of foam can be adjusted for different cushion purposes. Usually, the more airs trapped in the cell, the bigger the cell size and the less dense Of the cushion material is. Because density is more easily measured than the cell size, manufactures often give the density values along p050"- noiwu'i v I lady noses (( propei hunnc. Easy. eqerg: 1.20, 3 with the cushion performance data. The most useful foams are polyethylene, polypropylene, EPS or expended polystyrene and polyurethane foam. Except for polyurethane foam, all foams can be considered as closed-cell foams. Another widely used cushion material is corrugated paper board. It is fairly energy absorbent, easy to work with, inexpensive, recyclable and biodegradable. However, it is not good for repeated impacts and its cushion properties are affected by environmental hazards, such as temperature and humidity. Not all the properties of the ideal cushion are satisfied in one cushion material. From the packaging engineering stand point, the biggest concern is the energy absorption level or the G-level the product is cushioned to. 1.2 Cushion Design The fragility of the product has to be known before the cushioning material can be selected. Different products have different fragility levels, depending on the product composition. Table 1 shows the approximate fragility of typical packaged articles. Table 1 only provides the approximate or typical values. For a proper design, the fragility of the product can be determined by test (ASTM D3331 and D3332) [5]. When the fragility of the product is known, the drop height that the product would be likely dropped from in distribution environments can be estimated from Table 1-2. TaMe Mcce' Ruggt r k: \ Tab“ Table 1-1 Approximate Fragility of Typical Packaged Articles [6] Extremely Fragile Aircraft altimeters, Winchester hard disc driver ....................... 15 - 25 G’s .................................................................................................................................................... Very Delicate Medical diagnostic apparatus, X-ray equipment ....................... 24 - 40 G’s Delicate Computer display terminal and printer, electric Typewriter, cash register ........................................................... 4O - 60 G’s oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo Moderately Delicate Stereos and television receivers, Floppy disc driver ....................................................................... 60 -85 GS Moderately Rugged Major appliances and furniture ................................................ 85 - 115 G’s Rugged Table saw, sewing machines, machine tools ....................... 115 G’s and up Table 1-2 Typical Drop Heights [6] Weight Range Drop Gross Weight Height in Lbs Type of Handling in Inches 0 ~ 10 1person throwing 42 10 ~ 20 1 person carrying 36 20 ~ 50 1 person carrying 30 50 ~ 100 2 people carrying 24 100 ~ 250 Light equipment handling 18 250 + Heavy equipment handling 12 5 Drop height varies with handing methods. For example, palletized products may typically receive drops from six inches. Notice that as the package becomes larger or heavier, the expected drop height decreases. Smaller packages are likely to experience higher drops in shipments. Investigators [7] recently studied the overnight air delivery system by shipping a 10 lbs package with outside dimensions 10” x 10” x 10”, in which a Drop Height Recorder was packed in order to monitor the various dynamic impacts during the shipment. The study has shown that in the 100 one-way trips, and a total of 1678 drops were recorded. The drop heights were from 0.1 to 77.8 inches. 99.5 % Of all drops recorded in the Federal Express and UPS shipments were below 27.5 inches. But 99.5 % of all drops measured in the UPS shipments occurred below 50inches. The exact drop height that the individual package may experience in the distribution environment may never be known but Table 1-2 can be used for a general reference in cushion design. For extremely fragile or expensive products, the designed drop height may be higher or indicated by the product manufactures. After the fragility level of products and the expected drop height in the distribution environment have been selected, the next step for the cushion design is to determine the material to be used, its thickness and the cushioning area or bearing area. 5' caza -' .‘3 low the e: GESIQ 6 Cushion material manufactures usually Offer the cushioning performance data in cushion curve forms for their product. Users can make cushion curves by following the standard procedures (ASTM D-1595) [5]. Cushion curves are generated by flat dropping block-shaped weights onto plank-shaped cushion samples from different heights and recording the peak deceleration G from an accelerometer attached to the weight. The cushion curves show the relationship of deceleration and static stress in different thickness and drop heights. Cushion designers consult the cushion curves to select the proper cushion material, its thickness and static stress. From the product weight, the bearing area or cushion area can be simply calculated by the following equation: Product Weight Bearing Area = (1 .1) Static Stress There are two different cases for the cushion design. The product needs the entire base support or does not need the entire support. The procedure for designing the cushion in each case is different. For products that do not need support under the entire base: . Find the fragility of the product by doing drop tests. The product may have different fragility for the different impact orientations and even different faces. Use the corresponding fragility for the next step. 7 . Find the expected drop height for the product based on its weight, referred Table 1-2. . Select a cushioning material and use the 2-5 impact cushion curves for the selected drop height. Several cushioning materials may be selected at same time in order to choose the most economical one. . Draw a horizontal line through the set of curves that intersects the G- axis at the fragility level that has been determined. Figure 12 illustrates the procedure for a product with 40 G fragility. 40 0.6 1 .8 Static Stress (psi) Figure 1-2 Cushion Design Procedure . Only those curves that are below this line are useable for the specific product. This will ensure that the G-level obtained in the actual drop test is less than the G-level that damages the product. atea bea' km. the [303 T1 8 0 Select the thinnest cushion possible. In Figure 1-2, the thinnest cushion is 3 inches. . Choose the largest static stress possible because this corresponds to the smallest cushion area or minimum cushion material needed. In Figure 1-2, the static stress range is from 0.6 psi to 1.8 psi. So 1.8 psi should be selected for calculating the cushioning area. For the product that needs support under the entire base, the design procedure is different. For this case, the static stress, does not need to be selected from the cushion curve because the bearing area is equal to the base area of the product. The static stress can be calculated using the base area as bearing area. Then a vertical line that intersects the static stress axis at the known value on the cushion curves can be drawn. Only those curves that below the fragility level at this static stress line are useable. Select the thinnest cushion possible [1, 2, 3]. In order to compare the thickness and bearing area obtained above with different cushion materials, start over the whole procedure for the other materials. To simplify the cushion design procedure for different materials, it is possible to use a computer to aid packaging engineers in the cushion design. Dow Chemical USA has developed a software called EthaCalc to ease and speed the package cushion design process [9]. This software does help -4 A] packagN other I: 9 packaging engineers to design cushion with ETHAFOAM brand foams [10]. For other brands of cushion materials, the computer software is still not available. In this study, a computer software was written according to Dynamic Stress and Energy Density described in references [3, 4] to simplify the cushion design process for different cushion materials. 2.1 D] m CHAPTER II DYNAMIC STRESS, ENERGY DENSITY AND COMPUTER MODELING 2.1 Dynamic Stress and Energy Density When a product drops on a cushion material from a certain height, the cushion material is compressed. The product receives a dynamic force according to Newton’s law. Dynamic Stress can be defined: Dynamic Stress = (Peak G) x (Static Stress) = Gs (2.1) "G” is the maximum deceleration that the dropped object received and “s” is the static stress. They can been read directly from the published cushion curves for the cushioning material. From the Equation (2.1), the dynamic stress applied on the’ cushion material will be equal to the maximum stress acted on the product during the drop. When the cushioning material is compressed to the maximum point, the potential energy is totally absorbed in the cushioning material. The 10 11 energy absorbed in unit volume is called Energy Density and it is defined by the following equation: Energy Density = (Weigh x Drop Height) / ( Cushion Volume) = (Weight x Drop Height) / (Area x Thickness) = (Static Stress) x (Drop Height)/ (Thickness) = sh / t (2.2) All the quantities, Deceleration (G), Static stress (5), Drop Height (h) and Cushion Thickness (t) are listed in the published cushion curves. The two new variables are only related to the material property. Air model [3] has the following relationship for the closed—cell cushion materials. (E/P) Gs = P e (2.3) Where: Gs: Dynamic Stress P: Normal Air Pressure, Constant E: Energy Density The constant P may change with different material because the gases trapped in the cell and the materials are different, but the air model indicates that all published cushion curves may be consolidated to one dynamic stress and energy density curve for one cushioning material. Cum ‘3 : Exccr 12 2-2 Mathematical Models for Computer Programming Two mathematical models were used in the consolidation of the cushion curves to one dynamic stress and energy density curve in programming. One is Exponential Model that is based on the following equation: Gs = a e “3 5m) + c (2.4) Where: G: Deceleration, G’s. 5: Static Stress, psi. h: Drop Height, in. t: Cushion Thickness, in. a, b, c: Constants for a certain material. When three of the four variables are known, the other one can be solved from the equation directly or numerically. For example, when the expected drop height (h), cushion thickness (t) and static stress (5) are known, the protect G level for the cushion material can be solved by rearranging the Equation (2.4) to the following equation: G = [a e‘b Sh") + c] / s (2.5) ”In 'I 39' know SLI'C‘, COL; 13 Equation (2.5) was used in programming to generate the cushion curves for the thickness described in the original cushion curves or for a certain thickness. The later information is not contained in the published cushion curves but that will be very useful to design cushion in molded forms. When the expected drop height (h), the fragility level (G) are known, simulating to the cushion design, the cushion thickness (t) has the following simple relationship with static stress (5): t= bsh / [In(Gs-c) - ln(a)] (2.6) Equation (2.6) was used in programming to solve the minimum thickness and the bearing area for a certain cushioning material. Using the similar approach, the bearing area can be Obtained by solving the equation (2.4) for a known drop height (h), fragility level (G) and cushion thickness (t). A special subprogram was written for solving the bearing area because the static stress (5) could not be solved directly. The relationship of dynamic stress with energy density described in the Equation (2.4) may not be suitable for some cushion materials. Another mathematical model used in programming is a 3rd order Polynomial Model. Gs = a(sh/t)3 + b(sh/t)2 + C(sh/t) + d (2.7) Where: G: Deceleration, G’s. ‘m _ tne E ifOrr “1c CC 8r 14 5: Static Stress, psi. h: Drop Height, in. t: Cushion Thickness, in. a, b, c, d: Constants for a certain material. Using similar methods as with the Exponential Model, we can rearrange the Equation (2.7) to obtain the following equation: G = [a(sh/t)3 )2 + b(sh/t + c(sh/t) + d ] / s (2.8) Any thickness cushion curves for a particular material could be generated from the Equation (2.8). Other subprograms were written to solve static stress (5) and thickness (t) numerically [15, 16,17]. The two models, Equation (2.4) and Equation (2.7), could be used to simulate dynamic performances of cushion materials. They were used in the cushion design computer program. Special codes were needed to control the computing flow between the two models, The parameter (d) was only in the Polynomial Model or d was considered to be equal to zero in the Exponential Model. Whether or not the parameter (d) was equal to zero was tested and used as a switch for the two models. The constant a, b, c or d for both models were generated from statistic analysis. The correlation coefficient, R2 , should be greater than 0.99 to ensure 15 the generated G in plus or minus 5 G’s compared with the original G values in the published cushion curves. 2.3 Consolidation of Cushion Curves The procedure for extraction Of the Dynamic Stress vs. Energy Density curve from the published standard cushion curves was described in reference [4]. The first step is to consult the cushion curves. One single curve in particular drop height and thickness is sufficient but for the best results, more curves are preferable. Most published cushion curves cover drop heights from 12 inches to 48 inches in increments of step 6 inches. They also contain thickness from 1 inch to 6 inches and static stress from 0.2 psi to 3.0 psi. The next step is to randomly select points on the curves and tabulate the values for drop heights (h), cushion thickness (t), static stress (3) and peak deceleration (G). Then dynamic stress (Gs) and energy density (sh/t) can be calculated form them. Table 2-1 is one example for EPS foam from ARCO Chemical Company. 16 Table 2-1 DYLITE D195B, 1.25 PCF, 2-5 Impacts, Expandable Polystyrene Drop Height Thickness Stress G sh/t Gs in in psi (x) (y) 12 1.0 1.00 56.0 12.00 56.00 12 1.5 1.00 40.0 8.00 40.00 12 1.0 1.45 60.0 17.40 87.00 12 3.0 2.00 20.0 8.00 40.00 12 1.5 2.20 40.0 17.60 88.00 12 5.0 1.50 18.0 3.60 27.00 18 1.0 0.50 86.0 9.00 43.00 18 1.5 0.70 60.0 8.40 42.00 18 2.0 1.25 42.0 11.25 52.50 18 2.5 0.25 100.0 1.80 25.00 18 2.0 2.00 48.0 18.00 96.00 18 4.0 2.50 20.0 11.25 50.00 18 5.0 1.70 20.0 6.12 34.00 18 2.5 2.90 40.0 20.88 ~ 116.00 24 1.5 0.30 100.0 4.80 30.00 24 1.5 1.10 80.0 17.60 88.00 24 2.0 0.70 60.0 8.40 42.00 24 2.0 1.40 60.0 16.80 84.00 24 2.5 0.50 60.0 4.80 30.00 24 2.5 2.00 52.0 19.20 104.00 24 5.0 2.50 22.0 12.00 55.00 24 3.0 2.50 45.0 20.00 112.50 30 1.5 1.00 110.0 20.00 110.00 30 1.5 0.40 100.0 8.00 40.00 30 2.0 1.30 80.0 19.50 104.00 30 2.0 0.75 70.0 11.25 52.50 30 2.5 1.00 56.0 12.00 56.00 17 Table 2-1 (continued) Drop Height Thickness Stress G sh/t Gs in in psi (x) (y) 30 3.0 2.30 60.0 23.00 138.00 30 5.0 3.00 30.0 18.00 90.00 30 4.0 3.00 45.0 22.50 135.00 36 2.0 1.20 100.0 21.60 120.00 36 2.0 1.00 90.0 18.00 90.00 36 2.5 1.50 82.0 21.60 123.00 36 , 4.0 1.30 41.0 11.70 53.30 36 4.0 2.50 55.0 22.50 137.50 36 5.0 3.00 41.0 21 .60 123.00 36 5.0 0.80 40.0 5.76 32.00 36 2.5 0.50 75.0 7.20 37.50 42 2.0 1.00 118.0 21.00 118.00 42 2.0 0.60 100.0 12.60 60.00 42 2.0 0.40 100.0 8.40 40.00 42 2.5 1.00 85.0 16.80 85.00 42 2.5 0.60 80.0 10.08 48.00 42 3.0 0.50 75.0 7.00 37.50 42 3.0 0.75 65.0 10.50 48.75 42 3.0 1.60 80.0 22.40 128.00 42 5.0 1.80 40.0 15.12 72.00 48 2.5 0.40 100.0 7.68 40.00 48 2.5 1.20 118.0 23.04 141.60 48 2.5 1.00 100.0 19.20 100.00 48 3.0 0.50 80.0 8.00 40.00 48 3.0 0.70 75.0 11.20 52.50 48 3.0 1.10 80.0 17.60 88.00 48 4.0 0.70 60.0 8.40 42.00 48 4.0 1.50 62.0 18.00 93.00 48 5.0 2.40 60.0 23.04 144.00 48 5.0 1.25 45.0 12.00 56.25 18 In Table 2.1, there are two columns for the dynamic stress (Gs) and energy density (sh/t). They were calculated by using of the Equation (2.1) and Equation (2.2). Once the table is completed, plot the dynamic stress vs. the energy density to see the trend of the curve and to fit the data to the Exponential Model or Polynomial Model. A spread sheet software with statistic function or statistic software can be used to perform these calculations and regression analysis. Figure 2-1 is the regression result for the EPS cushion. From Figure 2- 1, the regression equation is: 0.0835 x y = 20.486 e (2.9) and R2: 0.9985 Where: y: Dynamic Stress or Gs, psi x: Energy Density or sh/t, in-lb./cu.in At this point, the consolidation of the cushion curves to one dynamic stress and energy density curve is complete. Eight cushion materials [9, 11, 12, 13] were consolidated using the same methodology. The dynamic stress and energy density curves are listed on Figure 2-2 to Figure 2-13. The regression results are listed in Table 2-2. The parameters of the regression equations in Table 2-2 were used as the cushion data for the cushion design program. 19 Table 2-2 Dynamic Stress (y) and Energy Density (x) Data for Popular Cushion Materials Materials Impact(s) Regression Equation 32 0.7 Poll/Plank 2 ~ 5 y = -0.0023x3 + 0.2142):2 + 0.9868x + 7.2455 0.9802 1.6 Poll/Plank 2 ~ 5 y = 0.0013x3 + 0.0645x2 + 2.1993x + 6.2958 09964 2.2 Poll/Plank 2 ~ 5 y = 0.0032x3 + 0.0108x2 + 2.6049x + 5.6353 0.9912 ARSAN 600 181 y = 17.19 9(0'0596") 0.9921 ARSAN 600 2 ~ 5 y = 1633 90089”) 0.9969 ARPRO 3313 1st y = 1270 900805") 0.9973 ARPRO 3313 2 ~ 5 y = (2.33 900947") 0.9980 ARPRO 3319 Ist y = 22449 gloom") 0.9974 ARPRO 3319 2 ~ 5 y = 2157900577") 0.9984 ARCEL 512 Ist y = 13.7geio-0543x’ 0.9991 ARCEL 512 2 ~ 5 y = 13543900786") 0.9984 DYLITE D1958 1st y = 20555600474") 0.9986 DYLITE 01958 2 ~ 5 y = 2043690083“) 0.9985 Dynamic Stress (psi) 20 160.00 140.00 4- y : 20486800834" R2 = 0.9985 120.00 ~~ 100.00 2» 80.00 «~ 60.00 «~ 40.00 «) 20.00 ~» 0.00 . . : E 1 . : - 0.00 5.00 10.00 15.00 20.00 25.00 Energy Density (In-Ib/cu. in) Figure 2-1 Dynamic Stress and Energy Density for DYLITE D1958, 2-5 Impacts Dynamic Stress (psi) 21 250.00 - 0.0474x 200.00 .- Y 30.6559 R = 0.9986 150.00 .- 100.00 «- 50.00 -_ 0.00 , § ; . 0.00 10.00 20.00 30.00 40.00 5000 Energy Density (in-lb/cu.in) Figure 2-2 Dynamic Stress and Energy Density for DYLITE D195B, 1st Impact 22 160.00 140.00 1 I y = 18643900786" 2 _. 120.00 4» R - 0-993 100.00 ~ T 80.00 ( I T 60.00 - Dynamic Stress (psi) 40.00 1 T 20.00 « T 0.00 4 1 i l. i 0.00 5.00 10.00 15.00 20.00 25.00 30.00 Energy Density (in-lb/cu. in) Figure 2-3 Dynamic Stress and Energy Density for ARCEL 512, 2-5 Impacts 23 400.00 350.00 4 T y = 18.79e°-°5‘3" 300.00 4 R2 = 0.9991 250.00 - 1 200.00 ~ I 1 150.00 ~ Dynamic Stress (psi) 100.00 ‘- 50.00 1 I 0.00 i i i i i 0.00 10.00 20.00 30.00 40.00 50.00 60.00 Energy Density (in-Ib/cu. in) Figure 24 Dynamic Stress and Energy Density for ARCEL 512, 1st Impact Dynamic Stress (psi) 24 120.00 T 100.00 I y = 12.8380'0947)‘ R2 = 0.998 T 80.00 ~ 60.00 4 40.00 «- 20.00 - T 0.00 : : i : 0.00 5.00 10.00 15.00 20.00 25.00 Energy Density (In-Ib/cu.in) Figure 2-5 Dynamic Stress and Energy Density for ARPRO 3313, 2-5 Impacts Dynamic Stress (psi) 25 90.00 80.00 «- 0 y = 12 790.0805x R2 = 0.9973 70.00 ~- 60.00 r 50.00 4 40.00 4 30.00 «- 20.00 «- 10.00 .. 0.00 1 2 ‘fi # 0.00 5.00 10.00 15.00 20.00 25.00 Energy Density ( in-Ib/cu. in) Figure 2-6 Dynamic Stress and Energy Density for ARPRO 3313, 1st Impact Dynamic Stress (psi) 26 250.00 y = 21 .57e°'°577" 200.00 1~ R2 = 0.9984 150.00 « I T 100.00 ~ 50.00 3 I 0.00 E i : i : E : 0.00 5.00 10.00 15.00 20.00 25.00 30.00 35.00 40.00 Energy Density (in-Ib/cu.in) Figure 2-7 Dynamic Stress and Energy Density for ARPRO 3319, 2-5 Impacts Dynamic Stress (psi) 27 180.00 160.00 ~r- 140.00 -- Y = 22-‘4990'mx R2 = 0.9974 120.00 «- 100.00 I» 80.00 < T T 60.00 3 40.00 . 1 20.00 - T 0.00 .L ‘r ,L + 0.00 10.00 20.00 30.00 40.00 50.00 Energy Density (In-lb/cu.in) Figure 2-8 Dynamic Stress and Energy Density for ARPRO 3319, 1st Impact Dynamic Stress (psi) 28 140.00 120.00 1 y = 16.88e°'°89"‘ R2 = 0.9969 T 100.00 1 I 80.00 « T I 60.00 ~ 40.00 -r 20.00 - I 0.00 f 4. . If 0.00 5.00 10.00 15.00 20.00 Energy Density (in-Ib/cu.in) Figure 2-9 Dynamic Stress and Energy Density for ARSAN 600, 2-5 Impacts 25.00 Dynamic Stress (psi) 120.0 100.0 ~ T y = 17.19e°‘°596" r12 = 0.9921 80.0 ‘- 60.0 .. 40.0 ~- 20.0 -~ 0.0 r F : i 4 : 0.0 5.0 10.0 15.0 20.0 25.0 30.0 35.0 Energy Density (in-lblcu.in) Figure 2-10 Dynamic Stress and Energy Density for ARSAN 600, 1st Impact 30 250.00 y = -0.0023x3 + 0.2141x2 + 0.9868x + 7.2455 R2 = 0.9802 200.00 - ‘3‘ 7; 150.00 «- 3 a .2 5 100.00 4 E 50.00 . 0.00 . . : ‘ i i 0.00 5.00 10.00 15.00 20.00 25.00 30.00 35.00 40.00 Energy Density (In-Ib/cu.ln) Figure 2-11 Dynamic Stress and Energy Density for 0.7 PolyPlank, 2-5 Impacts Dynamic Stress (psi) 250.00 31 200.00 ~ 150.00 4 100.00 «~ 50.00 4- 0.00 I 0.00 y = 0.0013x3 + 0.0645x2 + 2.1993x + 6.2958 R2 = 0.9964 l l l J l T r T T 5.00 10.00 15.00 20.00 25.00 30.00 35.00 40.00 Energy Density (in-Ib/cu.in) Figure 2-12 Dynamic Stress and Energy Density for 1.6 POIyPIank, 2-5 Impacts 32 250.00 200.00 .. 150.00 ‘- 100.00 - Dynamic Stress (psi) 50.00 .. y = 0.0032x3 + 0.0108x2 + 2.6049x + 5.6353 82 = 0.9912 0 l 1_ 0.00 0.00 5.00 10.00 15.00 20.00 25.00 30.00 l N Energy Density (in-lb/cu.in) Figure 2-13 Dynamic Stress and Energy Density for 2.2 PolyPlank, 2-5 Impacts 35.00 CHAPTER III COMPUTER PROGRAMMING 3.1 Structure of Program The structure design method [14] was used in development of the cushion design software because the task was complex. One subprogram was written to solve one problem. When possible, the reusable subprograms were also written so they could be called from many places in the program. The main task of cushion design was broken into the computer design, user design, generating cushion curves. They could be broken down further into one specific function or task so the subprogram could easily handle it. Figure 3-1 shows the main structure of the cushion design program. The Cushion Design program performs four tasks, which are Computer Design, User Design, Generate Cushion Curves and Other Options. In Computer Design, user inputs the product fragility G level, expected drop height and package weight, and then computer gives the cushioning area and material thickness according to two criteria, the minimum volume and the minimum thickness. Figure 3-2 shows the structure in Computer Design. 33 34 Cushion Design Computer User Generate Other Design Design Cushion Curves Options Figure 3-1 Main Structure of the Cushion Design Computer Design One—Face Six Faces Design Design Flgure 3-2 The Structure of Computer Design 35 In User Design, users predetermine the cushion thickness or cushioning area. The cushion design program calculates other variables. User Design can be broken into Material Design, in which cushion material is selected, Thickness Design, where the cushion thickness is fixed, Bearing Area Design, in which cushioning area is predetermined and All of These, where all cushion parameters can be chosen by users. Figure 3-3 shows the structure of it. User Design Material Thickness Bearing Area All of Design Design Design These Figure 3-3 Structure of the User Design Standard Cushion Curves and Special Cushion Curves can be generated from Generated Cushion Curves. There is another function in Generate Cushion Curves. It is Input Cushion Data, which are the regression results according the 36 two models discussed in the Chapter II. Figure 3-4 shows the general structure of Generate Cushion Curves. The cushion design program was written according to these structures. In programming, the tasks might be decomposed further for code writing. Generate Cushion Curves Standard Special Input Cushion Cushion Curves Cushion Curves Data Figure 34 Structure of the Generated Cushion Curves Because the cushion design program was tested on IBM PCs, Obaisc was chosen to code the program. It is easy to transfer the code to Visual Basic for Windows or C/C++ to take the advantage of the window’s graphic interface. In this version of the program, the menu interface with on-Iine-help was still used. 37 3.2 Data file Cushion data are the parameters, a, b, c, and d, in the two models, cushion material name and density, first impact or 2-5 impacts and final stress or maximum stress on the cushion curves. They were written to a special file, which was named as CUDE.DAT for convenience. Table 3-1 shows the data file format used in the program. One advantage of using data file is easily to modify it. Because the data file is in ASCII format, any text editor program, such as DOS EDITOR, can be used to modify the data file. If the text editor is used, open CUDE.DAT referred the editor’s operation menu. After add the new cushion data following the exact format, save it in the same name. That will help the packaging engineers to predict cushion curves for a new cushion material. Table 3-1 shows the data in CUDE.DAT. The first three string values would be assigned to string arrays, Name$(). Impact$() and Density$(). The last column would be the final stress array fs(). The left four numerical values would be assigned to the numerical arrays, a(), b(), c() and d(). A special loop was written to read the data in the starting of the cushion design program and to count the total number of materials available in the program. Because the read loop can be written to test whether or not to reach the end of the data file, if adding new material, the total number of available cushion materials will change also. It is easy to expand the power of the cushion design program. 38 Table 3-1 Date File Format for the Cushion Design Program 0.7 PolyPlank 2-5 0.75 0.0023 0.2142 0.9868 7.2455 2.0 1.6 PolyPlank 2-5 1.65 0.0013 0.0645 2.1993 6.2958 2.0 2.2 PolyPlank 2-5 2.2 0.0032 0.0108 2.6049 5.6353 2.0 ARSAN 600 1st 1.0 17.19 0.0596 0 0 3.0 ARSAN 600 2-5 1.0 16.88 0.0891 0 0 3.0 ARPRO 3313 1st 1.3 12.7 0.0805 0 0 3.0 ARPRO 3313 2-5 1.3 12.83 0.0947 0 0 3.0 ARPRO 3319 1st 1.9 2.149 0.0448 0 0 3.0 ARPRO 3319 2-5 1.9 21.57 0.0577 0 0 3.0 ARCEL 512 ist 2 18.79 0.0543 0 0 3.0 ARCEL 512 2-5 2 18.643 0.0786 0 0 3.0 DYLITE D1958 1st 1.25 20.655 0.0474 0 0 3.0 DYLITE D195B 2-5 1.25 20.606 0.0828 0 0 3.0 39 In Table 3-1, the numerical values on the seventh column are equal to zero for Exponential Model but not to zero for Polynomial Model. These numbers correspond to values of the numerical array d(). which were used as a flag to switch the computing flow between Exponential Model and polynomial Model. 3.3 Interface *“*" CUDE Main Menu ***"* Computer Design User Design Generate Cushion Data View Available Materials Option Help ODU'I-bOONA (0 Quit Enter Your Selection ( Q ) Figure 3-5 Main Menu of Cushion Design Program (CUDE). Menu interface was used in the program. When the program starts, a cover page about the program name, developed date and other information is 40 displayed on the screen about 2 second. A main menu like Figure 3-5 appears on the screen. In the main menu, user can enter the number before the item or the first letter of the item. If user enters a number or letter beyond the selections, a beep will be heard and an error message will appear on the screen. The default selection for all menus is on the “Quit” selection. "H." CUSI'IIOI'I Data Menu "fl" Cushion Curves Specific Thickness Curves Input Stress-Energy Data Help (”RN-t 9 Quit Enter Your Selection ( O ) Figure 3-6 The Generate Cushion Data Submenu in CUDE When the correct selection is entered, a submenu appears on the screen. All the submenus have the same features as the main menu. Figure 3-6 shows the submenu of Generate Cushion Data. 41 Some items on the maim menu may not have the submenu, such as the “Help” selection on the main menu. The direct result will show on the screen. Usually, the Data Input Screen follows the submenus. F1 and F9 function keys are active in the program. F1 is for “Help” and F9 means to “Quit”. 3.4 Input and Output The only data that are input through the keyboard are the product weight, product dimensions, product fragility level and expected drop height. The cushion data has been stored in the file, CUDE.DAT, which is read into the program when it is loaded. Data input subroutines handle the data input tasks. Data entered through keyboard are assigned to a temporary string variable. Whether or not the right number will be checked. A special subprogram converts the string to a number. If an unexpected data format or value is entered, the program will not process the wrong data until the correct format or value are input. That will force users to correct the mistake immediately and prevent the program from crashing or giving unexpected results. The data input subprogram accepts the letter “O “, or “q” to exit from it. Figure 37 gives a data input example for Six Face Design. In the example, the first and second data entries were in the accepted format and had 42 successfully been converted into numbers. In the third line, the computer asked to enter “Product Length” but a letter “L” was given. The cursor returned back. "**“* Data Input Screen For Six Face Design *****“ Drop Height: 48.00 in Product Weight: 50.00 lbs Product Length (L): L.. in Product Width (W): in Product Height (D): in Fragility G in Top: G's Fragility G in Bottom: G's Fragility G in Front: G's Fragility G in Back: G's Fragility G in Left: G's Fragility G in Right: G's A Number, Please! Figure 3-7 A Sample of Data Input for Six Faces Design 43 The message on the bottom of screen, “A Number, Please" was displayed with a beep to remind the user to correct the mistake. Computer halted and waited for entering the right data format or enter “O”, or “q” to abort the processing. The default output device is the computer screen. After the cushion design results are displayed on the screen, choices to save file and to send the results to a printer are prompted. The file saved by the cushion design program is the ASCII text file so it can be inserted to a report. CHAPTER IV RESULTS AND ANALYSIS All results in this chapter were obtained by running the cushion design program (CUDE). The source codes were listed in Appendix A. The program was coded in Qbasic, which came with MS-DOS 5.0 (or later). Any IBM PC with MS- DOS 5.0 (or later) can run this program. To run it, the four files, CUDE.BAS, CUDE.INI, CUDE.DAT and DETAIL.DAT, must be located in the same directory. In this directory, start the command line with “qbasic cude” or “qbasic /run cude" on DOS prompt. The later will run the CUDE program without displaying It. 4.1 User Design Material An example of the results from User Design Material is shown in Figure 4- 1. In Figure 4-1, the cushion material, ARCEL 512, was selected and the 2-5 impacts data was also indicated. The information the user input is printed in the beginning of the result table. All the computed results are listed in a tabular form. The first column is the protected G level. 45 CUDE Report: Minimum Cushion Thickness & Area User Designed: ARCEL 512, 2-5 lmpact(s) Density = 2.0 pcf Drop Height: 36 in Weight: 30 lbs Face Area:( 24 x 36 ) = 864 sq. in Minimum Thickness : Minimum Volume G Thickness Area : Thickness Area g's in in2 : in in2 75.00 1.92 7.26 3.36 10.22 70.00 2.05 40.83 3.46 10.22 65.00 2.21 40.83 3.57 10.22 60.00 2.39 35.94 3.70 10.22 55.00 2.61 32.10 3.85 10.22 50.00 2.87 28.99 4.02 10.22 45.00 3.19 26.44 4.24 10.22 40.00 3.59 24.30 4.51 10.22 35.00 4.10 20.91 4.87 10.22 30.00 4.78 17.29 5.35 10.22 25.00 5.74 14.74 6.06 10.22 20.00 7.17 11.84 7.24 10.22 15.00 9.66 10.22 9.66 10.22 10.00 18.30 10.22 18.30 10.22 5.00 18.30 10.22 18.30 10.22 19:23:31 01-09-1995 Figure 4—1 A Sample Output Result of User Design Material from CUDE 46 The second column and third column are under the Minimum Thickness. The thickness and area were calculated by using of the minimum thickness as criterion. The last two columns are under the tittle of Minimum Vol0me. The area and thickness were calculated by use of minimum volume as the criterion. 4.2 User Design Thickness Figure 4-2 shows an example of the output results from User Design Thickness. The result table lists all the available materials in CUDE and their corresponding cushioning area for the thickness designed by user. The last row in the result table is the best material according the minimum area or minimum volume. This best material may not be the most economical one. Because the cushioning areas for all the materials were given, the user could easily compare the current marketing price and choose the most suitable materials for his design. For example, if the cushioning material DYLITE 195B was used for the following design. To prevent 65 G-level in 24 inch drop, if 2 inch thickness was used for a 60 lb. product, the cushioning area would be around 145 in2 for the first drop or about 34 in2 for 2—5 drops. If we look the cushion curves [11] and draw a line at 65 G level. The 65 G line will cross the 2 inch thickness curve at around 0.4 psi. This is equal to a cushioning area around 150 in2 for the first impact. If we do the same things for multiple impacts, we will find the static load is 1.75 psi. CUDE gave 1.745 psi ( 60 / 34.38 = 1.745 psi), the same results as the original cushion curves in this example. 47 CUDE Report: Bearing Area & Materials User Designed Thickness: 2 in Protected G: 65 6'5 Drop Height: 24 in Product Weight: 60 lbs No. Materials Impacts Area in2 1 0.7 PolyPlank 2-5 ““* 2 1.6 PolyPlank 2-5 "*** 3 2.2 PolyPlank 2-5 “*** 4 ARSAN 600 1st 171.43 5 ARSAN 600 2-5 32.00 6 ARPRO 3313 Ist 21.58 7 ARPRO 3313 2-5 28.44 8 ARPRO 3319 1st 34.83 9 ARPRO 3319 2-5 126.32 10 ARCEL 512 Ist 157.89 11 ARCEL 512 2-5 27.52 12 DYLITE D1958 1st 144.58 13 DYLITE D1958 2-5 34.38 The Best Material & Bearing Area: 6 ARPRO 3313 1st 21.58 19:24:49 01-09-1995 Note: ****’ means no solution or CUDE can not find it. Figure 4-2 A Sample Output Result of User Design Thickness from CUDE 48 4.3 User Design Cushioning Area An example from User Design Bearing Area is in Figure 4-3. All the input data are listed on the top of the report with computed static stress. There are four columns in the results. The first column shows the code number of the cushion material in this program. The second column lists the name of the available cushion materials. Because different performances of cushioning materials between the first drop and 2-5 drops, the impact(s) are listed in the third column also. The final column is the computed results, which are the minimum thickness for the cushion material listed on the same line. On the final row in the table, the best material, based on thickness, was recommended by CUDE. The user could compare the different thickness with the cushion material current marketing price and decide which was the most economical one. The User Design Bearing Area function is best suited for a product that requires to cushion the entire base area. 49 CUDE Report: Thickness & G in Available Materials User Designed Bearing Area: 100 sq. in Static stress: 0.50 psi Drop Height: 36 in Protect G: 80 G's Product Weight: 50 lbs No. Material lmpact(s) Thickness In 1 0.7 PolyPlank 2-5 1.68 2 -1.6 PolyPlank 2-5 1.66 3 2.2 PolyPlank 2-5 1.66 4 ARSAN 600 1st 1.27 5 ARSAN 600 2—5 1.86 6 ARPRO 3313 1st 1.26 7 ARPRO 3313 2-5 1.50 8 ARPRO 3319 1st 1.36 9 ARPRO 3319 2-5 1.68 10 ARCEL 512 1st 1.29 11 ARCEL 512 2-5 1.85 12 DYLITE D1953 1st 13 DYLITE D1958 2-5 m—L NM 010 The Best Material & Thickness For This Design: 6 ARPRO 3313 1st 1.26 19:25:58 01-09-1995 Figure 4-3 A Sample Output Result of User Design Area 50 4.4. User Design All Cushion Parameters Figure 4-4 shows a sample output from User Design All Cushion Parameters. In this function, the user is free to select all the parameters. CUDE Report: User Design All Cushion Parameters Material: ARSAN 2-5 lmpact(s) 5 # Product Weight: 60.00 lbs Drop Height: 24.00 in Cushion Thickness: 3.00 in Cushion Area: 100.00 Sq.in Protected G: 43.15 G's 19:26:59 01-09-1995 Figure 4-4 A Sample Output Result of User Design All Cushion Parameters from CUDE The Protected G level is shown on the last line. Users can input all possible combination for their product and find the best solution. This function 51 can be used to check the designed cushion to see what G level can be protected. 4.5 One Face Design Results A sample of CUDE for One Face Design results is shown in Figure 4-5. The results show all the available cushion materials on the left, and the corresponding cushion thickness and bearing areas list on the right. The thickness listed under Minimum Thickness is the minimum thickness to be used for the cushion material. The thickness under the Minimum Volume is the fewest cushion materials to be used. Users can decide which set data will be used for their products. The final row is the recommendation of CUDE. 52 CUDE Report For One Face Design: Thickness & Materials Protected G: 75 g's Drop Height: 36 in Product Weight: 25 lbs Face Area; 24 x 36 : 864 in2 Minimum Thickness Minimum Volume No. Material lmpact(s) Thick. Area Thick. Area in in2 in in2 1 0.7 PolyPlank 2-5 1.70 109.20 2.60 12.63 2 1.6 PolyPlank 2-5 1.80 76.00 2.50 12.96 3 2.2 PolyPlank 2-5 1.80 76.00 2.60 12.96 4 ARSAN 600 1st 1.34 39.75 2.49 8.39 5 ARSAN 600 2-5 1.96 39.75 3.70 8.39 6 ARPRO 3313 1st 1.33 52.20 3.01 8.39 7 ARPRO 3313 2-5 1.59 52.20 3.55 8.39 8 ARPRO 3319 1st 1.30 32.10 2.08 8.39 9 ARPRO 3319 2-5 1.62 32.10 2.65 8.39 10 ARCEL 512 1st 1.33 36.82 2.35 8.39 11 ARCEL 512 2-5 1.91 36.82 3.39 8.39 12 DYLITE D1958 1st 1.28 34.30 2.13 8.39 13 DYLITE 01958 25 2.23 34.30 3.73 8.39 The Best Cushion Material: 12 DYLITE 01958 1st 1.28 34.30 2.13 8.39 19:14:26 01-09-1995 Figure 4—5 A Sample Output Result of Computer One Face Design 53 4.6 Computer Six Face Design. Six Face Design generates a set of reports by different faces. The corresponding cushion parameters are reported at the top of the result table so users can easily distinguish the results for a special face'from the others. The result reports are numbered from CUDE Report 1 to CUDE Report 6. The CUDE Reporter 1 is for top face of the product and CUDE Reporter 2 is for the bottom face. Reports 3 and 4 are for the frond and back of the product. Report 5 and 6 are for the left and right face. Which face is top or bottom is depended on the data input by the user. An example of Six Face results is shown in Figure 4-6 to Figure 4-11. The example uses 30 lbs as the product weight. The product size is 24 x 36 x 24 in3 and different fragility is given for each face. CUDE recommended the DYLETE 01958 as the best material to be used. The user could override the results by selection of other material, thickness and bearing area combination from the result tables. 54 CUDE Report 1 : Computer Designed Six Faces Bearing Area & Minimum Thickness in Available Materials Top, Area: 24 X 36 = 864 in2 Protected G in the Face: 70 G's Drop Height: 36 in Product Weight: 30 lbs LXWXD224x36x24=20736 in Minimum Thickness Minimum Volume No. Material lmpact(s) Thick. Area Thick. Area in in2 in in2 1 0.7 PolyPlank 2-5 1.80 89.63 2.80 15.51 2 1.6 PolyPlank 2—5 1.90 69.01 2.70 15.51 3 2.2 PolyPlank 2-5 1.90 69.01 2.80 15.51 4 ARSAN 600 1st 1.43 47.26 2.54 10.22 5 ARSAN 600 2-5 2.10 47.26 3.77 10.22 6 ARPRO 3313 1st 1.43 56.10 3.06 10.22 7 ARPRO 3313 2-5 1.70 56.10 3.61 10.22 8 ARPRO 3319 1st 1.39 35.94 2.13 10.22 9 ARPRO 3319 2-5 1.74 35.94 2.70 10.22 10 ARCEL 512 1st 1.43 40.83 2.40 10.22 11 ARCEL 512 2-5 2.05 40.83 3.46 10.22 12 DYLITE 0195B 1st 1.37 35.94 2.18 10.22 13 DYLITE 01958 2-5 2.39 35.94 3.80 10.22 The Best Cushion Material: 12 0YLITE019581st 1.37 35.94 2.18 10.22 19:16:52 01-09-1995 Figure 4-6 A Sample Output of Computer Six Face Design for Top Face 55 ' CUDE Report 2 : Computer Designed Six Faces Bearing Area 81 Minimum Thickness in Available Materials Bottom, Area: 24 X 36 = 864 in2 Protected G in the Face: 80 G's Drop Height: 36 in Product Weight: 30 lbs LXWX0224x36x24=20736 in Minimum Thickness Minimum Volume No. Material lmpact(s) Thick. Area Thick. Area in in2 in in2 1 0.7 PolyPlank 2—5 1.60 127.81 2.50 15.51 2 1.6 PolyPlank 2-5 1.70 89.63 2.50 15.51 3 2.2 PolyPlank 2-5 1.70 89.63 2.50 15.51 4 ARSAN 600 1st 1.26 47.26 2.41 10.22 5 ARSAN 600 2-5 1.84 56.10 3.58 10.22 6 ARPRO 3313 1st 1.25 69.01 2.92 10.22 7 ARPRO 3313 2-5 1.49 69.01 3.44 10.22 8 ARPRO 3319 1st 1.21 40.83 2.00 10.22 9 ARPRO 3319 2-5 1.52 40.83 2.55 10.22 10 ARCEL 512 Ist 1.25 47.26 2.27 10.22 11 ARCEL 512 2-5 1.79 47.26 3.28 10.22 12 DYLITE D1958 1st 1.20 40.83 2.06 10.22 13 DYLITE 01958 25 2.09 40.83 3.60 10.22 The Best Cushion Material: 12 DYLITE D1958 1st 1.20 40.83 2.06 10.22 19:16:56 01-09-1995 Figure 4-7 A Sample Output of Computer Six Face Design for Bottom Face 56 CUDE Report 3 : Computer Designed Six Faces Bearing Area & Minimum Thickness in Available Materials Front, Area: 24 X 24 = 576 in2 Protected G in the Face: 75 G's Drop Height: 36 in Product Weight: 30 lbs LXWX0224x36x24=20736 in Minimum Thickness Minimum Volume No. Material lmpact(s) Thick. Area Thick. Area in in2 in in2 1 0.7 PolyPlank 2-5 1.70 127.81 2.70 15.51 2 1.6 PolyPlank 2-5 1.80 89.63 2.60 15.51 3 2.2 PolyPlank 2-5 1.80 89.63 2.60 15.51 4 ARSAN 600 Ist 1.34 47.26 2.47 10.22 5 ARSAN 600 2-5 1.96 47.26 3.67 10.22 6 ARPRO 3313 1st 1.34 69.01 2.98 10.22 7 ARPRO 3313 2-5 1.59 69.01 3.52 10.22 8 ARPRO 3319 1st 1.30 35.94 2.06 10.22 9 ARPRO 3319 2-5 1.63 40.83 2.62 10.22 10 ARCEL 512 1st 1.33 47.26 2.33 10.22 11 ARCEL 512 2-5 1.92 47.26 3.36 10.22 12 DYLITE D195B 1st 1.28 40.83 2.12 10.22 13 DYLITE D1958 2-5 2.23 40.83 3.69 10.22 The Best Cushion Material: 12 DYLITED195B1st 1.28 40.83 2.12 10.22 19:16:59 01-09-1995 Figure 4-8 A Sample Output of Computer Six Face Design for Front Face 57 CUDE Report 4 : Computer Designed Six Faces Bearing Area & Minimum Thickness in Available Materials Back, Area: 24 X 24 = 576 in2 Protected G in the Face: 60 G's Drop Height: 36 in Product Weight: 30 lbs LXWXD:24X36X24=20736 in Minimum Thickness Minimum Volume No. Material lmpact(s) Thick. Area Thick. Area in in2 in in2 1 0.7 PolyPlank 2-5 2.20 89.63 3.20 15.51 2 1.6 PolyPlank 2-5 2.30 69.01 3.00 15.51 3 2.2 PolyPlank 2-5 2.30 56.10 3.00 15.51 4 ARSAN 600 1st 1.67 40.83 2.71 10.22 5 ARSAN 600 2-5 2.46 40.83 4.01 10.22 6 ARPRO 3313 Ist 1.67 56.10 3.23 10.22 7 ARPRO 3313 2—5 1.99 47.26 3.82 10.22 8 ARPRO 3319 1st 1.62 28.99 2.28 10.22 9 ARPRO 3319 2-5 2.03 32.10 2.90 10.22 10 ARCEL 512 1st 1.66 35.94 2.56 10.22 11 ARCEL 512 2-5 2.39 35.94 3.70 10.22 12 DYLITE D1958 1st 1.60 32.10 2.34 10.22 13 DYLITE 01958 25 2.78 32.10 4.08 10.22 The Best Cushion Material: 12 DYLITE D1958 1st 1.60 32.10 2.34 10.22 19:17:03 01-09—1995 Figure 4-9 A Sample Output of Computer Six Face Design for Back Face 58 CUDE Report 5 : Computer Designed Six Faces Bearing Area & Minimum Thickness in Available Materials LXWXD:24x36x24 =20736 Left, Area: 36 X 24 = 864 in2 Protected G in the Face: 65 G's Drop Height: 36 in Product Weight: 30 lbs in Minimum Thickness Minimum Volume No. Material lmpact(s) Thick. Area Thick. Area in in2 in in2 1 0.7 PolyPlank 2-5 2.00 89.63 3.00 15.51 2 1.6 PolyPlank 2-5 2.10 69.01 2.80 15.51 3 2.2 PolyPlank 2-5 2.10 69.01 2.90 15.51 4 ARSAN 600 1st 1.54 40.83 2.62 10.22 5 ARSAN 600 2-5 2.27 40.83 3.88 10.22 6 ARPRO 3313 1st 1.54 56.10 3.14 10.22 7 ARPRO 3313 2-5 1.83 56.10 3.71 10.22 8 ARPRO 3319 1st 1.49 32.10 2.20 10.22 9 ARPRO 3319 2-5 1.87 32.10 2.80 10.22 10 ARCEL 512 1st 1.54 35.94 2.48 10.22 11 ARCEL 512 2-5 2.21 40.83 3.57 10.22 12 DYLITE D1958 1st 1.47 35.94 2.25 10.22 13 DYLITE 01958 2-5 2.57 35.94 3.93 10.22 The Best Cushion Material: 12 DYLITE D1958 1st 1.47 35.94 2.25 10.22 19:17:07 01-09-1995 Figure 4-10 A Sample Output of Computer Six Face Design for Left Face 59 CUDE Report 6 : Computer Designed Six Faces Bearing Area & Minimum Thickness in Available Materials Right, Area: 36 X 24 = Protected G in the Face: Drop Height: Product Weight: LXWXD:24x36x24 =20736 864 85 36 30 in2 G's in lbs in Minimum Thickness Minimum Volume No. Material lmpact(s) Thick. Area Thick. Area in in2 in in2 1 0.7 PolyPlank 2-5 1.50 127.81 2.40 15.51 2 1.6 PolyPlank 2-5 1.60 89.63 2.40 15.51 3 2.2 PolyPlank 2-5 1.60 89.63 2.50 15.51 4 ARSAN 600 1st 1.18 56.10 2.35 10.22 5 ARSAN 600 2-5 1.73 56.10 3.50 10.22 6 ARPRO 3313 1s 1.18 69.01 2.86 10.22 7 ARPRO 3313 2-5 1.40 69.01 3.37 10.22 8 ARPRO 3319 1st 1.14 40.83 1.95 10.22 9 ARPRO 3319 2-5 1.44 40.83 2.49 10.22 10 ARCEL 512 Ist 1.18 47.26 2.22 10.22 11 ARCEL 512 2-5 1.69 47.26 3.20 10.22 12 DYLITE 01958 1st 1.13 47.26 2.01 10.22 13 DYLITE 01958 25 1.97 47.26 3.51 10.22 The Best Cushion Material: 12 DYLITE 01958 1st 1.13 47.26 2.01 10.22 19:17:10 01-09-1995 Figure 4~11 A Sample Output of Computer Six Face Design for Right Face CHAPTER V CONCLUSIONS Conclusions 1. Exponential and polynomial models can be used to describe the relationships of dynamic stress with energy density. Eight cushion materials were analyzed using statistical methods for the dynamic stress and energy density equations. The parameters of regression equations can be used as cushion data when R2 is greater than 0.99. 2 A computer program for cushion design can been written based on the exponential and polynomial models. 3 The testing version of the cushion design program was coded in Qbasic and named as CUDE. CUDE has three main functions, Computer Design, User Design and Generate Cushion Date. The sample running results show that the cushioning parameters designed by CUDE are the same as the results using the original cushion curves. 60 61 4. The cushion design process will be simplified and speeded up using the cushion design program as an aided tool. More cushion materials will be needed to increase the program power. APPENDIX APPENDIX QBASIC SOURCE CODE FOR CUSHION DESIGN PROGRAM “* Cushion Design V x.xx *“ 'File Name: CUDEXX.8AS 'Author: Ruogong Liu 'Last Modified Date: 3/27/94 'CUDEXX.8AS uses the Dynamic Stress & Energy Density Equations: ' GS = a*exp(b*s*h/t) + c ' and ' G‘s = a*(s*h/t)**3 + b’(s*h/t)**2 + c*(s*h/t) + d ' to process all data analysis. ' Where: ' a, b, c, d: Constant for certant material; ' G: Protected G, g's ( g = 386.4 in/sZ ); ' h: Expected drop heigh ( in ); ' t: Cushion thickness ( in ); ' 5: Static stress ( psi ) ' G, t, or s can been solved directly or numerically. DECLARE SUB Cover () DECLARE SUB Case.Else () DECLARE SUB Curves.Graphic (i!) DECLARE SUB Curve.Spe.T (ii, t!) DECLARE SUB DOS () DECLARE SUB Exit.Message () 62 63 DECLARE SUB Help.P.File () DECLARE SUB Help.CUDE () DECLARE SUB Hit.any.key () DECLARE SUB Ini.Data () DECLARE SUB Info () DECLARE SUB Input.SE.Data () DECLARE SUB Input.D.MateriaI () DECLARE SUB Input.D.Thickness () DECLARE SUB Input.D.Area () DECLARE SUB Input.D.All () DECLARE SUB lnput.Std.Curve () DECLARE SUB lnput.Spe.Curve () DECLARE SUB lnput.1.Design () DECLARE SUB lnput.6.Design () DECLARE SUB List.File () DECLARE SUB Menu.Generate.Data () DECLARE SUB Menu.User.Design () DECLARE SUB Menu.Compu.Design () DECLARE SUB Menu.Option () DECLARE SUB Menu.View.Data () DECLARE SUB DetaiI.Data () DECLARE SUB message (F, h) DECLARE SUB Number.CK (R$, R!) DECLARE SUB Pause () DECLARE SUB Screen.Color () DECLARE SUB Show.CoIor () DECLARE SUB Solve.1.Face (Out$, Fl, hl, Pl) DECLARE SUB Solve.6.Faces (Out$, Face%, hl, P!) DECLARE SUB Solve.6.Face.File (Out$, Face%, hl, P!) DECLARE SUB User.D.Thickness (Outs, Fl, hl, Pl, t!) DECLARE SUB User.D.Area (Out$, Fl, hl, Pl, Areal) DECLARE SUB User.D.Material (Out$, Fl, hl, Pl, il) DECLARE FUNCTION User.D.All.epr (WI, hl, tl, Areal, il) DECLARE FUNCTION User.D.All.poll (WI, hl, tl, Areal, i!) DECLARE SUB View.Data.File () DIM SHARED Name$(1 TO 100), Impact$(1 TO 100), Density$(1 TO 100) DIM SHARED a(1 TO 100), b(1 TO 100), c(1 TO 100), d(1 TO 100), fs(1 TO 100), t(1 TO 100), G(1 TO 6) DIM Mt(1 TO 100), MtA(1 TO 100), Mvt(1 TO 100), MvA(1 TO 100) ON ERROR GOTO Handler 'Handle Error KEY 1, "H” + CHR$(13) 'Enable F1 Function Key KEY 9, ”O” + CHR$(13) 'Enable F9 Function Key SCREEN 0: CLS 'Prepare Screen 64 CALL Cover 'Load Cover CALL Info 'Load Information about CUDE CALL Ini.Data 'Load Screen Setting & Cushion Data ERCOV: 'Label "ERCOV" for the Error Resume DO 'Main Menu CLS LOCATE 2, 20: PRINT ....... CUDE Main Menu ******"- LOCATE 5, 20: PRINT "1 Computer Design" LOCATE 6, 20: PRINT "2 User Design" LOCATE 7, 20: PRINT "3 Generate Cushion Data " LOCATE 8, 20: PRINT "4 View Available Materials" LOCATE 9, 20: PRINT ”5 Option” LOCATE 10, 20: PRINT "6 Help" LOCATE 12, 20: PRINT "9 Quit" LOCATE 15, 20: PRINT "Enter Your Selection ( Q )" LOCATE 15, 43: INPUT '"', s$ SELECT CASE UCASE$(s$) CASE ”1", ”C” CALL Menu.Compu.Design CASE "2", "U” CALL Menu.User.Design CASE ”3", ”G” CALL Menu.Generate.Data CASE ”4", "V" CALL Menu.View.Data CASE "5", ”0" CALL Menu.Option CASE ”6", ”H", "7" CALL Help.CUOE CASE "9", "Q", "E", rm CLS : CALL Exit.Message 'Prompt Exit CASE ELSE ' CALL Case.Else END SELECT LOOP Handler: SELECT CASE ERR CASE 76 'Path not found BEEP: BEEP CLS : LOCATE 2, 1: PRINT SPC(15); "Path Not Found! " LOCATE 10, 15: INPUT "Type New File Name or Q to Quit >", R$ IF UCASE$(R$) = "Q” THEN 65 CLS : RESUME ERCOV ELSE File.Name$ = R3 RESUME END IF CASE 71 'Disk Not Ready BEEP: BEEP CLS : LOCATE 2, 1: PRINT SPC(15); "Disk Not Ready! " LOCATE 10, 15: INPUT "Type New File Name or Q to Quit >“, R$ IF UCASE$(R$) = ”Q" THEN CLS : RESUME ERCOV ELSE File.Name$ = R$ RESUME END IF CASE 53 'File not found CLS : COLOR 7, 0: LOCATE 5, 15 PRINT "CUDE.!NI and/or CUDE.DAT Missed, Ending Program." PRINT SPC(10); "Type cls and ENTER, if Screen Blank, to recove DOS Sreen." SLEEP: END CASE 25 'Printer Error CLS : BEEP: BEEP: LOCATE 10, 20: PRINT "Is Your Printer On ?" LOCATE 12, 20: PRINT "Q to Quit or Other Key to Continue. ( C )" LOCATE 12, 58: INPUT '"', R$ IF UCASE$(R$) = "Q” THEN CLS : RESUME ERCOV ELSE RESUME END IF CASE 27 'Out of Paper CLS : LOCATE 5, 15: PRINT ”Printer out of Paper" LOCATE 7, 15: INPUT "When Ready Press R or Other Key to Quit", R$ IF UCASE$(R$) = "R" THEN RESUME ELSE CLS : RESUME ERCOV END IF CASE 35 'Subprogram not defined RESUME ERCOV CASE ELSE CLS : LOCATE 8, 25 PRINT "Unexpeced Error. Error code: "; ERR LOCATE 10, 25 PRINT ”Ending Program." 66 END END SELECT 'This is the Bottom of Main Program SUB Case.Else SHARED TextC°/o, BackC°/o '*** Beep, Print Message BEEP: LOCATE 23, 15: COLOR 4, 7 PRINT" Enter the Number or the First Letter, Please! " COLOR TextC°/o, BaCkCO/o SLEEP: CLS END SUB SUB Cover ' ** The Cover on the Starting COLOR 14, 1 : CLS E = 14 'Leading Space (1 = 5 'Distance of Letter W = 9 'Width of printed letter ascii = 177 'Character ASCII Code LOCATE 3 PRINT SPC(E); STRING$(W, ascii); SPC(d); STRING$(2, ascii); SPC(W - 3); PRINT STRING$(2, ascii); SPC(d); STRING$(W + 1, ascii); SPC(d); STRING$(W, ascii) LOCATE 6 PRINT SPC(E + 46); STRING$(W - 3, ascii) FOR i = 4 TO 8 LOCATE i PRINT SPC(E); STRING$(2, ascii); SPC(d + w - 2); STRING$(2, ascii); PRINT SPC(d + 1); STRING$(2, ascii); SPC(d + 2); STRING$(2, ascii); PRINT SPC(d - 1); STRING$(2, ascii); SPC(d); STRING$(2, ascii) NEXT i LOCATE 9: PRINT SPC(E); STRING$(W, ascii); SPC(d); STRING$(W + 1, ascii); PRINT SPC(d); STRING$(W + 1, ascii); SPC(d); STRING$(W, ascii) LOCATE 12, 22: PRINT "A Computer Aided Cushion Design Program" LOCATE 14, 37: PRINT "V x.x" LOCATE 16, 33: PRINT "5/1994 - 5/1995" LOCATE 21, 35: PRINT "Developed by" LOCATE 22, 28: PRINT "Ruogong Liu for his thesis” LOCATE 23, 16: PRINT "at School of Packaging, Michigan State University" SLEEP (2) END SUB 67 SUB Curve.Spe.T (i, t) '“* Plot Specifical Thickness Cushion Curves SHARED a(), bl). CO. fs(). Name$(), TextC°/o, BackC°/o SCREEN 12 'VGA Screen 12 Sp = 15 ‘Major Mark Distance in X X0 = 15 'X=0 Position dh = 6 NCO/o = 1 IF fs(i) <= 3 THEN nw=1:ds = .005 ELSEIF fs(i) <= 6 THEN nw = 2: ds = .01 ELSEIF fs(i) <= 9 THEN nw = 3: ds = .01 ELSE CLS : LOCATE 10, 5 PRINT "Sorry, the final stress is out of my plotting range." END IF WINDOW (-120 * nw, -57)-(380 * nw, 143) 'Set X, Y Coordinates IF LEFT$(Name$(i), 2) = "AR" OR LEFT$(Name$(i), 2) = "DY“ THEN sh = 12: fh = 48 ELSEIF RIGHT$(Name$(i), 9) = ”PolyPlank" THEN sh = 12: fh = 48 ELSEIF RIGHT$(Name$(i), 7) = "Polylam" OR Name$(i) = "2.2 pct Sealed Air" THEN sh = 12: fh = 42 ELSEIF Name$(i) = "4.0 pcf Sealed Air" OR Name$(i) = ”6.0 pct Sealed Air" THEN sh = 6: fh = 42 ELSE sh = 12: fh = 48 END IF FOR h = sh TO fh STEP dh COLOR 7: CLS LOCATE 2, 13 PRINT "Fig."; No%; ": CUDE Generated Cushion Curve for "; PRINT Name$(i): LOCATE 3, 21: PRINT h; CHR$(34); " Drop, "; PRINT Impact$(i); " lmpact(s), "; "Density = "; Density$(i); " pcf" LOCATE 11, 10: PRINT ”G's" 68 LOCATE 23, X0 PRINT "0.0"; SPC(Sp + 2); PRINT USING "#.#"; 1! "’ nw; PRINT SPC(Sp - 2); PRINT USING "#.#"; 2! * nw; PRINT SPC(Sp - 2); PRINT USING "#.#"; 3! * nw LOCATE 24, 35: PRINT ”Static Stress, psi" FOR R = 1 TO 6 'Y Label LOCATE 3 * R +1,13 PRINT USING "###.#"; (120 - 20 * (R - 1)) NEXT R FOR y = 0 TO 120 STEP 10 'Y Grids FOR x = 0 TO 300 * nw STEP 10 * nw 'x Grids PSET (x, y) NEXT x NEXTy FOR MarkX% = 50 * nw TO 250 * nw STEP 50 * nw LINE (MarkX%, -1)-(MarkX°/o, 1) 'Mark x NEXT MarkX°/o FOR MarkY% = 20 TO 100 STEP 20 LINE (-2, MarkY%)-(2, MarkY%) 'Mark Y NEXT MarkY% LINE (0, 0)-(0, 120): LINE (0, 120)-(300 * nw, 120) LINE (0, 0)-(300 * nw, 0): LINE (300 * nw, 0)-(300 * nw, 120) LOCATE 1, 8: PRINT CHR$(218) LOCATE 1, 75: PRINT CHR$(191) LOCATE 25, 8: PRINT CHR$(192) LOCATE 25, 75: PRINT CHR$(217) FOR Co/o = 9 TO 74 LOCATE 1, C°/o: PRINT CHR$(196) LOCATE 25, c%: PRINT CHR$(196) NEXT - FOR R°/o = 2 TO 24 LOCATE R%, 8: PRINT CHR$(179) LOCATE R%, 75: PRINT CHR$(179) NEXT 69 COLOR 12 FOR 5 = .2 TO fs(i) STEP ds IF d(i) = 0 THEN G = (a(i) * EXP(b(i) * h * s / t) + c(i)) / s ELSE G=(a(i)*(h*s/t)"3+b(i)*(h*s/t)"2+c(i)*h's/t+d(i))/s END IF IF G < 120 THEN 'Max G X=$y=G PSET (X * 100, y) 'Draw Curve LOCATE 12, 69 PRINT USING "##.##"; t; 'Print Thickness PRINT CHR$(34) 'Print " END IF NEXT 3 BEEP IF h <> fh THEN LOCATE 26, 28: COLOR 12 PRINT ”Press 0 to Quit or Other Key for More!" ELSE LOCATE 26, 35 PRINT "The Last One!" END IF SLEEP IF UCASE$(INKEY$) = "O" THEN EXIT FOR N0% = No% + 1 NEXT h SCREEN 0: COLOR TextC°/o, BackC°/o: CLS END SUB SUB Curves.Graphic (i) '*** Plot Cushion Curves SHARED a(). b(). C(). fs(). Name$(), TextC°/o, 8ackC°/o SCREEN 12 'VGA Screen 12 Sp = 15 'Major Mark Distance in X X0 = 15 'X=0 Position dh = 6 NCO/o = 1 IF fs(i) <= 3 THEN nw= 1: ds = .005 ELSEIF fs(i) <= 6 THEN 70 nw = 2: ds = .01 ELSEIF fs(i) <= 9 THEN nw = 3: ds = .01 ELSE CLS : LOCATE 10, 5 PRINT "Sorry, the final stress is out of my plotting range." END IF WINDOW (-120 * nw, -57)-(380 * nw, 143) 'Set X, Y Coordinates IF LEFT $(Name$(i), 2) = "AR” OR LEFT$(Name$(i), 2) = "DY“ THEN sh=12th=48zdt=.5:ft=5 ELSEIF RIGHT$(Name$(i), 9) = ”PolyPlank" THEN sh=12:fh=48:dt=1:ft=5 ELSEIF RIGHT$(Name$(i), 7) = ”Polylam" OR Name$(i) = "2.2 pcf Sealed Air" THEN sh=12th=42zdt=1zft=4 ELSEIF Name$(i) = "4.0 pcf Sealed Air" OR Name$(i) = "6.0 pcf Sealed Air" THEN sh=6th=42zdt=1zft=4 ELSE sh=12th=48zdt=1zft=4 END IF FOR h = sh TO fh STEP dh COLOR 7: CLS LOCATE 2, 13 PRINT "Fig"; No%; ": CUDE Generated Cushion Curve for "; PRINT Name$(i): LOCATE 3, 21 : PRINT h; CHR$(34); " Drop, "; PRINT Impact$(i); " lmpact(s), "; ”Density = "; Density$(i); " pcf" LOCATE 11, 10: PRINT "G's" LOCATE 23, X0 PRINT "0.0"; SPC(Sp + 2); PRINT USING "#.#"; 1! * nw; PRINT SPC(Sp - 2); PRINT USING ”#.#"; 2! * nw; PRINT SPC(Sp - 2); PRINT USING "#.#"; 3! ' nw LOCATE 24, 35: PRINT "Static Stress, psi" FOR R = 1 TO 6 'Y Label LOCATE 3 * R +1,13 PRINT USING "##1##"; (120 - 20 * (R - 1)) NEXT R 71 FOR y = 0 TO 120 STEP 10 'Y Grids FOR X = 0 TO 300 * nw STEP 10 * nw 'X Grids PSET (X, y) NEXT X NEXTy FOR MarkX°/o = 50 * nw TO 250 * nw STEP 50 * nw LINE (MarkX°/o, -1)-(MarkX°/o, 1) 'Mark X NEXT MarkX°/o FOR MarkY°/o = 20 TO 100 STEP 20 LINE (-2, MarkY%)-(2, MarkY°/o) 'Mark Y NEXT MarkY°/o LINE (0, 0)-(0, 120): LINE (0, 120)-(300 * nw, 120) LINE (0, 0)-(300 * nw, 0): LINE (300 * nw, 0)-(300 " nw, 120) LOCATE 1, 8: PRINT CHR$(218) LOCATE 1,75: PRINT CHR$(191) LOCATE 25, 8: PRINT CHR$(192) LOCATE 25, 75: PRINT CHR$(217) FOR c% = 9 TO 74 LOCATE 1, c%: PRINT CHR$(196) LOCATE 25, 0%: PRINT CHR$(196) NEXT FOR R% = 2 TO 24 LOCATE R%, 8: PRINT CHR$(179) LOCATE R%, 75: PRINT CHR$(179) NEXT colr% = 1 FOR t = 1 TO ft STEP dt COLOR colr% colr% = colr% + 1 'Set Line Color IF t = 3.5 OR t = 4.5 THEN 'Filt Out 3.5 and 4.5" ELSE FOR 5 = .2 TO fs(i) STEP ds IF d(i) = 0 THEN G = (a(i) * EXP(b(i) * h * s / t) + c(i)) / s ELSE G=(a(i)’(h*s/t)"3+b(i)*(h*s/t)“2+c(i)*h*s/t+d(i))/s END IF IF G < 120 THEN 'Max G X=sy=G 72 PSET (X * 100, y) 'Draw Curve LOCATE 10 + 2 * t, 69 PRINT USING " #.#"; t; 'Print Thickness PRINT CHR$(34) 'Print " END IF NEXT 5 END IF NEXTt BEEP IF h <> fh THEN LOCATE 26, 28: COLOR 12 PRINT "Press Q to Quit or Other Key for More!" ELSE LOCATE 26, 35 PRINT "The Last One!" END IF SLEEP IF UCASE$(INKEY$) = "Q" THEN EXIT FOR No°/o = No% + 1 NEXT h SCREEN 0: COLOR TextC°/o, BackC°/o: CLS END SUB SUB Detail.0ata subprogram to list details about cuahion materials CLS SHELL "type detail.datlmore” CALL Hit.any.key CLS LOCATE 12, 20: PRINT "Print ? ( N ) " LOCATE 12, 35: INPUT '"', P$ IF UCASE$(P$) <> "Y" THEN CLS : EXIT SUB LOCATE 13, 20: PRINT "Printing Port: 1. LPT1; 2. LPT2 ( 1 )" LOCATE 13, 54: INPUT '"', R$ IF UCASE$(R$) = "" OR R$ = ”1" THEN SHELL “copy detail.dat Ipt1" ELSEIF UCASE$(R$) = "LPT2" OR R$ = "2" THEN SHELL "copy detail.dat LPT2" ELSE CLS : EXIT SUB END IF CLS END SUB 73 SUB DOS '*** Transfer Control To DOS CLS : LOCATE 2: PRINT ”Type EXIT to return to CUDE.” SHELL: CLS END SUB SUB Exit.Message ' Message promts to quit program IF TextC°/o = BackC% THEN TextC°/o = 7: BackC°/o = 0: CLS LOCATE 12, 25: BEEP PRINT "Do You Really Want to Quit ? ( N )" LOCATE 12, 56: INPUT "", a$ E$ = LEFT$(UCASE$(a$), 1) IF E$ = "Y“ OR E$ = "Q” OR E$ = "E” THEN COLOR 7, 0: CLS : LOCATE 12, 25 END END IF CLS END SUB SUB Help.CUDE '"* Help for CUDE CLS : LOCATE 8, 1 PRINT SPC(10); ”CUDE is a computer aided cushion design software. It was" PRINT SPC(8); "specially designed for packaging Engineering. The software is" PRINT SPC(8); "still in development. More features will be added soon.” PRINT PRINT SPC(10); "To use it, just follow the screen menu instuctions.” PRINT PRINT SPC(10);"F1 = Help and F9 = Quit" LOCATE 22, 20: PRINT "Press Q to Quit or ENTER to See More ( )" LOCATE 22, 59: INPUT '"', R$ IF UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Help.P.FiIe END SUB SUB Help.P.File '*** Help File for Output Selection Screen CLS : LOCATE 3 PRINT SPC(10); "1. File name is a DOS file name. It can be 8 character" PRINT SPC(10); "plus up to 3 character extention (optional). For example,” PRINT SPC(10); "STRESS.1ST will save the current results to a file named" PRINT SPC(10); "STRESS.1ST in the default or current starting directory" 74 PRINT SPC(10); "on default driver. A:\MYDESIGN\CUSHION.FIN will save the" PRINT SPC(10); "results into a file called CUSHION.FIN in MYDESIGN " PRINT SPC(10); "directory of driver A ": PRINT PRINT SPC(10); "2. All files saved by CUDE are DOS Text or ASCII files.” PRINT SPC(10); "They can be imported to any word process or spread sheet" PRINT SPC(10); ""p.rogram :PRINT PRINT SPC(10); "3. Printer IS the printing port name. The printer on LPT1" PRINT SPC(10); ”or LPT2 Is depended on the connecting of your computer. " CALL Hit.any.key CLS END SUB SUB Hit.any.key SHARED TextC%, BackC°/o '"‘ Subprogram Pauses Screen LOCATE 24, 25 COLOR 0, 7 PRINT " Hit Any Key to Continue! "; DO: LOOP UNTIL INKEY$ <> '"' COLOR 7, 0 LOCATE 24, 25 PRINT " " COLOR TextC%, BackC°/o CLS END SUB SUB Info CLS Otit Note PRINT : PRINT PRINT SPC(10); " About CUDE - Cushion Design Program ": PRINT PRINT SPC(10); ”CUDE is a computer aided cushion design software. When runnIng" PRINT SPC(10); ”it, please beware of: ": PRINT PRINT SPC(10); "1. When MISSING FILE message appears on screen, check the” PRINT SPC(10); " Current Directory. Make sure CUDE.DAT and CUDE.INI in" PRINT SPC(10); " it. CUDE.DAT contains all cushion data and CUDE.!NI " PRINT SPC(10); " contains the default screen color settings": PRINT PRINT SPC(10); ”2. Useful keys. F9, or Q on screen ready (cusor blinking) " PRINT SPC( 10); " always means EXIT. When screen frozen, press CTRI- BREAK." PRINT SPC(10); " If that does not work, press CTRL-ALT-DEL. This will " 75 PRINT SPC(10); " force computer boot from DOS": PRINT PRINT SPC(10); ”3. This version CUDE is one part of my M.S. thesis which is" PRINT SPC(10); " under the guidance of Dr. Julian Lee and Dr. Gary Bugess." PRINT SPC(10); " If the new version of this program is needed, please " PRINT SPC(10); " contact School of Packaging, Michigan State University,“ PRINT SPC(10); " East Lansing, MI 48824." CALL Hit.any.key CLS END SUB SUB Ini.Data '“' Read Initial Settings & Data File SHARED TextC%, BackC°/o, Name$(), Impact$(), Density$() SHARED a(), b(), c(), d(), fs(), N OPEN "CUDE.INI" FOR INPUT AS #1 'Read Default Settings INPUT #1, TextC%, BackC°/o CLOSE #1 IF TextC°/o = BackC°/o THEN TextC°/o = 7: BackC°/o = 0 'Default Color COLOR TextC%, BackC°/o OPEN "CUDE.DAT" FOR INPUT AS #1 ' Read Cushion Data io/o = 1 DO WHILE NOT EOF(1) AND i% <= 100 INPUT #1, Name$(i%), lmpact$(i°/o), Density$(i%), a(i%), b(i%), c(i%), d(i%), fs(i%) “70 = io/o + 1 LOOP CLOSE #1 N = io/o ' 1 END SUB SUB lnput.1.Design '"‘ Input Data Screen for One Face Cushion Design SHARED L, W, TextC%, BackC°/o CLS Sp°/o = 15 ROW/o = 8 COP/o = 47 Min.F = 15 Face% = 6 DO CLS LOCATE 5 PRINT SPC(SpO/o); fltttittt Data lnpUt Screen For one Face DeSign titttttfl LOCATE ROW°/o 76 PRINT SPC(Sp%); "Drop Height: in" PRINT SPC(Sp%); "Fragility G: G's" PRINT SPC(Sp%); "Product Weight: lbs" PRINT SPC(Sp%); "Product Length (L): in" PRINT SPC(Sp%); "Product Width (W): in" DO LOCATE Row%, Col%: INPUT '"', R$ ' IF R5 = '"' OR UCASE$(R$) = "Q" THEN CLS I EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN h = R LOCATE Row%, Col%: PRINT USING " ###.##"; h ROWo/o = ROWO/o + I EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF R$ = "" OR UCASE$(R$) = ”Q” THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN F = R IF F < Min.F THEN CALL message(F, h) ELSE LOCATE Row%, Col%: PRINT USING " ##.##"; F ROWO/o = ROWo/o + 1 EXIT DO END IF END IF LOOP DO LOCATE Row%, Col%: INPUT '"‘, R$ IF R$ = '"' OR UCASE$(R$) = ”Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R 0 0 THEN P = R LOCATE Row%, Col%: PRINT USING " ###.##"; P Row% = Row% + 1 EXIT DO END IF LOOP DO 77 LOCATE Row%, Col%: INPUT '"', R$ IF FI$ = '"' OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Nu‘mber.CK(R$, R) IF R <> 0 THEN L = R LOCATE Row%, Col%: PRINT USING "####.##”; L ROWo/o = ROWo/o + 1 EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF R$ = '"' OR UCASE$(R$) = "Q” THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN W = R LOCATE Row%, Col%: PRINT USING ”####.##"; W Row% = 8 'Reset Row% to Start Value EXIT DO END IF LOOP LOCATE 20, 25: PRINT ”Are These All Correct? ( Y ) " LOCATE 20, 50: INPUT '"', R$ IF UCASE$(R$) = "Q” THEN CLS : EXIT SUB IF UCASE$(R$) <> "N" THEN LOCATE 20, 25: PRINT " " EXIT DO END IF LOOP 'Output to Screen Out$ = "SCRN:" CALL Solve.1.Face(Out$, F, h, P) 'Select Output Results to a File or Printer DO CLS LOCATE 12, 20: PRINT "Print, Save, Both or Quit ? ( Q )" LOCATE 12, 50: INPUT '"', R$ IF R$ = "1’" OR UCASE$(R$) = "HELP” OR UCASE$(R$) = "H" THEN CALL Help.P.FiIe 'Call on Screen Help ELSE EXIT DO 78 END IF LOOP SELECT CASE LEFT$(UCASE$(R$), 1) 'Make Selection CASE ”P" DO CLS : LOCATE 12, 20: PRINT "1: LPT1 or 2: LPT2 ?( 1 )" LOCATE 12, 43: INPUT P$ IF P$ = '"' OR UCASE$(P$) = "LPT1" OR P$ = "1" THEN Out$ = "LPT1" CALL Solve.1.Face(Out$, F, h, P) EXIT DO ELSEIF P$ = "LPT2" OR P$ = "2" THEN Out$ = ”LPT2” CALL Solve.1.Face(Out$, F, h, P) EXIT DO ELSEIF P$ = "?" OR LEFT $(UCASE$(P$), 1) = "H” THEN CALL Help.P.FiIe END IF LOOP CASE ”F", "S" DO CLS : LOCATE 12, 20: INPUT "File Name: ", F$ IF F$ = '"' THEN LOCATE 15, 10: PRINT "Save to File : MATERIALOU'I‘ Out$ = ”MATERIALOUT" CALL Solve.1.Face(Out$, F, h, P) EXIT DO ELSEIF F$ = "7" OR LEFT$(UCASE$(F$), 1) = "H" THEN CALL Help.P.FiIe ELSE Out$ = F$ CALL Solve.1.Face(Out$, F, h, P) EXIT DO END IF LOOP CASE "B" DO CLS : LOCATE 12, 20: PRINT ”1: LPT1 or 2: LPT2 ? ( 1 )" LOCATE 12, 43: INPUT '"', P$ LOCATE 13, 20: INPUT "File Name: ", F$ IF P$ = "" OR UCASE$(P$) = "LPT1" OR P$ = "1" THEN Out$ = ”LPT 1" CALL Solve.1.Face(Out$, F, h, P) EXIT DO 79 ELSEIF P$ = "LPT2” OR P5 = "2" THEN Out$ = ”LPT2” CALL Solve.1.Face(Out$, F, h, P) EXIT DO ELSEIF P$ = "?" OR LEFT$(UCASE$(P$), 1) = "H" THEN CALL Help.P.FiIe END IF IF F$ = '"' THEN - LOCATE 15, 10: PRINT "Save to File : MATERIALOUT' Out$ = ”MATERIALOUT" CALL Solve.1.Face(Out$, F, h, P) EXIT DO ELSEIF F$ = "?" OR LEFT $(UCASE$(F$), 1) = "H" THEN CALL Help.P.File ELSE Out$ = F$ CALL Solve.1.Face(Out$, F, h, P) EXIT DO END IF CLS LOOP CASE ELSE CLS EXIT SUB END SELECT CLS END SUB SUB lnput.6.Design '*** Input Data Screen for 6 Faces Cushion Design SHARED L, W, d, G(), TextC%, BackC°/o CLS Sp°/o = 15 ROWo/o = 6 COIo/o = 47 Min.F = 15 Face% = 6 DO CLS LOCATE 3 PRINT SPC(Sp%); “'“’" Data Input Screen For Six Face Design “‘“‘“ LOCATE Row%, 1 PRINT SPC(Sp%); "Drop Height: in" PRINT SPC(Sp%); "Product Weight: Ibs" PRINT SPC(Sp%); "Product Length (L): in” 80 PRINT SPC(Sp%); "Product Width (W): in" PRINT SPC(Sp%); ”Product Height (D): in" PRINT SPC(Sp%); "Fragility G in Top: G's" PRINT SPC(Sp%); ”Fragility G in Bottom: G's" PRINT SPC(Sp%); ”Fragility G in Front: G's" PRINT SPC(Sp%); "Fragility G in Back: G's" PRINT SPC(Sp%); "Fragility G in Left: G's” PRINT SPC(Sp%); "Fragility G in Right: G's" DO LOCATE Row%, Col%: INPUT '"', R$ IF R$ = '"' OR UCASE$(R$) = "Q" THEN CLS 2 EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN h = R LOCATE Row%, Col%: PRINT USING " ###.##"; h ROWO/o = ROWo/o + I EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF R$ = '"' OR UCASE$IR$) = "Q" THEN CLS I EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN P = R LOCATE Row%, Col%: PRINT USING " ###.##"; P ROW°/o = Row% + I EXIT DO END IF LOOP DO LOCATE ROWo/o, COIo/oI INPUT '"', R$ IF RS = '"' OR UCASE$(R$) = "Q" THEN CLS I EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN L = R LOCATE Row%, Col%: PRINT USING "####.##'; L ROWo/o = ROWO/o 'I' 1 EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ 81 IF R$ = '"' OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN W = R LOCATE Row%, Col%: PRINT USING ”####.##"; W Row% = Row% + 1 EXIT DO END IF LOOP DO LOCATE ROWo/o, COIo/oi INPUT '"', R$ IF R$ = '"' OR UCASE$(R$) = "Q" THEN CLS I EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN (I = R LOCATE Row%, Col%: PRINT USING "####.##'; d ROWo/o = ROWo/o 'I' I EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF R$ = '"‘ OR UCASE$(R$) = ”Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN F = R IF F < Min.F THEN CALL message(F, h) ELSE G(1) = F LOCATE Row%, Col%: PRINT USING " ###.##"; G(1) Row% = Row% + 1 EXIT DO END IF END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF R$ = '"‘ OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN F = R IF F < Min.F THEN 82 CALL message(F, h) ELSE G(2) = F LOCATE Row%, Col%: PRINT USING " ###.##"; G(2) ROWo/o = ROWo/o 4' 1 EXIT DO END IF END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF R$ = '"' OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN F = R IF F < Min.F THEN CALL message(F, h) ELSE G(3) = F LOCATE Row%, Col%: PRINT USING " ###.##"; G(3) Row% = Row% + 1 EXIT DO END IF END IF LOOP DO LOCATE ROW/o, COP/o: INPUT '"', R$ IF R$ = '"' OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN F = R IF F < Min.F THEN CALL message(F, h) ELSE G(4) = F LOCATE Row%, Col%: PRINT USING " ###.##"; G(4) ROWo/o = ROWO/o ‘I’ I EXIT DO END IF END IF LOOP DO 83 LOCATE Row%, Col%: INPUT '"', R$ IF R$ = '"' OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN F = R IF F < Min.F THEN CALL message(F, h) ELSE G(5) = F LOCATE Row%, Col%: PRINT USING " ###.##"; G(5) Row% = Row% + 1 EXIT DO END IF END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF R$ = '"' OR UCASE$(R$) = "Q” THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN F = R IF F < Min.F THEN CALL message(F, h) ELSE G(6) = F LOCATE Row%, Col%: PRINT USING " ###.##"; G(6) ROWO/o = 6 EXIT DO END IF END IF LOOP 'Promt to Correct the Input Data LOCATE 20, 25: PRINT "Are These All Correct? ( Y ) " LOCATE 20, 50: INPUT "", R$ IF UCASE$(R$) = ”Q” THEN CLS : EXIT SUB IF UCASE$(R$) <> "N” THEN EXIT DO ELSE LOCATE 20, 25: PRINT " " END IF LOOP Out$ = "SCRNz" CALL Solve.6.Faces(Out$, Face%, h, P) 34 'Select Output Results to a File or Printer DO LOCATE 12, 20: PRINT "Print, Save, Both or Quit ? ( Q )" LOCATE 12, 50: INPUT '"', R$ IF R$ = "7" OR UCASE$(R$) = "HELP” OR UCASE$(R$) = "H" THEN CALL Help.P.File 'Call on Screen Help ELSE EXIT DO END IF LOOP SELECT CASE LEFT $(UCASE$(R$), 1) 'Make Selection 'CASE "P" DO CLS : LOCATE 12, 20: PRINT "1: LPT1 or 2: LPT2 ? ( 1 )" LOCATE 12, 43: INPUT '"', P$ IF P$ = '"' OR UCASE$(P$) = "LPT1" OR P$ = "1" THEN Out$ = "LPT1" CALL Solve.6.Faces(Out$, Face%, h, P) EXIT DO ELSEIF P$ = ”LPT2" OR P$ = "2" THEN Out$ = "LPT2” CALL Solve.6.Faces(Out$, Face%, h, P) EXIT DO ELSEIF P$ = "?" OR LEFT$(UCASE$(P$), 1) = "H” THEN CALL Help.P.FiIe END IF LOOP CASE "F”, "S" DO CLS : LOCATE 12, 20: INPUT ”File Name: ", F$ IF F$ = '"' THEN LOCATE 15, 10: PRINT "Save to File :STRESS.OUT“ Out$ = ”STRESSOUT' CALL Solve.6.Face.FiIe(Out$, Face%, h, P) EXIT DO ELSEIF F$ = "?" OR LEFT$(UCASE$(F$), 1) = "H" THEN CALL Help.P.File ELSE Out$ = F$ CALL Solve.6.Face.File(Out$, Face%, h, P) EXIT DO END IF LOOP CASE "B" 85 DO CLS 2 LOCATE 12, 20: PRINT "1: LPT1 or 2: LPT2 ? ( 1 )" LOCATE 12, 43: INPUT "", P$ LOCATE 13, 20: INPUT "File Name: ", F$ IF P$ = '"' OR UCASE$(P$) = ”LPT1” OR P$ = "1" THEN Out$ = "LPT1" CALL Solve.6.Faces(Out$, Face%, h, P) EXIT DO ELSEIF P$ = "LPT2" OR P$ = ”2" THEN Out$ = ”LPT2" CALL Solve.6.Faces(Out$, Face%, h, P) EXIT DO ELSEIF P$ = "?” OR LEFT$(UCASE$(P$), 1) = "H" THEN CALL Help.P.File END IF IF F$ = '"' THEN LOCATE 15, 10: PRINT "Save to File : STRESS.OUT" Out$ = ”STRESS.OUT” CALL Solve.6.Face.FiIe(Out$, Face%, h, P) EXIT DO ELSEIF F$ = "'2" on LEFT$(UCASE$(F$), 1) = "H" THEN CALL Help.P.FiIe ELSE Out$ = F$ CALL Solve.6.Face.FiIe(Out$, Face%, h, P) EXIT DO END IF CLS LOOP CASE ELSE CLS EXIT SUB END SELECT CLS END SUB SUB Input.D.AII '"‘ Input & Output for User Design All SHARED N, Name$(). lmpact$() CLS CALL View.Data.FiIe Swith = 0 DO DO 86 LOCATE 5, 25: PRINT ”User Design All Cushion Parameters" PRINT SPC(4); STRING$(75, 205) LOCATE 8 PRINT SPC(5); "Cushion Material: "; SPC(35); ”No.” PRINT PRINT SPC(5); ”Product Weight: "; SPC(35); "lbs" PRINT PRINT SPC(5); ”Expected Drop Height: "; SPC(35); "in” PRINT , PRINT SPC(5); ”Designed Cushion Thickness: ”; SPC(35); ”in" PRINT PRINT SPC(5); "Designed Cuchion Area: "; SPC(35); "Sq.in" PRINT PRINT SPC(5); "Protected G: ? "; SPC(35); ”G's" PRINT SPC(4); STRING$(75, 205) DO LOCATE 8, 36: INPUT '"', R$ IF UCASE$(R$) = "Q” THEN CLS : EXIT SUB IF R$ = '"' AND Swith = -1 THEN LOCATE 8, 34: PRINT Name$(i); ", "; Impact$(i); "lmpact(s)"; PRINT TAB(74); "No."; i EXIT DO END IF IF R$ <> '"' THEN CALL Number.CK(R$, R) IF R <> 0 THEN i = R LOCATE 8, 34: PRINT Name$(i); ", "; Impact$(i); " lmpact(s)”; PRINT TAB(74); i; "#" Swith = -1 EXIT DO END IF END IF LOOP DO LOCATE 10, 36: INPUT '"', R$ IF UCASE$(R$) = ”0" THEN CLS : EXIT SUB IF R$ = '"' THEN LOCATE 10, 36: PRINT USING "####.##"; W: EXIT DO CALL Number.CK(R$, R) IF R <> 0 THEN w = R LOCATE 10, 36: PRINT USING ”##1##”; w EXIT DO 87 END IF LOOP oo LOCATE 12,36: INPUT R$ IF UCASE$(R$) = "Q" THEN CLS : EXIT SUB IF R$ = '"' THEN LOCATE 12, 36: PRINT USING "####.##"; h: EXIT DO CALL Number.CK(R$, R) IF R <> 0 THEN h = R LOCATE 12, 36: PRINT USING "####.##"; h EXIT DO END IF LOOP oo LOCATE 14,36: INPUT R$ IF UCASE$(R$) = ”Q” THEN CLS : EXIT SUB IF R$ = THEN LOCATE 14, 36: PRINT USING ""####.##; t: EXIT 00 CALL Number.CK(R$, R) IF R <> 0 THEN t= R LOCATE 14, 36: PRINT USING "####.##"; t EXIT 00 END IF LOOP DO LOCATE 16,36: INPUT R$ IF UCASE$(R$) = "Q” THEN CLS : EXIT SUB IF R$ = '"' THEN LOCATE 16, 36: PRINT USING "####.;## Area: EXIT DO CALL Number.CK(R$, R) IF R <> 0 THEN Area = R LOCATE 16, 36: PRINT USING "####.##"; Area EXIT DO END IF LOOP LOCATE 18, 30 IF d(i) = 0 THEN PRINT, USING " ###.##"; User.D.AIl.exp(W, h, t, Area, i); ELSE PRINT, USING " ###.##"; User.D.AII.poI(W, h, t, Area, i); END IF LOCATE 20, 25: PRINT " " LOCATE 20, 25: PRINT ”Are These AII Correct? ( N ) " 88 LOCATE 20, 50: INPUT '"', R$ IF UCASE$(R$) = "Y" THEN EXIT DO ELSE LOCATE 20, 25: PRINT "Press ENTER WiII Restore The Last Value" END IF LOOP 'Select Output Results to a File or Printer CLS DO LOCATE 12, 20: PRINT ”Print, Save, or Quit? ( Q )" LOCATE 12, 45: INPUT '"', R$ IF R$ = "?" OR UCASE$(R$) = "HELP" OR UCASE$(R$) = ”H" THEN CALL Help.P.File 'Call on Screen Help ELSE EXIT DO END IF LOOP SELECT CASE LEFT$(UCASE$(R$), 1) 'Make Selection CASE "P" DO CLS : LOCATE 12, 20: PRINT "1: LPT1 or 2: LPT2 ? ( 1 )" LOCATE 12, 43: INPUT '"', P$ IF P$ = '"' OR UCASE$(P$) = "LPT1" OR P$ = "1" THEN Out$ = "LPT1" EXIT DO ELSEIF P$ = ”LPT2" OR P$ = "2" THEN Out$ = "LPT2" EXIT DO ELSEIF P$ = "7" OR LEFT$(UCASE$(P$), 1) = ”H" THEN CALL Help.P.FiIe END IF LOOP CASE "F", "S" DO CLS : LOCATE 12, 20: INPUT ”File Name: ", F$ IF F$ = '"' THEN LOCATE 15, 10: PRINT "Save to File : RECHECKOUT" Out$ = "RECHECKOUT" EXIT DO ELSEIF F$ = "?" OR LEFT $(UCASE$(F$), 1) = "H" THEN CALL Help.P.FiIe ELSE Out$ = F$ 89 EXIT DO END IF LOOP CASE ELSE CLS : EXIT SUB END SELECT OPEN Out$ FOR OUTPUT AS #1 PRINT #1, : PRINT #1, : PRINT #1, PRINT #1, : PRINT #1, : PRINT #1, PRINT #1, SPC(17); ”CUDE Rport: User Design All Cushion Parameters": PRINT #1, PRINT #1, SPC(12); STRING$(60, 61) PRINT #1, SPC(13); "Materialz"; SPC(3); Name$(i); ", "; PRINT #1, Impact$(i); " lmpact(s)"; TAB(66); i; ”#" PRINT #1, PRINT #1, SPC(13); "Product Weight"; SPC( 16); PRINT #1, USING " ###.##"; W; PRINT #1, SPC(15); "lbs": PRINT #1, PRINT #1, SPC(13); "Drop Heightz”; SPC(19); PRINT #1, USING " ##1##"; h; PRINT #1, SPC(15); "in": PRINT #1, PRINT #1, SPC(13); "Cushion Thicknessz"; SPC(13); PRINT #1, USING " ##1##"; t; PRINT #1, SPC(15); "in": PRINT #1, PRINT #1, SPC(13); "Cushion Areaz"; SPC(18); PRINT #1, USING ”####.##"; Area; PRINT #1, SPC(15); ”Sq.in": PRINT #1, PRINT #1, SPC(13); "Proteced G2”; SPC(20); IF d(i) = 0 THEN PRINT #1, USING " ###.##"; User.D.AIl.exp(W, h, t, Area, i); ELSE PRINT #1, USING " ###.##"; User.D.AIl.exp(W, h, t, Area, i); END IF PRINT #1, SPC(15); "G's": PRINT #1, PRINT #1, SPC(12); STRING$(60, 61) PRINT #1, SPC(45); TIMES; SPC(5); DATES CLOSE #1 CLS LOCATE 12, 25: PRINT ”Have More Disign ? ( N )" LOCATE 12,46: INPUT M$ IF UCASE$(M$) <> "v" THEN CLS EXIT SUB 90 END IF CLS LOCATE 20, 25: PRINT "Press ENTER WiII Restore The Last Value" LOOP END SUB SUB Input.D.Area '"‘" Input Data Screen for Bearing Area Design - SHARED N, a(), b(), c() LM = 15 CP = LM + 22 CLS DO CLS LOCATE 5 PRINT SPC(LM); "‘“'“ Data Input Screen for User Design Area “'”‘ LOCATE 8 PRINT SPC(LM); "Protected G: g's." PRINT SPC(LM); "Drop Height: in" PRINT SPC(LM); "Product Weight: Ibs" PRINT SPC(LM); ”Expected Area: sq.in" DO LOCATE 8, CP: INPUT '"', R$ IF R$ = "" OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN F = R LOCATE 8, CP: PRINT USING "####.##"; F EXIT DO END IF LOOP DO LOCATE 9, CP: INPUT '"', R$ IF R$ = '"' OR UCASE$IR$) = ”Q” THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN h = R LOCATE 9, CP: PRINT USING " ###.##"; h EXIT DO END IF LOOP DO LOCATE 10, CP: INPUT '"', R$ IF R$ = "" OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB 91 CALL Number.CK(R$, R) IF R <> 0 THEN P = R' LOCATE 10, CP: PRINT USING " ###.##"; P EXIT DO END IF LOOP DO LOCATE 11, CP: INPUT '"', R$ IF R5 = '"' OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN Ama=R LOCATE 11, CP: PRINT USING " ###.##"; Area EXIT DO END IF LOOP LOCATE 20, 25: PRINT "Are These All Correct? ( Y ) " LOCATE 20, 50: INPUT '"', R$ IF UCASE$(R$) <> "N” THEN EXIT DO END IF LOOP 'Default Output to Screen Out$ = "SCRNz" CALL User.D.Area(Out$, F, h, P, Area) CALL Hit.any.key 'Select Output Results to a File or Printer DO LOCATE 12, 20: PRINT "Print, Save, Both or Quit? ( Q )" LOCATE 12, 50: INPUT R$ IF R$ = "?" OR UCASE$(R$) = ”HELP" OR UCASE$IR$) = "H" THEN CALL Help.P.FiIe 'Call on Screen Help ELSE EXIT DO END IF LOOP SELECT CASE LEFT $(UCASE$(R$), 1) 'Make Selection CASE "P" DO CLS : LOCATE 12, 20: PRINT"1: LPT1 or 2: LPT2 ? ( 1 )" LOCATE 12,43: INPUT '"', P$ 92 IF P5 = '"‘ OR UCASE$(P$) = ”LPT1" OR P$ = "1" THEN Out$ = "LPT1” CALL User.D.Area(Out$, F, h, P, Area) EXIT DO ELSEIF P$ = "LPT2” OR P$ = "2" THEN Out$ = "LPT2" CALL User.D.Area(Out$, F, h, P, Area) EXIT DO ELSEIF P$ = "?" OR LEFI’$(UCASE$(P$), 1) = "H" THEN CALL Help.P.FiIe END IF LOOP CASE "F”, "S" DO CLS : LOCATE 12, 20: INPUT "File Name: ", F$ IF F$ = '"' THEN LOCATE 15, 10: PRINT "Save to File : STRESS.OUT" Out$ = "STRESS.OUT“ CALL User.D.Area(Out$, F, h, P, Area) EXIT DO ELSEIF F$ = "?" OR LEFT$(UCASE$(F$), 1) = "H" THEN CALL Help.P.FiIe ELSE Out$ = F$ CALL User.D.Area(Out$, F, h, P, Area) EXIT DO END IF LOOP CASE "B" DO CLS : LOCATE 12, 20: PRINT "1: LPT1 or 2: LPT2 ? ( 1 )" LOCATE 12,43: INPUT '"', P$ LOCATE 13, 20: INPUT "File Name: ", F$ IF P$ = '"' OR UCASE$(P$) = ”LPT1" OR P$ = "1" THEN Out$ = "LPT1” CALL User.D.Area(Out$, F, h, P, Area) EXIT DO ELSEIF P$ = ”LPT2" OR P$ = ”2" THEN Out$ = "LPT2” CALL User.D.Area(Out$, F, h, P, Area) EXIT DO ELSEIF P$ = "'2" OR LEFT$(UCASE$(P$), 1) = "H" THEN CALL Help.P.File END IF 93 IF F$ = '"' THEN LOCATE 15, 10: PRINT ”Save to File : STRESS.OUT“ Out$ = "STRESS.OUT“ CALL User.D.Area(Out$, F, h, P, Area) EXIT DO ELSEIF F$ = "?" OR LEFT $(UCASE$(F$), 1) = "H" THEN CALL Help.P.FiIe ELSE Out$ = F$ CALL User.D.Area(Out$, F, h, P, Area) EXIT DO END IF CLS LOOP CASE ELSE CLS EXIT SUB END SELECT CLS END SUB SUB Input.D.MateriaI '*** Input Data Screen for User Design Material SHARED L, W, N CLS Sp°/o = 15 ROWo/o = 8 COIo/o = 42 Min.F = 15 CALL View.Data.FiIe DO CLS LOCATE 5 PRINT SPC(Sp%); "‘“‘” Data Input Screen For User Design Material *****" LOCATE Row% PRINT SPC(Sp%); ”Material No.: # " PRINT SPC(Sp%); "Drop Height: in” PRINT SPC(Sp%); "Fragility G: G's" PRINT SPC(Sp%); "Product Weight: lbs" PRINT SPC(Sp%); "Product Length (L): in" PRINT SPC(Sp%); "Product Width (W): in” D0 94 LOCATE Row%, Col%: INPUT R$ IF R$ = '"' OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IFR>0ANDR<=NTHEN i = R LOCATE Row%, Col%: PRINT Name$(i); ", "; PRINT Impact$(i); " lmpact(s)"; " If"; i Row% = Row% + 1 EXIT DO ELSE LOCATE 22, 15 PRINT ”The Material is not available, Try One More TIme." BEEP: SLEEP LOCATE 22, 15 PRINT " " END IF LOOP DO LOCATE Row%, Col%: INPUT "", R$ IF R$ = "" OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN h = R LOCATE Row%, Col%: PRINT USING " ###.##"; h Row% = Row% + 1 EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT R$ IF R$ = '"' OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN F = R IF F < Min.F THEN CALL message(F, h) ELSE LOCATE Row%, Col%: PRINT USING " ##If.##"; F ROWo/o = Row% + 1 EXIT DO END IF END IF 95 LOOP DO LOCATE‘Row°/o, Col%: INPUT '"', R$ IF R$ = '"' OR UCASE$(R$) = "0" THEN CLS I EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN P = R LOCATE Row%, Col%: PRINT USING " ###.##"; P ROWo/o = ROWo/o 'I’ 1 EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF R$ = '"' OR UCASE$(R$) = "Q" THEN CLS I EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN L = R LOCATE Row%, Col%: PRINT USING "####.##"; L ROWo/o = ROWo/o + I . EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF R$ = '"' OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN W = R LOCATE Row%, Col%: PRINT USING ”####.##"; W Row% = 8 'Reset Row% to Start Value EXIT DO END IF LOOP LOCATE 20, 25: PRINT ”Are These All Correct? ( Y ) " LOCATE 20, 50: INPUT '"', R$ IF UCASE$(R$) = ”Q” THEN CLS : EXIT SUB IF UCASE$(R$) <> "N" THEN LOCATE 20, 25: PRINT " " EXIT DO END IF LOOP 'Default Output to Screen 96 Out$ = "SCRNz" CALL User.D.Material(Out$, F, h, P, i) CALL Hit.any.key 'Select Output Results to a File or Printer DO LOCATE 12, 20: PRINT "Print, Save, Both or Quit ? ( Q )" LOCATE 12, 50: INPUT ””, R$ IF RS = "?" OR UCASE$(R$) = "HELP" OR UCASE$(R$) = "H" THEN CALL Help.P.File 'Call on Screen Help ELSE r‘“ EXIT DO END IF LOOP SELECT CASE LEFT$(UCASE$(R$), 1) 'Make Selection CASE "P" ”I DO CLS : LOCATE 12, 20: PRINT "1: LPT1 or 2: LPT2 ? ( 1 )" LOCATE 12, 43: INPUT "", P$ IF P$ = '"' OR UCASE$(P$) = "LPT1" OR P5 = ”1" THEN Out$ = "LPT1" CALL User.D.Material(Out$, F, h, P, i) EXIT DO , ELSEIF P$ = "LPT2" OR P$ = "2" THEN Out$ = "LPT2" CALL User.D.Material(Out$, F, h, P, i) EXIT DO ELSEIF P$ = "7" OR LEFT$(UCASE$(P$), 1) = "H" THEN CALL Help.P.FiIe END IF LOOP CASE "F”, ”S" DO CLS : LOCATE 12, 20: INPUT "File Name: ", F$ IF F$ = '"' THEN LOCATE 15, 10: PRINT "Save to File :THICK_A.OUT" Outs = "THICK_A.OU‘I" CALL User.D.Material(Out$, F, h, P, i) EXIT DO ELSEIF F$ = "?" OR LEFT$(UCASE$(F$), 1) = "H" THEN CALL Help.P.File ELSE Out$ = F$ CALL User.D.Material(Out$, F, h, P, i) EXIT DO 97 END IF LOOP CASE ”B" DO CLS : LOCATE 12, 20: PRINT "1: LPT1 or 2: LPT2 ? ( 1 )" LOCATE 12,43: INPUT P$ LOCATE 13, 20: INPUT ”File Name: ", F$ IF P$ = '"' OR UCASE$(P$) = ”LPT1" OR P$ = "1" THEN Out$ = "LPT1" CALL User.D.Material(Out$, F, h, P, i) EXIT DO ELSEIF P$ = "LPT2" OR P$ = ”2" THEN Out$ = ”LPT2" CALL User.D.Material(Out$, F, h, P, i) EXIT DO ELSEIF P$ = "?" OR LEFT$(UCASE$(P$), 1) = "H” THEN CALL Help.P.FiIe END IF IF F$ = '"' THEN LOCATE 15, 10: PRINT ”Save to File :THICK_A.OUT" Out$ = ”THICK_A.OUT" CALL User.D.Material(Out$, F, h, P, i) EXIT DO ELSEIF F$ = "?" OR LEFT$(UCASE$(F$), 1) = "H" THEN CALL Help.P.FiIe ELSE Out$ = F$ CALL User.D.Material(Out$, F, h, P, i) EXIT DO END IF CLS LOOP CASE ELSE CLS EXIT SUB END SELECT CLS END SUB SUB Input.D.Thickness '"' Input Data Screen for User Thickness Design CLS LM = 15 CP = LM + 22 98 DO CLS LOCATE 5 PRINT SPC(LM); "‘“‘ Data Input for User Design Thickness “‘"'" LOCATE 8 PRINT SPC(LM); "Protected G: g's." PRINT SPC(LM); "Drop Height: in" PRINT SPC(LM); "Product Weight: lbs” PRINT SPC(LM); ”Expected Thickness: in" D0 LOCATE 8, CP: INPUT '"', R$ IF R$ = '"' OR UCASE$(R$) = "Q” THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN F = R LOCATE 8, CP: PRINT USING ”####.##"; F EXIT DO END IF LOOP DO LOCATE 9, CP: INPUT '"', R$ IF R$ = '"' OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN h = R LOCATE 9, CP: PRINT USING " ###.##"; h EXIT DO END IF LOOP DO LOCATE 10, CP: INPUT '"‘, R$ IF R$ = '"' OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN P = R LOCATE 10, CP: PRINT USING " ###.##"; P EXIT DO END IF LOOP DO LOCATE 11, CP: INPUT '"', R$ IF R$ = '"' OR UCASE$(R$) = "Q” THEN CLS : EXIT SUB CALL Number.CK(R$, R) 99 IF R <> 0 THEN I = R LOCATE 11, CP: PRINT USING " ###.##"; t EXIT DO END IF LOOP LOCATE 20, 25: PRINT "Are These AII Correct? ( Y ) " LOCATE 20, 50: INPUT R$ IF UCASE$(R$) <> "N" THEN EXIT DO END IF LOOP Out$ = "SCRN:" CALL User.D.Thickness(Out$, F, h, P, t) CALL Hit.any.key 'Select Output Results to a File or Printer DO LOCATE 12, 20: PRINT "Print, Save, Both or Quit ? ( Q )" LOCATE 12, 50: INPUT '"', R$ IF R$ = "?” OR UCASE$(R$) = "HELP" OR UCASE$(R$) = "H" THEN CALL Help.P.File 'Call on Screen Help ELSE EXIT DO END IF LOOP SELECT CASE LEFT$(UCASE$(R$). 1) 'Make Selection CASE ”P" DO CLS : LOCATE 12, 20: PRINT "1: LPT1 or 2: LPT2 ? ( 1 )" LOCATE 12, 43: INPUT P$ IF P$ = "" OR UCASE$(P$) = ”LPT1" OR P$ = ”1" THEN Out$ = "LPT1" CALL User.D.Thickness(Out$, F, h, P, t) EXIT DO ELSEIF P$ = "LPT2” OR P$ = "2" THEN Out$ = "LPT2” CALL User.D.Thickness(Out$, F, h, P, t) EXIT DO ELSEIF P$ = "?" OR LEFT$(UCASE$(P$), 1) = "H” THEN CALL Help.P.FiIe END IF LOOP CASE "F", "S" 100 DO CLS : LOCATE 12, 20: INPUT ”File Name: ", F$ IF F$ = '"' THEN LOCATE 15, 10: PRINT ”Save to File : STRESS.OUT“ Out$ = "STRESS.OUT" CALL User.D.Thickness(Out$, F, h, P, t) EXIT DO ELSEIF F$ = "?” OR LEFT$(UCASE$(F$), 1) = "H" THEN CALL Help.P.FiIe ELSE Out$ = F$ CALL User.D.Thickness(Out$, F, h, P, t) EXIT DO END IF LOOP CASE "B" DO CLS : LOCATE 12, 20: PRINT "1: LPT1 or 2: LPT2 ? ( 1 )" LOCATE 12, 43: INPUT '"', P$ LOCATE 13, 20: INPUT "File Name: ", F$ IF P$ = '"' OR UCASE$(P$) = "LPT1" OR P$ = "1" THEN Out$ = "LPT1" CALL User.D.Thickness(Out$. F, h, P, t) EXIT DO ELSEIF P$ = "LPT2” OR P$ = ”2" THEN Out$ = "LPT2" CALL User.D.Thickness(Out$, F, h, P, t) EXIT DO ELSEIF P$ = ”7“ OR LEFT$(UCASE$(P$), 1) = "H" THEN CALL Help.P.FiIe END IF IF F$ = '"' THEN LOCATE 15, 10: PRINT ”Save to File : STRESS.OUT“ Out$ = ”STRESS.OUT” CALL User.D.Thickness(Out$, F, h, P, t) EXIT DO ELSEIF F$ = "?” OR LEFT$(UCASE$(F$), 1) = "H” THEN CALL Help.P.File ELSE Out$ = F$ CALL User.D.Thickness(Out$, F, h, P, t) EXIT DO END IF CLS 101 LOOP CASE ELSE CLS EXIT SUB END SELECT CLS END SUB SUB Input.SE.Data ‘“‘ Input Data Screen for Dynamic Stress-Energy Density Curve SHARED N, Name$(), Impact$(), Density$(), a(), b(), c(), d(), fs(). TextC%, BackC°/o CLS Sp°/o = 15 ROWo/o = 6 COIo/o = 37 DO FOR co% = 17 TO 21 LOCATE c0%, 14: PRINT CHR$( 186) LOCATE CO%, 68: PRINT CHR$(186) NEXT LOCATE 16, 14: PRINT STRING$(55, 205) LOCATE 17, 16: PRINT ”CUDE uses the following Stress-Energy Equationsz" LOCATE 19, 22: PRINT "G's = a*(s*h/t)"3 +b*(s*h/t)"2 + c*(s*h/t)+ d” LOCATE 20, 16: PRINT "orz" LOCATE 21, 22: PRINT ”G's = a*exp[b*s*h/t] + c" LOCATE 22, 14: PRINT STRING$(55, 205) LOCATE 16, 14: PRINT CHR$(201) LOCATE 22, 14: PRINT CHR$(200) LOCATE 16, 68: PRINT CHR$(187) LOCATE 22, 68: PRINT CHR$(188) COLOR BackC°/o, TextC°/o LOCATE 23, 22: PRINT " Please Enter the Values or Q to quit. " COLOR TextC%, BackC°/o LOCATE 3 PRINT SPC(Sp%); "*“*** Data Input Screen for Stress-Energy Curve “’“‘" LOCATE Row% PRINT SPC(Sp%); "Cushion Name: PRINT SPC(Sp%); ”lmpact(s): TAB(62); "1st/2-5" 102 PRINT SPC(Sp%); "Parameter a: PRINT SPC(Sp%); ”Parameter b: PRINT SPC(Sp%); "Parameter c: PRINT SPC(Sp%); "Parameter d: PRINT SPC(Sp%); "Final Stress TAB(62); "psi" PRINT SPC(Sp%); ”Density: TAB(62); ”pcf“ DO LOCATE Row%, Col%: INPUT "", R$ IF UCASE$(R$) = "Q" THEN CLS : EXIT SUB IF R$ <> '"' THEN Name$(N + 1) = R$ LOCATE Row%, Col%: PRINT " "; Name$(N + 1); TAB(61); N + 1; "#" ROWo/o = ROWo/o + I EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF UCASE$(R$) = "Q" THEN CLS : EXIT SUB IF R$ <> '"' THEN Impact$(N + 1) = R$ LOCATE Row%, Col%: PRINT " ”; Impact$(N + 1) Row% = Row% + 1 EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF UCASE$(R$) = "Q" THEN CLS : EXIT SUB IF R$ <> ‘"' THEN Density$(N + 1) = R$ LOCATE Row%, Col%: PRINT " "; Density$(N + 1) Row% = Row% + 1 EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT R$ IF UCASE$IR$) = "Q" THEN CLS : EXIT SUB IF R$ <> '"' AND R$ <> "0" AND LEFT$(R$, 1) <> THEN CALL Number.CK(R$, R) I 103 MN+U=R LOCATE Row%, Col%: PRINT USING " #####.#####"; a(N + 1) HOWo/o = ROWo/o + I EXIT DO ELSEIF LEFT$(R$, 1) = THEN R$ = MID$(R$, 2) CALL Number.CK(R$, R) a(N + 1) = -R LOCATE Row%, Col%: PRINT USING " #####.#####"; a(N + 1) Row% = Row% + 1 EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF UCASE$(R$) = "Q" THEN CLS : EXIT SUB IF R$ <> '"' AND RS <> "0" AND LEFT $(R$, 1) <> THEN CALL Number.CK(R$, R) b(N + 1) = R LOCATE Row%, Col%: PRINT USING " #####.#####"; b(N + 1) Row% = Row% + 1 EXIT DO ELSEIF LEFT$IR$, 1) = "-" THEN R$ = MID$(R$, 2) CALL Number.CK(R$, R) b(N + 1) = -R LOCATE Row%, Col%: PRINT USING " #####.#####"; b(N + 1) ROWO/o = ROWo/o ‘1' I EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF UCASE$IR$) = "Q" THEN CLS I EXIT SUB IF R$ <> '"' AND LEFT$(R$, 1) <> "-" THEN CALL Number.CK(R$, R) C(N + 1) = R LOCATE Row%, Col%: PRINT USING " #####.#####"; C(N + 1) ROW°/o = ROWo/o '1' I EXIT DO ELSEIF LEFT$(R$, 1) = "-" THEN R$ = MID$(R$, 2) CALL Number.CK(R$, R) 104 c(N + 1) = -R LOCATE Row%, Col%: PRINT USING " #####.#####"; C(N + 1) ROWo/o = ROWo/o + I EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF UCASE$(R$) = "Q" THEN CLS : EXIT SUB IF R$ <> '"' AND LEFT$(R$, 1) <> "-" THEN CALL Number.CK(R$, R) d(N + 1) = R LOCATE Row%, Col%: PRINT USING " #####.#####"; d(N + 1) ROWo/o = ROWo/o 1’ I EXIT DO ELSEIF LEFT $(R$, 1) = "-" THEN RS = MID$(R$, 2) CALL Number.CK(R$, R) d(N + 1) = -R LOCATE Row%, Col%: PRINT USING " ##########'; d(N + 1) Row% = Row% + 1 EXIT DO END IF LOOP DO LOCATE Row%, Col%: INPUT '"‘, R$ IF UCASE$(R$) = "Q" THEN CLS : EXIT SUB IF R$ <> '"' THEN CALL Number.CK(R$, R) IF R <> 0 THEN qu+H=R LOCATE Row%, Col%: PRINT USING " #####.#####"; fs(N + 1) ROWo/o = 6 EXIT DO END IF END IF LOOP LOCATE 17, 15: PRINT " " LOCATE 19, 20: PRINT " " LOCATE 20, 15: PRINT " " LOCATE 22, 15: PRINT " " 105 LOCATE 17, 25: PRINT "Are These AII Correct? ( Y) " LOCATE 19, 25: PRINT " " LOCATE 21, 28: PRINT " " LOCATE 17, 50: INPUT '"', R$ IF UCASE$(R$) = "Q” THEN CLS : EXIT SUB IF UCASE$(R$) <> "N" THEN LOCATE 20, 25: PRINT " " N=N+1 EXIT DO END IF CLS LOOP CLS LOCATE 12, 20: PRINT ”Add Them To Cushion Data File ? ( Y )" LOCATE 12, 54: INPUT "", R$ IF UCASE$(R$) = "Y" OR R$ = '"' THEN OPEN "CUDE.DAT“ FOR APPEND AS #1 WRITE #1, Name$(N), Impact$(N), Density$(N), a(N), b(N), c(N), d(N), fs(N) CLOSE #1 END IF CLS END SUB SUB lnput.Spe.Curve '*** Input Data Screen for Spesific Thickness Cushion Curves SHARED N CLS Sp% = 15 ROWo/o = 8 COIo/o = 40 CALL View.Data.FiIe DO CLS LOCATE 3 PRINT SPC(Sp%); "****** Data Input Screen for Cushion Curves ”‘”‘" LOCATE Row% PRINT SPC(Sp%); ”Material (#): #" PRINT SPC(Sp%); "Thickness: in" DD LOCATE Row%, Col%: INPUT R$ IF R$ = '"' OR UCASE$(R$) = "Q” THEN CLS : EXIT SUB CALL Number.CK(R$, R) 106 IF R >= 1 AND R <= N THEN i = R LOCATE Row%, CoI°/o PRINT Name$(i); " "; Impact$(i); " lmpact(s)"; i; "If" ROWo/o = ROWo/o ‘I’ I EXIT DO ELSE LOCATE 22, 15 PRINT "The Material is not available, Try One More Time." BEEP: SLEEP LOCATE 22, 15 PRINT " " END IF LOOP DO LOCATE Row%, Col%: INPUT '"', R$ IF R$ = '"' OR UCASE$(R$) = "Q” THEN CLS : EXIT SUB CALL Number.CK(R$, R) IF R <> 0 THEN t = R LOCATE Row%, Col%: PRINT USING " ##1##"; t ROWo/o = ROWo/o ‘1' I EXIT DO END IF LOOP LOCATE 20, 25: PRINT ”Are These All Correct? ( Y ) " LOCATE 20, 50: INPUT '"', R$ IF UCASE$IR$) <> ”N" THEN EXIT DO END IF LOCATE 20, 25: PRINT " " LOOP CALL Curve.Spe.T(i, t) CLS END SUB SUB lnput.Std.Curve '*** Input Data for PIoting Cushioning Curve SHARED N CLS Sp°/o = I5 ROWo/o = 8 107 COIo/o = 40 CALL View.Data.FiIe DO CLS LOCATE 3 PRINT SPC(Sp%); "****** Data Input Screen for Cushion Curves ******" LOCATE Row% PRINT SPC(Sp%); ”Material (#): #" DO LOCATE Row%, Col%: INPUT "", R$ IF R$ = '"‘ OR UCASE$IR$) = "Q” THEN CLS : EXIT SUB CALL Number.CK(R$, R) IFR>OANDR<=NTHEN i = R LOCATE Row%, Col% PRINT Name$(i); " "; Impact$(i); " lmpact(s)"; i; "#" ROWo/o = ROWo/o + I EXIT DO ELSE LOCATE 22, 15 PRINT "The Material is not available, Try One More TIme." BEEP: SLEEP LOCATE 22, 15 PRINT " " END IF LOOP LOCATE 20, 25: PRINT "Are These AII Correct? ( Y ) " LOCATE 20, 50: INPUT '"', R$ IF UCASE$(R$) <> "N" THEN EXIT DO END IF LOCATE 20, 25: PRINT " " LOOP CALL Curves.Graphic(i) END SUB SUB List. File ' *** List Files in Working Directory CLS SHELL "dir/p" CALL Hit.any.key CLS 108 END SUB SUB Menu.Compu.Design '"' Computer Cushion Design Menu CLS DO LOCATE 4, 20: PRINT "‘"'" Computer Design Menu "‘"'" LOCATE 7, 20: PRINT "1 One Face Cushion Design” LOCATE 8, 20: PRINT ”2 Six Face Cushion Design" LOCATE 9, 20: PRINT "3 Help" LOCATE 12, 20: PRINT ”9 Quit" LOCATE 15, 20: PRINT ”Enter Your Selection ( Q )" LOCATE 15, 43: INPUT s$ SELECT CASE UCASE$(s$) CASE "1", "O" CALL lnput.1 .Design CASE "2", "S" CALL lnput.6.Design CASE ”3", "H”, "?" CALL Help.CUDE CASE "9", "Q", '"' CLS : EXIT DO CASE ELSE CALL Case.Else END SELECT LOOP END SUB SUB Menu.Generate.Data '"‘ Generate Cushion Date Menu CLS DO LOCATE 2, 20: PRINT "**“*** Cushion Data Menu “‘“'" LOCATE 6, 20: PRINT "1 Cushion Curves" LOCATE 7, 20: PRINT "2 Specific Thickness Curves" LOCATE 8, 20: PRINT "3 Input Stress-Energy Data” LOCATE 9, 20: PRINT "4 Help" LOCATE 12, 20: PRINT ”9 Quit" 109 LOCATE 15, 20: PRINT "Enter Your Selection ( Q )" LOCATE 15, 43: INPUT '"', s$ SELECT CASE UCASE$(S$) CASE "1", "C" CALL lnput.Std.Curve CASE ”2", ”8" CALL lnput.Spe.Curve CASE "3", "I" CALL Input.SE.Data CASE "5", "H” CALL Help.CUDE CASE ”9", "Q", "E", .... CLS : EXIT DO CASE ELSE CALL Case.Else END SELECT LOOP END SUB SUB Menu.Option ' Option Control Manu CLS DO LOCATE 2, 20: PRINT "****** Option Menu "‘“'" LOCATE 5, 20: PRINT "1 Change Screen Color" LOCATE 6, 20: PRINT "2 DOS Shell" LOCATE 7, 20: PRINT ”3 List Files" LOCATE 8, 20: PRINT "4 Infor LOCATE 9, 20: PRINT ”5 Help" LOCATE 12, 20: PRINT "9 Quit" LOCATE 15, 20: PRINT ”Enter Your Selection ( Q )" LOCATE 15, 43: INPUT s$ SELECT CASE UCASE$(S$) CASE ”1", "0" CALL Screen.CoIor CASE "2", "D” CALL DOS CASE ”3", "I", "L" CALL List.FiIe CASE "4", "I" CALL Info 110 CASE ”5", "H", "?” CALL Help.CUDE CASE ”9", "Q", ”E", om CLS : EXIT DO CASE ELSE CALL Case.Else END SELECT LOOP END SUB SUB Menu.User.Design '*** User Cushion Design Menu CLS DO LOCATE 2, 20: PRINT "‘”'“ User Design Menu "‘"'" LOCATE 5, 20: PRINT "1 Material Design" LOCATE 6, 20: PRINT ”2 Thickness Design” LOCATE 7, 20: PRINT "3 Bearing Area Design” LOCATE 8, 20: PRINT "4 All of Above Parameters" LOCATE 9, 20: PRINT "5 Help" LOCATE 12, 20: PRINT ”9 Quit" LOCATE 15, 20: PRINT "Enter Your Selection ( Q )" LOCATE 15,43: INPUT '"', s$ SELECT CASE UCASE$(S$) CASE "1", "M" CALL Input.D.MateriaI CASE "2", "T" CALL Input.D.Thickness CASE ”3", "B" CALL Input.D.Area CASE "4", "A" CALL Input.D.AII CASE "5", "H", ”?" CALL Help.CUDE CASE '9", "Q”, ”E”, I'll CLS : EXIT DO CASE ELSE CALL Case.Else END SELECT LOOP 111 END SUB SUB Menu.View.Data ' Submenu for view available cuahion materials CLS DO CLS LOCATE 5, 20: PRINT '"'" View Material Menu ***" LOCATE 7, 20: PRINT "1 Brief View" LOCATE 8, 20: PRINT "2 Detail View" LOCATE 9, 20: PRINT "3 Help" LOCATE 12, 20: PRINT "9 Quit" LOCATE 15, 20: PRINT ”Enter Your Selection ( Q )” LOCATE 15, 43: INPUT "", s$ SELECT CASE UCASE$(S$) CASE "1", "B" CALL View.Data.FiIe CASE "2", ”D" CALL Detail.0ata CASE "3", "H", "?" CALL Help.CUDE CASE ”9", no", "E", rm CLS : EXIT DO CASE ELSE CALL Case.Else END SELECT LOOP END SUB SUB message (F, h) ' ** Output Low G Message LOCATE 20, 20: PRINT ”Expected Too Low G, No Solution!" LOCATE 21, 20: PRINT " G="; F; " Drop Height= "; h BEEP: SLEEP LOCATE 20, 20: PRINT " " LOCATE 21, 20: PRINT " " END SUB SUB Number.CK (RS, R) SHARED TextC%, BackC°/o '*** Check Numbers 112 R = 0 IF ASC(R$) = 47 OR ASC(R$) > 57 OR ASC(R$) < 46 THEN LOCATE 23, 30: COLOR 4, 7 BEEP: BEEP PRINT " A Number, Please! " COLOR TGXICo/o, BackC% ELSE LOCATE 23, 30 PRINT " " R = VAL(R$) 'Convert to a Number END IF END SUB SUB Pause SHARED TextC%, BackC% '*** Pause the screen LOCATE 25, 25 COLOR 0, 7 PRINT " Hit any key to continue! "; DO: LOOP UNTIL INKEY$ <> '"' COLOR TextC%, BackC% CLS LOCATE 1, 30 PRINT " Continued " PRINT END SUB SUB Screen.CoIor '"’ Changes Screen Color or Other Settings SHARED TextC%, BackC% CLS CALL Show.Color LOCATE 3, 45: PRINT ”Current Text Color: "; TextC°/o LOCATE 4, 45: PRINT "Current Background Color: "; BackC% LOCATE 19, 45: PRINT "ENTER or F9 Keeps Current Colors." DO LOCATE 10, 45: INPUT "Text Color: ", R$ IF R$ = '"' OR UCASE$(R$) = "Q" THEN CLS : EXIT SUB IF ASC(R$) > 57 OR ASC(R$) < 48 THEN LOCATE 18, 45: COLOR 4, 7 BEEP: BEEP: PRINT " A Number, Please! " COLOR TextC%, BackC% ELSE t% = VAL(R$) LOCATE 10, 56: PRINT t°/o 113 EXIT DO END IF LOOP DO LOCATE 11, 45: INPUT "Background Color: ", R$ IF R$ = '"' OR UCASE$(R$) = "Q” THEN bo/o = BackC% EXIT DO END IF IF ASC(R$) > 57 OR ASC(R$) < 48 THEN LOCATE 18, 45: COLOR 4, 7 BEEP: BEEP: PRINT " A Number, Please! " COLOR TextC%, BackC% ELSE b% = VAL(R$) LOCATE 11, 62: PRINT b% EXIT DO END IF LOOP IF “70 = bo/o THEN CLS : LOCATE 12, 10 PRINT ”Background and Text Color are Same I I Refuse Setting them." TextC°/e = 7: BackC% = 0 ' Back to Default Color settings CALL Hit.any.key CLS EXIT SUB ELSE TOXICo/o = to/oi BackC% = Do/o COLOR TOXICO/o, BflCkCo/o END IF CALL Hit.any.key CLS LOCATE 12, 20: PRINT ”Save Changes to Disk? ( N )" LOCATE 12, 44: INPUT '"', R$ IF UCASE$(R$) <> "Y" THEN CLS EXIT SUB ELSE OPEN "CUDE.!NI" FOR OUTPUT AS #1 WRITE #1, TextC%, BackC% CLOSE #1 CLS END IF END SUB 114 SUB Show.Color ”'“' Display Screen Colors SHARED TextC%, BackC% SCREEN 0: WIDTH 80: CLS COLOR BackC%, TextC% LOCATE 2, 5: PRINT" Available Colors " Col = 5: Row = 4 FOR c% = 0 TO 15 LOCATE Row, 2 COLOR Co/o, I, O LOCATE Row, Col: PRINT STRING$(20, 219) LOCATE Row, 30: COLOR TextC%, BackC%: PRINT 0%; Row = Row + 1 NEXT CO/o COLOR TextC%, BackC% END SUB SUB Solve.1.Face (Out$, F, h, P) ' *** Select Cushion Material According to Minimum Thickness ' or Minimum Volume SHARED N, L, W, Name$(), Impact$()r Density$(), a(), b(), c(), d(), fs() SHARED Mt(), MtA(), Mvt(), MvA() CLS M = 1 'Screen Line Number G = F 'Input Fragility G Print.note = O 'Switcher for Printing a Note, off ds = .05 'Prompt Computer is Working on Printing Job or File IF Out$ <> "SCRNz" THEN CLS : LOCATE 12, 15: PRINT "I am working ..." OPEN Out$ FOR OUTPUT AS #1 PRINT #1, : PRINT #1, :PRINT #1, :PRINT #1, :PRINT #1, : PRINT #1, PRINT #1, SPC(12); "CUDE Report For One Face Design: Thickness & Materials” PRINT #1, PRINT #1, SPC(23); ”Protected G: "; F; " g's" PRINT #1, SPC(23); "Drop Height: "; h; " in" PRINT #1, SPC(23); "Product Weight: "; P; " lbs” PRINT #1, SPC(23); "Face Area;"; L; "x"; W; ": "; L * W; 'in2" PRINT #1, SPC(10); STRING$(65, 61) PRINT #1, SPC(40); "Minimum Thickness Minimum Volume” PRINT #1, SPC(12); "No. Material lmpact(s)"; 115 PRINT #1, SPC(3);”Thick. Area Thick. Area" PRINT #1, SPC(43);"in in2 in in2" PRINT #1, SPC(11); STRING$(63, 45) FOR j = 1 TO N 'Loop Between Materials Flag = 0 'Reset "Flag" for Minimum Mint = 0 FOR 5 = P/ (L * W) TO fs(j) STEP ds 'Loop from Minimum 5 to fs(j) IF d(j) = 0 THEN 'Switch Between Models IF G * s > c(j) THEN 'Check Negative Number t= b(j) * h * s / (LOGIG * S - 6(1)) - LOGIaII))) END IF ELSE 'Solve 3 order polynomial equation numerically PG = 5 'Set precision G = 5 dt = .05 'Set loop step oft ft = 5 'Final Thickness IF Mint = 0 THEN FOR t = 1 TO ft STEP dt 'Thickness range: 1-5 in y=G-(a(j)*(s*h/t)"3+b(j)*(s‘h/t)"2+c(j)*(s*h/t)+ d(I)) / 8 IF ABS(y) < PG THEN Mint =t EXIT FOR ELSE Mint = 0 END IF NEXTt END IF IF Mint = 0 THEN t = -1 'No solution in current precisstion ELSE t= Mint END IF Mint = 0 END IF IF t = -1 THEN Mt(j) = -1 'Assign -1 to no solution ELSEIF t >= 0 THEN 'Thickness should > 0 116 IF Flag = 0 THEN Mv = t * P / s 'Assign Minimum Values Mt(j) = t: Mvt(j) = t Ms = s: Mvs = s MtA(j) = P / Ms: MvA(j) = P / Mvs Flag = 1 END IF IF Mt(j) > t THEN 'Find Minimum Thickness Mt(j) = t: Ms = s MtA(j) = P / Ms END IF v=t*P/s IF Mv > v THEN 'Find Minimum Volume, Mv = v: Mvt(j) = t ‘Thichness, Area Mvs = s: MvA(j) = P / Mvs END IF END IF NEXT 5 NEXT] Find.best = -1 FOR j = 1 TO N IF Find.best = -1 AND Mt(j) <> -1 THEN 'Assign Initial Value Best.T = Mt(j) best.no = j Find.best = 0 END IF IF Best.T > Mt(j) AND Mt(j) <> -1 THEN 'Find Best Material Best.T = Mt(j): best.no = j END IF IF M = 10 AND Out$ = "SCRNz" THEN M = -6: CALL Pause 'Pause Screen M = M + 1 IF Mt(j) = -1 THEN PRINT #1, TAB(12); USING "##"; j; PRINT #1, TAB(16); Name$(j); TAB(35); Impact$(1); PRINT #1, TAB(38); '1 titti"; " itittfl; fl *itittfl; fl ttttttfl Print.note = -1 ELSE PRINT #1, TAB(12); USING "##"; j; PRINT #1, TAB(16); Name$(i); TAB(35); Impact$(i); PRINT #1, TAB(38); USING " ##1##"; MG): MtA(j); Mvt(j); MvA(j) END IF NEXT] 117 PRINT #1, PRINT #1, SPC(12); "The Best Cushion Materialz": PRINT #1, PRINT #1, TAB(12); USING "##"; best.no; PRINT #1, TAB(16); Name$(best.no); TAB(35); Impact$(best.no); PRINT #1, TAB(38); USING " ###.##"; Mt(best.no); MtA(best.no); Mvt(best.no); MvA(best.no) PRINT #1, SPC(10); STRING$(65, 61) PRINT #1, SPC(45); TIMES; SPC(10); DATES: PRINT #1, IF Print.note = -1 THEN PRINT #1, SPC(12); " "*"z CUDE can not find solution for this material." END IF CLOSE #1 IF Out$ = "SCRN:" THEN CALL Hit.any.key END SUB SUB Solve.6.Face.FiIe (OutS, Face%, h, P) 'Save 6 Face Design Results to File SHARED L, W, d, G(), a(), b(), c(), Name$(). lmpact$(). DensitySO, N SHARED Mt(), MtA(), Mvt(), MvA() CLS ds = .05 'Prompt Computer is Working on Printing Job or File LOCATE 12, 15: PRINT "I am working ..." FOR 0% = 1 TO Face% OPEN Out$ FOR APPEND AS #1 PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, PRINT #1, SPC(15); "CUDE Report”; 0%; ": Computer Designed Six Faces" PRINT #1, SPC(15); "Bearing Area & Minimum Thickness in Available Materials” PRINT #1, IF 0% = 1 THEN PRINT #1, SPC(23); ”Top, Area: "; L; "X"; W; “="; L * W; ”in2" ELSEIF o% = 2 THEN PRINT #1, SPC(23); ”Bottom, Areaz”; L; "X”; W; "="; L " W; ”in2" ELSEIF o% = 3 THEN PRINT #1, SPC(23); "Front, Area: "; L; "X”; d; ”="; L * d; ”in2" ELSEIF o% = 4 THEN PRINT #1, SPC(23); ”Back, Area: "; L; ”X"; d; "="; L * d; ”in2" ELSEIF o% = 5 THEN 118 PRINT #1, SPC(23); "Left, Area: "; W; "X"; d; "="; W * d; "in2" ELSE PRINT #1, SPC(23); "Right, Area: "; W; "X"; d; "=”; W * d; "in2" END IF PRINT #1, SPC(23); "Protected G in the Face: "; G(o%); " G's" PRINT #1, SPC(23); "Drop Height: ”; h; " in” PRINT #1, SPC(23); "Product Weight: ”; P; " lbs” PRINT #1, SPC(23); ”L X W X D:”; L; ”x"; W; ”x"; d; " ="; L * W * d; ”in3" PRINT #1, SPC(8); STRINGS(67, 61) PRINT #1, SPC(40); "Minimum Thickness Minimum Volume" PRINT #1, SPC(11); "No. Material lmpact(s)"; PRINT #1, SPC(3); "Thick. Area Thick. Area" PRINT #1, SPC(43); "in in2 in in2" PRINT #1, SPC(10); STRING$(63, 45) Flag = 0 Print.note = 0 'Switcher for Printing a Note, off M = 1 'Screen Number FOR j = 1 TO N . ‘Loop Between Materials Flag = 0 'Reset "Flag” for Minimum Mint = 0 FOR 5 = P / (L " W) TO fs(j) STEP ds 'Loop from Minimum 5 to fs(j) IF d(j) = 0 THEN 'Switch Between Models IF G(o°/o) * S > c(j) THEN 'Check Negative Number I: b(j) * h * s / (LOG(G(0%) * S - CID) - LOGIaII))) END IF ELSE 'Solve 3 order polynomial equation numerically PG = 5 'Set precision G = 5 dt = .05 'Set loop step oft ft = 5 'Final Thickness IF Mint = 0 THEN FOR t = 1 TO ft STEP dt 'Thickness range: 1-5 in y=G(o%)-(a(j)*(s‘h/t)"3+b(j)*(s‘h/t)"2+c(j)*(s*h/t) +dII))/S IF ABS(y) < PG THEN Mint = t EXIT FOR ELSE Mint = 0 119 END IF NEXT t END IF IF Mint = 0 THEN = -1 'No solution in current precisstion ELSE t = Mint END IF Mint = 0 END IF IF t = -1 THEN Mt(j) = -1 'Assign -1 to no solution ELSEIF t >= 0 THEN 'Thickness should > 0 IF Flag = 0 THEN Mv = t * P / s 'Assign Minimum Values Mt(j) = t: Mvt(j) =t Ms = s: Mvs = s MtA(j) = P / Ms: MvA(j) = P / Mvs Flag = 1 END IF IF Mt(j) > t THEN 'Find Minimum Thickness Mt(j) = t: Ms = s MtA(j) = P / Ms END IF v=t*P/s IF Mv > v THEN 'Find Minimum Volume, Mv = v: Mvt(j) = t 'Thichness, Area Mvs = s: MvA(j) = P / Mvs END IF END IF NEXTs NEXT j Find.best = -1 FOR j = 1 TO N IF Find.best = -1 AND Mt(j) <> -1 THEN 'Assign Initial Value Best.T = Mt(j) best.no =j Find.best = 0 END IF IF Best.T > Mt(j) AND Mt(j) <> -1 THEN 'Find Best Material 120 Best.T = Mt(j): best.no = j END IF IF Mt(j) = -1 THEN PRINT #1, TAB(IO); USING "##"; j; PRINT #1, TAB(14); Name$(i); TAB(35); Impact$(i); PRINT #1, TAB(38); n ttitt"; ll itiii"; II tittttfl; N ******N Print.note = -1 ELSE PRINT #1, TAB(10); USING ”#4:"; i; PRINT #1, TAB(14); Name$(I): TAB(35); Impact$(1); PRINT #1, TAB(38); USING " ###.##"; Mt(j); MtA(j); Mvt(j); MvA(j) END IF NEXTj PRINT #1 , PRINT #1, SPC(12); "The Best Cushion Materialz": PRINT #1, I PRINT #1, TAB(IO); USING "##"; best.no; PRINT #1, TAB(14); Name$(best.no); TAB(35); Impact$(best.no); PRINT #1, TAB(38); USING " ###.##"; Mt(best.no); MtA(best.no); Mvt(best.no); MvA(best.no) PRINT #1, SPC(8); STRINGS(67, 61) PRINT #1, SPC(45); TIMES; SPC(10); DATES: PRINT #1, IF Print.note = -1 THEN PRINT #1, SPC(12); " ‘“‘": CUDE can not find solution for this material." END IF PRINT #1, : PRINT #1, : PRINT #1. CLOSE #1 NEXT 0% END SUB SUB Solve.6.Faces (Out$, Face%, h, P) 'Select Material For 6 Face Design SHARED L, W, d, G(), a(), b(), c(), Name$(). Impact$(). Density$(), N SHARED Mt(), MtA(), Mvt(), MvA() CLS ds = .05 FOR 0% = 1 TO Face% OPEN Out$ FOR OUTPUT AS #1 PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, PRINT #1, SPC(15); "CUDE Report"; 0%; ": Computer Designed Six Faces" 121 PRINT #1, SPC( 15); "Bearing Area & Minimum Thickness in available Materials" PRINT #1, IF 0% = 1 THEN PRINT #1, SPC(23); "Top, Area: "; L; "X"; W; "="; L " W; "in2" ELSEIF o% = 2 THEN PRINT #1, SPC(23); ”Bottom, Areaz"; L; "X"; W; "="; L * W; "in2" ELSEIF o% = 3 THEN PRINT #1, SPC(23); "Front, Area: "; L; "X"; (1; "="; L * d; "in2" ELSEIF o% = 4 THEN PRINT #1, SPC(23); "Back, Area: "; L; "X"; d; "="; L * d; "in2" ELSEIF 0% = 5 THEN PRINT #1, SPC(23); "Left, Area: "; W; ”X"; d; "="; W * d; "in2" ELSE ’ PRINT #1, SPC(23); "Right, Area: "; W; ”X"; (I; "="; W * d; "in2" END IF PRINT #1, SPC(23); "Protected G in the Face: "; G(o%); " G's" PRINT #1, SPC(23); "Drop Height: "; h; " in" PRINT #1, SPC(23); "Product Weight: "; P; " lbs” PRINT #1, SPC(23); "L X W X D:”; L; "x"; W; "x"; d; " ="; L * W * d; "in3" PRINT #1, SPC(8); STRINGS(67, 205) PRINT #1, SPC(40); "Minimum Thickness Minimum Volume” PRINT #1, SPC(11); "No. Material lmpact(s)"; PRINT #1, SPC(3); "Thick. Area Thick. Area" PRINT #1, SPC(43); "in in2 in in2" PRINT #1, SPC(10); STRING$(63, 196) Flag = O Print.note = 0 'Switcher for Printing a Note, off M = 1 'Screen Number FOR j = 1 TO N 'Loop Between Materials Flag = 0 f 'Reset "Flag” for Minimum Mint = 0 FOR s = P/ (L * W) TO fs(j) STEP ds 'Loop from Minimum s to fs(j) IF d(j) = 0 THEN 'Switch Between Models IF G(o%) * s > c(j) THEN 'Check Negative Number t = b(j) * h * s / (LOG(G(o%) * s - c(j)) - LOG(a(j))) END IF ELSE 'Solve 3 order polynomial equation numerically PG = 5 'Set precision G = 5 122 dt = .05 'Set loop step oft ft = 5 'Final Thickness IF Mint = 0 THEN FOR t = 1 TO ft STEP dt 'Thickness range: 1-5 in y=G(o°/o)-(a(j)*(s*h/t)“3+b(j)*(s’h/t)"2+c(j)*(s*h/t) +d(I))/S IF ABS(y) < PG THEN Mint = t EXIT FOR ELSE Mint = 0 END IF NEXTt END IF IF Mint = OTHEN t= -1 . 'No solution in current precisstion ELSE t = Mint END IF Mint = 0 END IF IF t = -1 THEN Mt(j) = -1 'Assign -1 to no solution ELSEIF t >= 0 THEN 'Thickness should > 0 IF Flag = 0 THEN Mv = t * P / s 'Assign Minimum Values Mt(j) = t: Mvt(j) =t Ms = s: Mvs = s MtA(j) = P / Ms: MvA(j) = P / Mvs Fug=1 END IF IF Mt(j) > t THEN 'Find Minimum Thickness Mt(j) = t: Ms = s MtA(j) = P / Ms END IF v=t*P/s IF Mv > v THEN 'Find Minimum Volume, Mv = v: Mvt(j) = t 'Thichness, Area Mvs = s: MvA(j) = P / Mvs END IF 123 END IF NEXTs NEXT j Find.best = -1 FORj = 1 TO N IF Find.best = -1 AND Mt(j) <> -1 THEN 'Assign Initial Value Best.T = Mt(j) best.no = j Find.best = 0 END IF IF Best.T > Mt(j) AND Mt(j) <> -1 THEN 'Find Best Material Best.T = Mt(j): best.no = j END IF IF M = 10 THEN M = -5: CALL Pause'Pause Screen M=M+1 IF Mt(j) = -1 THEN PRINT #1, TAB(10); USING "##“; j; PRINT #1, TAB( 14); Name$(I); TAB(35); Impact$(j); PRINT #1, TAB(38); 0' *ttti"; '1 tittt”; '1 *tttttl; I *titttfl Print.note = -1 ELSE PRINT #1, TAB(10); USING "##"; j; PRINT #1, TAB(14); Name$(i); TAB(35); Impact$(j); PRINT #1, TAB(38); USING " ###.##"; Mt(j); MtA(j); Mvt(j); MvA(j) END IF NEXTj PRINT #1, PRINT #1, SPC(12); "The Best Cushion Materialz": PRINT #1, PRINT #1, TAB(10); USING ”##"; best.no; PRINT #1, TAB(14); Name$(best.no); TAB(35); Impact$(best.no); PRINT #1, TAB(38); USING " ###.##"; Mt(best.no); MtA(best.no); Mvt(best.no); MvA(best.no) PRINT #1, SPC(8); STRINGS(67, 205) PRINT #1, SPC(45); TIMES; SPC(10); DATES: PRINT #1, IF Print.note = -1 THEN PRINT #1, SPC(12); " *****: CUDE can not find solution for this material.” END IF PRINT #1, : PRINT #1, : PRINT #1, CLOSE #1 CALL Hit.any.key NEXT 00/0 END SUB 124 FUNCTION User.D.AIl.exp (W, h, t, Area, i) '“' User design all cushion parameters using Exponential Model SHARED a(), b(), c() IF Area <= 0 OR W <= 0 THEN 'Check Area<=0 EXIT FUNCTION END IF s = W / Area User.D.AIl.exp = (a(i) * EXP(b(i) * s * h / t) + c(i)) / 5 END FUNCTION FUNCTION User.D.AII.pol! (W, h, t, Area, i) '“' User design all cushion parameters using Polynomial Model IF Area <= 0 OR W <= 0 THEN 'Check Area<=0 EXIT FUNCTION END IF 5 = W / Area User.D.AIl.poI=(a(i)*(h's/t)"3+b(i)*(h's/t)"2+c(i)*h's/t+d(i))/ 8 END FUNCTION SUB User.D.Area (Out$, F, h, P, Area) '*** Solve Materials & Thickness for User Design Area SHARED N, t(), Name$l), Impact$(). DensityS(), a(), b(), c(), d() CLS s = P / Area G = F 'Prompt Computer is Working on Printing Job or File IF Out$ <> "SCRN:" THEN CLS : LOCATE 12, 15: PRINT "I am working OPEN Out$ FOR OUTPUT AS #1 PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, PRINT #1, SPC(16); ”CUDE Report: Thickness & G in Available Materials " PRINT #1, PRINT #1, SPC(20); "User Designed Bearing Areaz"; TAB(50); Area; TAB(58); "Sq.in " PRINT #1, SPC(20); "Static stressz"; TAB(50); PRINT #1, USING " #.##"; s; PRINT #1, TAB(58); "psi” PRINT #1, SPC(20); ”Drop Heightz"; TAB(50); h; TAB(58); ”in" 125 PRINT #1, SPC(20); "Protected G2"; TAB(50); F; TAB(58); "G's" PRINT #1, SPC(20); ”Product Weight"; TAB(50); P; TAB(58); "lbs" PRINT #1, SPC(15); STRING$(54, 61) PRINT #1, SPC(17); ”No."; SPC(5); "Material lmpact(s) "; PRINT #1, SPC(6); "Thickness" PRINT #1, SPC(60); ”in" PRINT #1, SPC(16); STRINGS(52, 45) j = 1 'Control Screen Page note% = 0 'switch print notes is off Flag% = 1 'Switch is on for initial Minimum Thickness FOR i = 1 TO N 'Loop in All available Materials IF d(i) = 0 THEN IF G ’ s - c(i) = a(i) THEN t(i) = -1 'Filt out dividing 0, assign -1 tot ELSE 'Solve thickness t(i) = b(i) * h * s / (LOG(G * s - c(i)) - LOG(a(I))) END IF ELSE 'Solve 3 order polynomial equation numerically PG = 2 'Set precision G = 2 dt = .01 'Set loop step oft ft = 5 'Final Thickness FORt=1TOftSTEPdt 'Thickness range: O.1"-5" y=G-(a(i)*(s*h/t)"3+b(i)*(s*h/t)"2+c(i)*(s*h/t)+d(i))/s IF ABS(y) < PG THEN Mint = t END IF NEXTt IF Mint = 0 THEN t(i) = -1 ELSE t(i) = Mint END IF Mint = 0 END IF IF Out$ = "SCRN:" AND j = 13 THEN j = -8: CALL Pause 126 PRINT #1, SPC(16); PRINT #1, USING "###"; i; PRINT #1, TAB(25); Name$(i); TAB(45); Impact$(i); IF t(i) > 0 THEN PRINT #1, TAB(57); USING " ####.##"; t(i) IF Flag% = 1 THEN Min.T = t(i): No = i: Flag% = 0 END IF IF Min.T > t(i) THEN Min.T = t(i): No = i ELSE PRINT #1, TAB(57); " ‘"‘ " note% = 'switch is on for nosoulution message END IF I =I + 1 NEXT IF No <> 0 THEN PRINT #1, PRINT #1, SPC( 16); "The Best Material & Thickness For This Design :" PRINT #1, PRINT #1, SPC(16); USING ”###"; No; PRINT #1, TAB(25); Name$(No); TAB(45); Impact$(No); PRINT #1, TAB(57); USING " ####.##"; t(No) END IF PRINT #1, SPC(15); STRINGS(54, 61) PRINT #1, SPC(37); TIMES; SPC(10); DATES: PRINT #1, IF note% = 1 THEN PRINT #1, SPC(17); ”Note: '“' means no solution.” CLOSE #1 IF Out$ <> "SCRNz" THEN LOCATE 12, 35: PRINT ”Done !" END SUB SUB User.D.MateriaI (Out$, F, h, P, i) '"’ User Select the Cushion Material SHARED N, L, W, a(), b(), c(), d(), fs(), Name$(), ImpactS(), Density$() CLS IF Out$ <> 'SCRN:" THEN LOCATE 12, 20: PRINT "I am working ..." OPEN Out$ FOR OUTPUT AS #1 PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, PRINT #1, SPC(19); ”CUDE Report: Minimum Cushion Thickness 8: Area " PRINT #1, PRINT #1, SPC(22); ”User Designed: "; Name$(i); "; "; PRINT #1, Impact$(i); " lmpact(s)” PRINT #1, SPC(37); "Density = "; DensityS(i); " pcf" PRINT #1, SPC(22); "Drop Heightz"; h; "in" PRINT #1, SPC(22); "Weight"; P; "lbs" 127 PRINT #1, SPC(22); "Face Areaz"; "("; L; "x"; W; ") ="; L ’ W; "sq.in" PRINT #1, SPC(17); STRINGS(48, 61) PRINT #1, SPC(17); " Minimum Thickness : Minimum Volume" PRINT #1, SPC(17); " G Thickness Area : Thickness Area” PRINT #1, SPC(17); " g's in in2 : in in2" PRINT #1, SPC(19); STRING$(45, 45) j = 1 'Control Screen Page FOR G = F TO 10 STEP ~10 'Loop form Input G to Minimum G Flag = 0 'Reset "Flag" for Minimum Values FOR 5 = P / (L * W) TO fs(i) STEP .1 'Loop from Minimum 5 to 3 IF d(i) = 0 THEN IF G * s > c(i) THEN 'Check Negative Input to LOG t = b(i) * h ’ s/ (LOG(G * s - c(i)) - LOG(a(i))) IF t >= 0 THEN 'Thickness should > 0 IF Flag = 0 THEN Mv = t * P / s 'Assign Minimum Values Mt = t: Mvt = t Ms = s: Mvs = s MtA=P/Ms:MvA=P/Mvs FEg=1 END IF IF Mt > t THEN 'Find Minimum Thickness Mt = t: Ms = s MtA = P / Ms END IF v=t*P/s IF Mv > v THEN 'Find Minimum Volume, Mv = v: Mvt = t 'Thichness, Area Mvs=s:MvA= P/Mvs END IF END IF END IF ELSE 'Solve 3 order polynomial equation numerically PG = 4 'Set precision G = 4 dt = .1 'Set loop step oft ft = 8 'Final Thickness FOR I = .2 TO ft STEP dt 'Thickness range: 0.1-8 in 128 y=G-(a(i)*(s*h/t)"3+b(i)*(s'h/t)“2+c(i)*(s‘h/t)+ d(l))/s IF ABS(y) < PG THEN Mint = t END IF NEXTt IF Mint = 0 THEN t = -1 ELSE t = Mint END IF Mint = 0 IF t >= 0 THEN 'Thickness should > 0 IF Flag = 0 THEN Mv = t * P / s 'Assign Minimum Values Mt = t: Mvt = t Ms = s: Mvs = s MtA=P/Ms:MvA= P/Mvs Flag = 1 END IF IF Mt > t THEN 'Find Minimum Thickness Mt = t: Ms = 5 MIA = P / Ms END IF v=t*P/s IF Mv > v THEN 'Find Minimum Volume, Mv = v: Mvt = t 'Thichness, Area Mvs = s: MvA = P / Mvs END IF END IF END IF NEXT 5 IF Out$ = “SCRNz” AND j = 11 THEN j = -10: CALL Pause IF Mt = -1 AND Mvt = -1 THEN PRINT #1, SPC(17); USING " ####.##"; G 'Need More Print I I ELSE PRINT #1, SPC(17); USING " ####.##"; G; Mt; MtA; Mvt; MvA END IF i = I + 1 129 NEXT G PRINT #1, SPC(17); STRINGS(48, 61) PRINT #1, SPC(40); TIMES; SPC(5); DATES CLOSE #1 IF Out$ <> "SCRN:" THEN LOCATE 12, 45: PRINT ”Done !" END SUB SUB User.D.Thickness (Out$, F, h, P, t) SHARED N, a(), b(), c(), d(), fs(), Name$(). lmpactS() CLS Print.note = 0 'Set the print note swither off Precission = 2 'Set precision G = 2 ds = .005 'Set loop step of s G = F ‘Fragility G IF Out$ <> ”SCRNz” THEN LOCATE 12, 20: PRINT ”I am working ..." I OPEN Out$ FOR OUTPUT AS #1 PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, PRINT #1, SPC(18); ”CUDE Report: Bearing Area & Materials" PRINT #1, PRINT #1, SPC(25); ”User Designed Thickness: "; t; TAB(58); "inches” PRINT #1, SPC(25); "Protected G: "; G; TAB(58); "G's" PRINT #1, SPC(25); "Drop Height: "; h; TAB(58); ”inches” PRINT #1, SPC(25); ”Product Weight: "; P; TAB(58); ”lbs" PRINT #1, SPC(15); STRING$(55, 61) PRINT #1, SPC(18); ”No."; SPC(4); "Materials Impacts "; PRINT #1, SPC(11); ”Area” PRINT #1, SPC(61); "in2" PRINT #1, SPC(16); STRINGS(53, 45) Flag = 0 I = 1 FOR i = 1 TO N Max.S = 0 FOR s = .2 TO fs(i) STEP ds 'Stress range: 0.2 - fs psi IF d(i) = 0 THEN y = G - (a(i) * EXP(b(i) * s * h / t) - c(i)) / s ELSE y=G-(a(i)’(s’h/t)"3+b(i)*(s*h/t)"2+c(i)*(s*h/t)+d(i))/s END IF IF ABS(y) < Precission THEN Max.S = s it." 130 NEXT s IF Out$ = ”SCRNz” AND j = 9 THEN j = -10: CALL Pause IF Max.S = 0 THEN PRINT #1, SPC(16); USING " ##"; i; PRINT #1, TAB(25); Name$(i); TAB(45); Impact$(i); PRINT #1, TAB(62); ”*“*"" Print.note = -1 ELSE PRINT #1, SPC(16); USING " ##"; i; PRINT #1, TAB(25); Name$(i); TAB(45); Impact$(i); TAB(60); PRINT #1, USING "####.##"; P / Max.S END IF IF Flag = 1 THEN ' initial minimum Best.S = Max.S No = i Flag = 0 END IF IF Best.S < Max.S THEN 'Find Min. Area and Material Best.S = Max.S: No = i END IF I = I + 1 NEXT i PRINT #1 , IF No <> 0 THEN PRINT #1, SPC(17); ”The Best Material & Bearing Areaz" PRINT #1, PRINT #1, SPC(16); USING " ##"; No; PRINT #1, TAB(25); Name$(No); TAB(45); lmpactS(No); TAB(60); PRINT #1, USING ”####.##"; P / Best.S END IF PRINT #1, SPC(15); STRING$(55, 61) PRINT #1, SPC(37); TIMES; SPC(10); DATES: PRINT #1, IF Print.note = -1 THEN PRINT #1, SPC(17); "Note: "‘“' means no solution or CUDE can not find END IF CLOSE #1 , IF Out$ <> ”SCRNz" THEN LOCATE 12, 45: PRINT "Done !" END SUB SUB View.Data.FiIe SHARED N, a(), b(), c(), NameS(), ImpactS(), DensityS() '“' Displays available Cushion Materials CLS 131 LOCATE 2, 25: PRINT "Available Cushion Materials in CUDE" PRINT : PRINT SPC(15); STRING$(55, 205) PRINT SPC(17); "No. Materials Impact Density" PRINT TAB(63); "pcf" PRINT SPC(16); STRINGS(53, 196) M = 1 FOR j = 1 TO N le=16*MTHENM=M+1:CALLPause PRINT TAB(18); j; TAB(28); Name$(j); TAB(50); Impact$(i); PRINT TAB(61); Density$(j) NEXT PRINT SPC(15); STRING$(55, 205) LOCATE 23, 20: PRINT "Print ? ( N ) " LOCATE 23, 35: INPUT '"', P$ . IF UCASES(PS) <> "Y” THEN CLS : EXIT SUB I LOCATE 13, 20: PRINT "Printing Port: 1. LPT1; 2. LPT2 ( 1 )" LOCATE 13, 54: INPUT '"', R$ IF UCASES(R$) = '"‘ OR RS = ”1" THEN Out$ = ”LPT1" ELSEIF UCASE$(R$) = "LPT2" OR RS = ”2" THEN Out$ = "LPT2" ELSE CLS : EXIT SUB END IF CLS LOCATE 12, 25: PRINT "I am Working ...." OPEN Out$ FOR OUTPUT AS #1 PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, : PRINT #1, PRINT #1, SPC(25); "Available Cushion Materials in CUDE" PRINT #1, : PRINT #1, SPC(15); STRING$(55, 61) PRINT #1, SPC(17); "No. Materials Impact Density" PRINT #1, TAB(63); 'pcf" PRINT #1, SPC(16); STRINGS(53, 45) FOR j = 1 TO N PRINT #1, TAB(18); j; TAB(28); Name$(I); TAB(50); Impact$(i); PRINT #1, TAB(64); DensityS(j) NEXT PRINT #1, SPC(15); STRING$(55, 61) PRINT #1, TAB(45); TIMES; SPC(5); DATES CLOSE #1 LOCATE 12, 45: PRINT ”Done!" CLS END SUB LIST OF REFERENCES 10. 11. LIST OF REFERENCES Hanlon, J. F. 1992. Handbggk of chkgge Engineering, Second Edition. Technomic Publishing Company. Laneaster, PA. Lee, J. L and Brandenburg, R. K. 1985. Fundamentals of Packaging Dynamics, 2nd Edition. MTS systems Corporation. Minneapolis, MN. Burgess, G. 1994. Advanced Packaging Dynamics (PKG 805 Note). School of Packaging, East Lansing, MI. Burgess, G. 1991-1992. Analysis of Irregular Cushions, consortium of Distribution Packaging, p.1-36. 1994. Annual Book of ASTM Standards. American Society of Testing and Materials. Dow Chemical USA, 1987. Product and Design Data for ETHAFORM brand polyethylene foam. Midland, MI. Singh, P. 1991-1992. Analysis of Irregular Cushions, consortium of Distribution Packaging, p. 49-62. Dow Chemical USA, 1988. Protecting Static-Sensitive Products, In- Process, In Transit, and In Storage. Midland, MI. ARCO Chemical Company. 1986. Dynamic Cushioning Performance, ARCEL. Moldable Polyethylene Copolymer. Bertrand, K. 1985. Specialized Cushioning Meets Precise Protection Demands. Packaging (US). Vol. 30(5), p.27-32. ARCO Chemical Company. 1986. Dynamic Cushioning Performance, ARPRO. Expanded Polypropylene Bead. 132 133 LIST OF REFERENCES (continued) 12. 13. 14. 15. 16 17 ARCO Chemical Company. 1986. Dynamic CushIOning Performance, DYLITE. Expanded Polystyrene. Astro-Valcour, Inc. 1993. Cushioning Curves for PolyPlank. AVI, Astro- Valcour, Inc. Glens Falls, NY. Sommerville, I. 1992. Software Engineering, Fourth Edition. Addison- Wesley Publishing Company. Workingham, England. AI-Khafaji, A. W. and Tooley, J. R. 1986. Ngmerigl Methods in Engineering Practice. Holt, Rinehart and Winston, Inc. New York, NY. Douglass, B. 1983. Numeriggl Basic. Howard W. Sams & Co. Inc. Indianapolis, Indiana. Burden, R. L. And Faires, J. D. Numerical Analysis, Fourth Edition. PWS- KENT Publishing Company. Boston. "’IIlIIIIlIIIIITIITTIIIIIIS