MSU LIBRARIES .—:—. RETURNING MATERIALS: Place in book drop to remove this checkout from your record. flfl§§ wil] be charged if book is returned after the date stamped below. THE COMPUTER-AIDED DESIGN OF MOLDBOARD PLOW SURFACES USING THREE DIMENSIONAL GRAPHIC TECHNIQUES By Stephen Brian Richey A THESIS Submitted to Michigan State University in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE Department of Agricultural Engineering 1987 L./l ti,- Approved by: Major Professor p1 / ‘7 ”‘5 5 1'.) I 4‘ 3W3jyéir>w @131; Department Chairman ABSTRACT THE COMPUTER-AIDED DESIGN OF MOLDBOARD PLOW SURFACES USING THREE DIMENSIONAL GRAPHIC TECHNIQUES By Stephen Brian Richey A computer model has been developed to show that three dimensional graphic techniques can be used to describe moldboard plow surfaces. A three dimensional soil-tool mechanics was developed to calculate the forces applied to the plow by the soil. The forces exerted on the plow by the soil are predicted without prior knowledge of the soil path over the surface. The plow shape is defined by two Bezier surfaces. Each surface can be divided into a maximum of 100 elements. Force calculations are made for each element and then the forces and moments are summed over all the elements to determine the totals for each of the x, y and 2 directions. The soil path is determined by the surface Shape and the forces exerted on the soil. The force predictions were checked against measurements made by Emmet and Gunkel (1983) on a 16 inch Ford moldboard plow. Predicted draft forces were 15 percent larger than those measured. This thesis is dedicated to Mary. 11 ACKNOWLEDGMENTS The author gratefully acknowledges Dr. AJit Srivastava, major professor, for his guidance of the research effort and his patience and understanding while this manuscript was completed in the two years that followed. Many thanks to Dr. Larry Segerlind and Dr. Robert Wilkinson, committee members, for their support and advice while working towards the completion of this graduate degree. There are many people that contributed to this research in small but important ways. Their assistance made the research easier and the daily activities enjoyable. The author specifically wishes to recognize Cliff Zehr, Tim Oliver, Wilbur Mahoney, Tom Esch and Luke Reese. I Deepest thanks are expressed to the author's parents, Fred and Arlene Richey, for their continual encouragement and support in reaching for my goals. The person who made the most personal sacrific for this research was the author's wife, Mary. For her sacrific, encouragement and assistance the author extends his deepest heart-felt graditude. iii TABLE OF CONTENTS List or Tables. 0 O O O C O O O O 0 List of F1 sures C 0 O O O O O O O 0 List of Symbols . . . . . . . . . . Chapter 1 Appendices A DOD) List of Re Introduction. . . . . . . 1.1 Computer Graphics. . 1.2 Soil-tool Mechanics. 1.3 Research Objectives. Literature Review . . . . 2.1 Plow Description . . 2.2 Soil-Tool Mechanics. Soil-Tool Mechanics Model 3.1 Two Dimensional Model. 3.2 Three Dimensional Model. Graphics Representation . O O O O A. 1 Three Dimensional Curves A. 2 Three Dimensional Surfaces Computer Model. . . . . 5.1 Moldboard Plow Model 5.2 Computer Program . . Results and Verification. 6.1 Inclined Blade . . . 6.2 Moldboard. . . . . . Conclusions . . . . . . . Suggestions for Further Research. PLOW Users Guide PLOW Source Code PLOW Data Files Measured Data ferences iv Page . v . vi viii sit-l:- NNHH . 10 . 21 . 27 . 27 . 3A . 37 . 37 . A1 . AS . 50 6.2 6.3 LIST OF TABLES Page Inclined Blade Operating Conditions, Measured Forces and Predicted Forces. . . . . . . . . 48 Soil and Operating Conditions Used for MOdel verification O I O O O O O O O O O O O 51 Comparison Between the Predicted Plow Forces and the Measured Forces. . . . . . . . . . . 58 3.2 3.3 30“ 3.5 3.6 3.7 3.8 3.9 3010 h.3 A.A 5.1 5.2 5.3 LIST OF FIGURES Thomas Jefferson's Framework for Designing a Moldboard Plow. . . . . . . . . . . . . Forces on a $011 Segment Reacting on an Inclined Plane Tillage Tool . . . . . . A Mohr Envelope of Soil Internal Stresses. . A Mohr Envelope of Soil-Metal Stresses . . . Formation of Soil Blocks by Repeated Shear Failure 0 O O O O O O O O O O O O O O O A Free Body Diagram of a Soil Slice for the Three Dimensional Model . . . . . . . . A Free Body Diagram of an Inclined Blade . . Three Dimensional Representation of an Inclined Plane Tillage Tool . . . . . . Three Dimensional Representation of an Inclined Plane Tillage Tool . . . . . . Soil Path on the Surface of the Inclined Plane Tillage Tool. . . . . . . . . . . Soil and Tillage Tool Orientation in the Three Dimensional Space . . . . . . . . Hermite Curve Representation . . . . . . . . Hermite Curve With Varying Tangent Vector Length 0 O O O O O O O O O O O O O O O O Bezier Curve Representation. . . . . . . . . Sixteen Control Points for Bezier Bicubic Patch . . . . . . . . . . . . . Location of Four Elements on Moldboard . . . PLOW menu 0 O O O O O O O O O O O O 0 O 0 O 0 Example of PLOW Force Output . . . . . . . . vi Page 11 11 1H 1H 15 20 20 22 22 25 28 28 30 36 A0 A2 A2 6.1a 63 mm Wide Inclined Blade. . . . . . . . . . 6.1b 12h mm Wide Inclined Blade . . . . . . . . . 6.1c 200 mm Wide Inclined Blade . . . . . . . . . 6.2 Sixteen Inch Ford Plow Descriptor Points . . 6.3 Representation of a Moldboard Plow Bottom by Multiple Three Dimensional Inclined Planes. . . . . . . . . . . . . . . . . vii (11> O: Q D O 0’ LIST OF SYMBOLS Adhesion of $011 on Metal Acceleration Force of Soil Tool Width Soil Cohesion Direction Cosine Depth of Tool Cut Distance the Soil Travels Along the Forward Failure Shear Plane Distance the Soil Travels on the Tool Over the Described Path Draft Force Lateral Force Vertical Force Contact Area of Soil Block and Inclined Blade Area of Forward Shear Failure Surface Weight of Soil Segment Acceleration Due to Gravity Distance From One Shear Plane to Next Mass of Accelerated 8011 Normal Load on Inclined Blade Normal Load on Leading Forward Failure Surface Normal Load on Trailing Forward Failure Surface Time Absolute Soil Velocity viii _ oo~m¢.m >>.m m.m o—m. mmm. oa m.wP oom NF Fbm. m—.m o.m won. mmmP mm m.o— mm, FF Foe. o>.m 0.? eon. mow— mm n.0— no 0— emm. ho.fi m.m woe. mas, em o.m com o .om._ mv.m v.m mom. «mm_ em m.>w mm, m o_e. em._ m.m mes. men. mm m.m no N mam.m mw.m m.o. eon. mvov em m.>m cow 0 mm_.m oa.o m.o owe. 0mm om m.mm mm? m was. mm.m _.m_ mmm. . mmoi an m.m_ no a nmm.¢ o>.o_ 0... son. mmo_ mm m.me 00m m mF>._ oo.m w.m_ mmw. 500— me m.>_ mm. m mmm.. m_.w m.. wee. emow mm m.mm no _ 3.3 Azgv Azxv Amado is :0\mev mamg< couch monom commosv< coflpoflpm hpwmcon :ofipOHum Asov among pmmpm Hobos Hmpmz xasm HangoudH Ammxv new“: * nopofivmpm cmuzmwmz uaflom aHHom HHom HHom :ofimmsoo madam ommo .moouom Beneficopm was moouom umpsmwoe .mcofipflccoo mafipmpmmo woman omcflaodH —.w mgm (Ry) (F2) Predicted 3895 -1712 ~3319 Measured 3389 -1118 -15“2 Chapter 7 CONCLUSIONS Three dimensional graphics techniques (Bezier surfaces) can be used to describe share and moldboard shapes. The user should be aware of the assumptions of the model when applying it to tool geometries other than a moldboard plow. The computer model does not accurately predict draft forces for inclined blades. Three dimensional force reactions can be calculated without prior knowledge of the soil path over the moldboard plow surface. Moldboard plow draft force predictions were within 15 percent of the draft force measurements. Force calculations for other moldboard plow shapes and operating conditions should be checked against measured forces to better determine the validity of the model. R0 Chapter 8 SUGGESTIONS FOR FURTHER RESEARCH This research illustrates only one application of computer graphic techniques to modeling. Many others are possible. These techniques are good for any application where complicated and universal surface descriptions are required. The soil tillage tool area has several more applications. Modeling of shallow and deep narrow tines, wide sweep or shovel cultivator tines and disk type tools are all possible. The computer program PLOW could be used for some of the above applications. PLOW was written in modules to facilitate replacing, adding or deleting functions as required for a particular model. For example, a more accurate inclined blade model could be developed by replacing the force calculation subroutines with those more closely representing that tool. Another possible application of PLOW is using the output as input to another program for designing an implement hitching system. The three component dirction forces and the three corresponding moments located along a beam or tool bar can be summed to size the implement structural members and hitch orientation to Optimize available pulling power. 60 61 A very computer time intensive application would be optimization of a tillage tool surface geometry to minimize draft while maximizing the desired soil manipulation. There would be a considerable amount of research required to develop the optimization algorithms, but once in place only computer time is needed to design a new implement. There are many Computer Aided Design (CAD) software packages available that use very elegant graphics manipulations as part of their drawing functions. If these were married with a force calculation function, the extent of design using computers would be greatly expanded. APPENDIX A PLOW USERS GUIDE PLOW USERS GUIDE This document describes the operation of the computer program PLOW running on a Prime Computer System. PLOW is comprised of sixteen (16) procedures. This document outlines the steps to execute the program and each procedure within it. The following conventions are used in this document: 1. Text or numbers enclosed in quotation marks " " represents information displayed by PLOW. 2. Text or numbers enclosed in left and right carrots < > represents information entered from the keyboard by the user. Where more than one response is possible, each response will be followed by an explaination of that action. 3. Text or numbers not falling in areas 1 or 2 are explainations. To begin execution of the program enter: is the normal response. will stop PLOW from sending graphics information to the terminal. This severely limits the usefulness of PLOW. "Enter baud rate." (1200) can be any of the standard baud rates. This information is needed to initialize the three dimensional graphics drivers. A1 A2 "Enter file name for writing tool force information." is any file name. The force calculations will be stored here for later printing or review. "Enter name of geometry data file." is file name of geometry previously created by PLOW. "Enter name of operating conditions file." is file name of operating conditions file previously created by PLOW. The following main menu is displayed. The remainder of PLOW will work from this menu. "1) Plot 2) Change point of view 3) Change look at point “) Change magnification factor 5) Change center position 6) Set plotting conditions to default 7) Label control points on plot 8) Plot measured points 9) Change number of surface elements 10) Change operating conditions 11) Change share, moldboard and scaling 12) Get new tool geometry data 13) Get new operating data 1“) Compute forces 15) End Enter number of desired procedure. (99 for menu)" <1> plots the active tool. Return to main menu prompt. <2) "Current view point is (-l.0,l.0,l.0). Enter new X,Y,Z coordinates." <1.0,.5,.2> The numbers identify the point coordinates you are looking from. Return to main menu prompt. <3) <“> <5) <6> <7> <8) A3 "Current look at point is (0.0,0.0,0.0). Enter new X,Y,Z coordinates." The numbers identify the point coordinates you are looking at. Return to main menu prompt. "Current magnification factor is 1.0. Enter new factor." <2.0> The screen is magnified about the screen center by the value entered. Return to main menu prompt. "Current center point is (0.0,0.0). Enter new X,Y coordinates." <-1.,.5> The three dimensional image is projected onto' a two dimensional plane, so the value of the center point is relative to the size and shape of the tool. The user will have to 'get a feel' for this procedure with each tool. Return to main menu prompt. "Plotting conditions set to default." While the user is trying to get a better view of a tool, he may modify several of the display values. This procedure provides an easy way to get back to the starting plot. Return to main menu prompt. This procedure labels the control points on the tool. Return to main menu prompt. "Enter measured points data file name." This file has data points that were measured and entered into a file. The file has four values per line. The first value is an integer identifying the point number and the next three are the X,Y,Z coordinates. There can be up to one hundred points in the file. Return to main menu prompt. A“ <9> "Enter number of elements along the share edge." <2) This number can range from 1 to 10. "Enter number of elements along the moldboard edge." <5) This number can also range from 1 to 10. As with the share, there is an equal number of elements along each surface edge. Return to main menu prompt. <10) " Soil Parameters 1) Soil type: Norfolk Sandy Loam 2) Bulk Density (kg/cu m) 1770. 3) Cohesion (kPa) 19.7 “) Internal Friction Angle (deg) 3“.8 5) Soil-Metal Friction Coefficient 0.“0 6) Soil-Metal Adhesion (kPa) 0.0 Tool Parameters 7) Forward Velocity (m/s) 1.3“ 8) Tool Depth (m) 0.203 Enter parameter number to be changed. (0 to stop)" <2) "Enter new value for parameter number 2." ' (1690.) "Enter parameter number to be changed. (0 to stop)" <0) "Store modified data? (y or n)" "Enter new file name." Return to main menu prompt. Return to main menu prompt. <11) "Do you want to change: 1) share 2) moldboard 3) scaling “) stop" A5 <1) Four share control points will be displayed. "Enter point # to be edited. (0 to stop)" (1) "Enter X,Y,Z." <0.,0.,0.> <0) Return to prompt at 11. <2) Twelve moldboard control points will be displayed. "Enter point # to be edited. (0 to stop)" <1) "Enter X,Y,Z." <0.,0.,0.> <0) Return to prompt at 11. <3) "X-scale = l. Y-scale 8 1. Z-scale = 1. Enter new X-scale, Y-scale, Z-scale." <.5,.5,.5) This changes the size of the tool in each of the component directions by the factor entered. Return to prompt at 11. <“> "Do you want to store modified data in file? (y or n)." "Enter name of tool geometry data file to be written to." Return to main menu prompt. Return to main menu prompt. <12) "Enter name of geometry data file to be read." Return to main menu prompt. <1“) (15> A6 "Tool Totals X Y Z Forces (N) Moldboard 3988. -l3“9. -951. Total 27562. -13285. -1900“. Moments (N-m) Share -9066. l26“7. -20200. Moldboard 253. 2613. -“158. Total -8813. 15260. -2“358. Location of zero moment 0. O. ." The numbers in the displayed table were just calculated. The time taken to calculate depends on the number of elements on the share and moldboard and the load on the system. These calculations can take several minutes. Return to main menu prompt. "End PLOW program." APPENDIX B PLOW SOURCE CODE Bl PLOW This program interacts with the user to design a moldboard. It was written to run on the Prime 750 computer at The Case Center for Computer Aided Design, Michigan State University. The computer was equipped with a Fortran-77 compiler and a Tektronix Plot-10 Terminal Control System (TCS). In addition, three dimensional plotting software developed by Case Center personnel was used. This program has been run with a Tektronix 4100 series, a Tektronix 4000 series, a DEC VTlOO with graphics expansion card, and DEC VT240 terminals. Every attempt was made to adhere to Fortran-77 conventions. There are no guarantees expressed or implied. C)C5C5C)C)C>C5C5C5C5CDC363C3C§C563 *********************************************************************** Written by: Stephen B. Richey January 1983 (2¢1(3(563(5C3C5 ************************fi*******************************************fit Array definitions: PSS - coordinates of points blended in a direction describing share surface. PST - coordinates of points blended in t direction describing share surface. PMS - coordinates of points blended in 8 direction describing moldboard surface. PMT - coordinates of points blended in t direction describing moldboard surface. XS,YX,ZS - coordinates of share control points. XM,YM,ZM - coordinates of moldboard control points. DA - coordinates of measured points to be plotted. ******************** Variable definitions: SOILTY - name of soil type (character string). GAMMA - soil bulk density (kg/cu m). COHES - soil cohesion (kpa). PHI - soil internal friction (deg). MUP - soil-metal friction. ADHES - soil-metal adhesion (kpa). VELTL - tool velocity (m/s). DEPTHF - plowing depth (m). C)CDC)(if)C5C5C3C3C5C3C563C3C3C)CDCDCDC5C3C3C3C3C5C)(if)C) 82 SIZEX,SIZEY,SIZEZ - scaling factors for controls points. VX,VY,VZ - view point coordinates. AX,AY,YZ - look at point coordinates. MAG - magnification factor. CX,CY - center position coordinates. OLM,JJM - number of lines drawn on moldboard. OLS,JJS - number of lines drawn on share. FOFILE - name of data file for writing force info (character string). DATA - name of data file for reading measured data (character string). LUNTI - logical unit number for terminal input. LUNTO - logical unit number for terminal output. LUNDA,LUNDB,LUNDC - logical unit number for data input/output. GRAPH - answer to question of graphics terminal (character string). 0 - answer to question (character string). 01 - numerical answer to question. BAUD - baud rate. Subroutines called: GETDAT - reads tool geometry data. STODAT - stores tool geometry data. OPERAT - reads soil and operating conditions. DEFPLT - sets plotting parameters to default. EDGE - calculates control points for a straight edge. SURFACE - calculates point coordinates to be plotted. SETPLT - sets up plot. PLOT - plots surfaces. LABPTS - labels control points on moldboard. PARAM - edits soil and tool parameters. NEWPS - edits share control points. NEWPM - edits moldboard control points. NEWSCA - edits scaling factors. COMFOR - computes forces. The following subroutines are on the Prime system at The Case Center at Michigan State University. INITT3 - initializes graphics file. CLOSTK - closes graphics file. MOVER3 - relative move (3-D). MOVEA3 - absolute move (3-D). DRAWR3 - relative draw (3-D). RECOVR - recover to graphics mode. HOME - move curser to screen upper left. NEWPAG - page screen. 00000000000OOOOOOOOOCOOOGOOOOOOOOOOOOOOOOOOOOCOOOOOOOO CDC)(3C)C)C3CJC)C)C5C)C5CDCJC3CJC3CDC) ¢~C3C3C3 B3 CARTN - generates carriage return. CARTVP - sets cartisan view point. LOOKAT - set lookat point. PERSPT - turns on or off perspective viewing. XUP,YUP,ZUP - defines which axis is up on plot. PPCENT - sets distance to 2-D viewing plane from look at point to view point as a percentage. DWINDO - sets bounds of area displayed on screen. CENTER - sets center point of display window. MAGNFY - sets display magnification factor. MOVEA3 - move to specified coordinates (3-D). VECTOR - draw line to specified coordinates and draw an arrowhead (3-D). CHARTK - write text on plot. ********************* IMPLICIT REAL (A-H,O-Z) IMPLICIT INTEGER (I-N) COMMON /A/GAMMA,COMES,PHI,MUP,ADHES,VELTL,DEPTHF COMMON /B/VX,VY,VZ,AX,AY,AZ,MAG,CX,CY COMMON /LUN/LUNTI,LUNTO COMMON /LUND/LUNDA,LUNDB DIMENSION PMS(ll,3,ll),PMT(ll,3,ll),PST(ll,3,ll),PSS(11,3,ll), +XM(4.“).YM(4.“).ZM(4.“).XS(4.“).YS(“.4).ZS(“.“) DIMENSION DA(3,SO) CMARACTER*1 Q,GRAPH CHARACTER SOILTY*“O CHARACTER*80 FOFILE,DATA REAL VX,VY,VZ,AX,AY,AZ,MAG,CX,CY REAL GAMMA,COHES,PHI,MUP,VELTL,DEPTHF INTEGER OLM,OLS,BAUD,Q1 DATA LUNTI,LUNTO/l,l/ DATA LUNDA,LUNDB,LUNDC/12,11,13/ WRITE (LUNTI,*) 'Is a grpahics terminal being used?(y/n).' READ (LUNTO,'(A3)') GRAPH IF (GRAPH.EQ.'Y'.OR. GRAPH.EQ.'y') CALL NEWPAG WRITE (LUNTI,*) 'Enter baud rate.‘ READ (LUNTO,*) BAUD EAUD-EAUD/lo Open file for writing tool info. WRITE (LUNTI,*) ' Enter file name for writing tool force', + ' information.‘ READ (LUNTO,'(A)') FOFILE OPEN (LUNDA,FILE-FOFILE,STATUSI'NEW',ERR'“) COO WOOD 000 @000 + B“ Get tool geometry data, soil and tool operating conditions and set plotting conditions to default. CALL GETDAT (SIZEX,SIZEY,SIZEZ,XS,YS,ZS,XM,YM,ZM) CALL OPERAT (SOILTY) CALL DEFPLT(OLM,JJM,OLS,JJS) Calculate points for share. CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL EDGE EDGE EDGE EDGE EDGE EDGE EDGE EDGE EDGE EDGE EDGE EDGE (xs,1,1) (xs,1,4) (XS,2,1) (XS,2,“) (YS,1,1) (YS,1,“) (YS,2,1) (YS,2,“) (23,1,1) (23,1,4) (28,2,1) (23.2.4) SURFAC (OLS,JJS,PSS,PST,XS,YS,ZS) Calculate points for moldboard. CALL EDGE (XM,1,1) CALL EDGE (YM,1,1) CALL EDGE (ZM,1,1) CALL SURFAC (OLM,JJM,PMS,PMT,XM,YM,ZM) Write menu to WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE (LUNTI,*) (LUNTI,*) (LUNTI,*) (LUNTI,*) (LUNTI,*) (LUNTI,*) (LUNTI,*) (LUNTI.*) (LUNTI,*) (LUNTI,*) (LUNTI,*) (LUNTI,*) (LUNTI,*) (LUNTI,*) (LUNTI.*) lunti. 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) 13) 14) 15) Plot' Change point of view.‘ Change look at point.’ Change magnification factor.‘ Change center position.‘ Set plotting conditions to default.’ Label control points on plot.' Plot measured points.’ Change number of surface e1ements.’ Change operating conditions.’ Change share, moldboard, or scaling.‘ Get new tool geometry data.’ Get new operating data.‘ Compute forces.‘ Store plot in file and end.‘ IF (GRAPH.EQ.'Y'.0R. GRAPH.EQ.'y') CALL ANMODE WRITE (LUNTI,*) 'Enter number of desired procedure', '(99 for menu).' READ (LUNTO,*,ERR-10) Q1 35 IF (Q1.EQ.99) COTO 99 GOTO (6,15,16,25,30,35,40,7S,“5,50,60,55,80,70,100),Ql GOTO 10 Set up and plot tool. @000 IF (GRAPH.EQ.'N'.OR.GRAPH.EQ.'n') GOTO 10 CALL INITT3 (BAUD) 7 CALL SETPLT (SIZEX,SIZEY,SIZEZ) CALL PLOT (PSS,PST,OLS,JJS) CALL PLOT (PMS,PMT,OLM,JJM) CALL ANMODE CALL HOME GOTO 10 Change view point. -c>c:c> 5 WRITE (LUNTI,'(A2“,F4.l,2(Al,F4.l),A32)') + ' Current view point is (',VX,',',VY,',',VZ, + '). Enter new X,Y,Z coordinates.‘ READ (LUNTO,*) vx,vy,vz GOTO 10 Change lookat point. 0-‘000 6 WRITE (LUNTI,'(A26,F“.l,2(Al,F4.l),A32)') + ' Current lookat point is (',AX,’,',AY,',',AZ, + '). Enter new X,Y,Z coordinates.‘ READ (LUNTO,*) Ax,AY,Az GOTO 10 Change magnification factor. N000 5 WRITE (LUNTI,'(A33,F3.1,A20)') + ' Current magnification factor is ',MAG, + '. Enter new factor.‘ READ (LUNTO,*) MAG GOTO 10 Change screen center point. 90000 0 WRITE (LUNTI,'(A25,F“.1,A1,F4.1,Al9)') + 'Current center point is (',CX,',',CY, + '). Enter new X,Y coordinates.‘ READ (LUNTO,*) CX,CY GOTO 10 Reset plotting conditions w000 5 WRITE (LUNTI,*) 'Plotting conditions set to default.‘ CALL DEFPLT (OLM,JJM,OLS,JJS) GOTO 5 00 Label moldboard surface control points. #000 5 “6 (13000 U'I000 W000 @000 61 IF (GRAPH.EQ.'N' CALL RECOVR CALL LABPTS (XM, CALL CARTN CALL ANMODE GOTO 10 Change number WRITE (LUNTI,*) + ' share edge.’ BO .OR.GRAPH.EQ.'n') GOTO 10 YM,ZM) of surface elements. ' Enter number of elements along the', READ (LUNTO,'(I2)',ERR-“5) OLS IF (OLS.LT.1.0R. OLS‘OLS+1 JJSIOLS WRITE (LUNTI , *) OLS.GT.10) GOTO 45 ' Enter number of elements along the', + ' moldboard edge.‘ READ (l,'(I2)',ERR=46) OLM IF (OLM.LT.1.0R. OLM-OLM+1 JJM-OLM IF (GRAPH.EQ.'Y' GOTO 10 OLM.GT.10) GOTO 46 .OR.CRAPH.EQ.'y') GOTO 5 Change operating conditions. CALL PARAM (SOILTY) IF (GRAPH.EQ.'Y' GOTO 10 .OR.GRAPH.EQ.'y‘) CALL NEWPAG Get new tool geometry data. CALL GETDAT (SIZEX,SIZEY,SIZEZ,XS,YS,ZS,XM,YM,ZM) IF (GRAPH.EQ.'Y' GOTO 10 .OR.GRAPH.EQ.'y') GOTO 5 Get new operating data. CALL OPERAT (SOILTY) WRITE (LUNTI , *) GOTO 10 Change share, WRITE (LUNTI,*) WRITE (LUNTI,*) WRITE (LUNTI,*) WRITE (LUNTI,*) WRITE (LUNTI,*) ' New data read.’ moldboard, or scaling. ' Do you want to change:' ' 1) share' ' 2) moldboard' ' 3) scaling' '4) stop' READ (LUNTO,*) Ql GOTO (61,62,63,64).Q1 GOTO 60 CALL NEWPS (XS,YS,ZS) N000 N000 0U) F000 B7 GOTO 60 CALL NEWPM (XM,YM,ZM) GOTO 60 CALL NEWSCA (XS,YS,ZS,XM,YM,ZM,SIZEX,SIZEY,SIZEZ) GOTO 60 WRITE (LUNTI,*) ' Do you want to store modified data', + ' in file?(y/n)' READ(LUNTO, ' (A3) ') Q IF (Q.EQ.'Y'.OR.Q.EQ.'y') THEN CALL STODAT (SIZEX,SIZEY,SIZEZ,XS,YS,ZS,XM,YM,ZM) ENDIF IF (GRAPH.EQ.'Y'.OR.GRAPH.EQ.'y') GOTO 5 GOTO 10 Calculate forces. IF (GRAPH.EQ.'Y'.OR.GRAPH.EQ.'y') CALL NEWPAG CALL COMFOR (PMS,PSS,OLS,JJS,OLM,JJM,SOILTY) GOTO 10 Plot measured points. IF (GRAPH.EQ.'N'.OR.GRAPH.EQ.'n') GOTO 10 WRITE (LUNTI,*) ' Enter data file'name.’ READ (LUNTO,'(A10)',ERR-7S) DATA OPEN (LUNDC,FILE=DATA,STATUS='OLD',ERR=75) NUMP-l READ (LUNDC,*,END-2) J,(DA(I,NUMP),I=1,3) NUMP‘NUMP+1 ' GOTO l NUMP-NUMP-l CLOSE (LUNDC) CALL RECOVR CALL NEWPAG CALL SETPLT (SIZEX,SIZEY,SIZEZ) Plot points. DO 3 I=l,NUMP CALL MOVEA3 (DA(1,I),DA(2,I),DA(3,I)) CALL MOVER3 (-.OS*SIZEX,0.,0.) CALL DRAWR3 (.l*SIZEX,0.,0.) CALL MOVER3 (-.05*SIZEX,-.05*SIZEY,O.) CALL DRAWR3 (0.,.l*SIZEY,O.) CALL MOVER3 (0.,-.OS*SIZEY,-.OS*SIZEZ) CALL DRAWR3 (O.,O.,.l*SIZEZ) CONTINUE GOTO 7 End program. CALL CLOSTK (IERR) CALL HOME CALL ANMODE WRITE (LUNTI,*) ' End PLOW program.’ 88 CLOSE (LUNDA) CLOSE (LUNTI) CLOSE (LUNTO) C) END INIT ******************** C)C)C§C3(5 SUBROUTINE DEFPLT (OLM,JJM,OLS,JJS) This subroutine sets plotting parameters to default Variable definitions: VX,VY,VZ - view point coordinates. AX,AY,AZ - look at point coordinates. MAG - magnification factor. CX,CY - center position coordinates. OLM,OLS - number of horizontal lines drawn on moldboard and share respectively. JJM,JJS - number of vertical lines drawn on moldboard and share respectively. (if)C)C)C)C)C)C)C)C)C)CDC)C) COMMON /B/VX,VY,VZ,AX,AY,AZ,MAG,CX,CY REAL VX,VY,VZ,AX,AY,AZ,MAG,CX,CY INTEGER OLM,OLS VX'-l. W. l e VZ'l. AX'O. AY'O e AZ‘O. HAG’1.5 CX'-l. CY'.5 0LM'4 JJM-4 0LS=2 JJS=2 RETURN END C C******************** C SUBROUTINE OPERAT (SOILTY) This subroutine sets soil and operating conditions to values read from user specified file. C)C)C)C)C) Variable definitions: 89 C C DFILE - name of Operating conditions file C (character string). C C SOILTY - name of soil type (character string). C GAMMA - soil bulk density (kg/cu m). C COHES - soil cohesion (kpa). C PHI - soil internal friction (deg). C MUP - soil-metal friction. C ADHES - soil-metal adhesion (kpa). C VELTL - tool velocity (m/s). C DEPTHF - plowing depth (m). C C LUNTO - logical unit number for terminal output. C LUNTI - logical unit number for terminal input. C LUNDI - logical unit number for data input. C COMMON IA/GAMMA,COHES,PHI,MUP,ADHES,VELTL,DEPTHF COMMON /LUN/LUNTI,LUNTO CHARACTER SOILTY*“O CHARACTER DFILE*80 REAL GAMMA,COHES,PHI,MUP,ADHES,VELTL,DEPTHF DATA LUNDI/lO/ C 10 WRITE (LUNTI,*) 'ENTER NAME OF OPERATING CONDITIONS FILE.’ READ (LUNTO,'(A10)') DFILE OPEN (UNIT-LUNDI,FILE=DFILE,STATUS='OLD',ERR=lO) READ (LUNDI,'(A20)') SOILTY READ (LUNDI,*) GAMMA READ (LUNDI,*) COMES READ (LUNDI,*) PHI READ (LUNDI,*) MUP READ (LUNDI,*) ADHES READ (LUNDI ,*) VELTL READ (LUNDI,*) DEPTHF CLOSE(LUNDI) RETURN END c C******************** C SUBROUTINE GETDAT (SIZEX,SIZEY,SIZEZ,XS,YS,ZS,XM,YM,ZM) This subroutine reads tool geometry data from user specified file. Array definitions: XS,YX,ZS - coordinates of share descritive points. XM,YM,ZM - coordinates of moldboard descriptive points. 0000000000 Variable definitions: C5C5C3C3CDC3C3C) C B10 DFILE - name of file to be read (character string). SIZEX,SIZEY,SIZEZ - scaling factors for x,y,z data. LUNTO - logical unit number for terminal output. LUNTI - logical unit number for terminal input. LUNDI - logical unit number for data input. COMMON /LUN/LUNTI,LUNTO DIMENSION XS(“,“),YS(4,4),ZS(4,“),XM(“,4),YM(4,4),ZM(“,“) CHARACTER DFILE*80 DATA LUNDA/IO/ WRITE (LUNTI,*) 'ENTER NAME OF GEOMETRY DATA FILE TO BE READ.’ READ (LUNTO,'(A20)') DFILE OPEN (LUNDI,FILE=DFILE,STATUSt'OLD',ERRBIO) READ (LUNDI,'(3(F9.3))') SIZEX,SIZEY,SIZEZ DO 20 I=l,“ Do 20 J=1,4 READ (LUNDI,'(3(F9.3))') XS(J,I),YS(J,I),ZS(J,I) CONTINUE DO 30 1'1,“ DO 30 J-l,“ READ (LUNDI,'(3(F9.3))') XM(J,I),YM(J,I),ZM(J,I) CONTINUE CLOSE (LUNDI) RETURN END C******************** C C3C3C5C3CIC3C3C363CDCDC)CDCDC) SUBROUTINE STODAT (SIZEX,SIZEY,SIZEZ,XS,YS,ZS,XM,YM,ZM) This subroutine writes current tool geometry data to user specified file. Array definitions: XS,YX,ZS - coordinates of share descritive points. XM,YM,ZM - coordinates of moldboard descriptive points. Variable definitions: DATA - name of file to be read (character string). SIZEX,SIZEY,SIZEZ - scaling factors for x,y,z data. LUNTO - logical unit number for terminal output. Bll LUNTI - logical unit number for terminal input. LUNDI - logical unit number for data input. 000 COMMON /LUN/LUNTI,LUNTO DIMENSION xs(4,4),Ys(4,4),zs(4,4),xn(4,4),YM(4,4),ZM(4,4) CHARACTER DFILE*80 DATA LUNDI/lO/ lO WRITE (LUNTI,*) ' ENTER NAME OF TOOL GEOMETRY DATA FILE TO ', + 'BE WRITTEN TO.’ READ (LUNTO,'(AIO)') DFILE C OPEN (LUNDI,PILE-DPILE,STATUS='NEw',ERR-lo) C WRITE (LUNDI,'(3(F9.3))') SIZEX,SIZEY,SIZEZ C C no 20 1:1,4 Do 20 J-l,“ WRITE (LUNDI,'(3(F9.3))') XS(J,I),YS(J,I),ZS(J,I) 20 CONTINUE DO 30 I=l,“ DO 30 J=l,“ WRITE (LUNDI,'(3(F9.3))') XM(J,I),YM(J,I),ZM(J,I) 30 CONTINUE C C CLOSE (LUNDI) RETURN END C C C SURFACE C C******************** C SUBROUTINE SURFAC (OL,JJ,PTS,PTT,PX,PY,PZ) This subroutine calculates point coordinates to be plotted. Array definitions: PTS,PTT - coordinates of points for describing surface. PX,PY,PZ - coordinates of control points. Variable definitions: OL,JJ - number of splines used to draw surface. Subroutines called: 000000000000000 BlZ INTNOD - calculates internal control points. POINT - calculates point for describing surface. CDCDC) DIMENSION PTS(ll,3,ll),PTT(ll,3,ll),PX(“,4),PY(“,“),PZ(“,4) REAL U,V INTEGER OL,JJ CALL INTNOD (PX) CALL INTNOD (PY) CALL INTNOD (PZ) C BLEND IN T-DIRECTION DO 10 I-1,OL u-(I-1)/REAL(0L-1) DO 10 J-1,JJ v-(J-1)/REAL(JJ-1) CALL POINT (PX,U,V,PTT(J,1,I)) CALL POINT (PY,U,V,PTT(J,2,I)) CALL POINT (PZ,U,V,PTT(J,3,I)) o CONTINUE BLEND IN S-DIRECTION C)(>C)h- DO 20 I=1,0L v=(I-1)/REAL(0L-1) Do 20 J-l,JJ U=(J-1)/REAL(JJ-1) CALL POINT (Px,U,v,PTs(J,1,I)) CALL POINT (PY,U,V,PTS(J,2,I)) CALL POINT (PZ,U,V,PTS(J,3,I)) 20 CONTINUE RETURN END C C********************* C SUBROUTINE INTNOD (P) This subroutine calculates the four internal control points. Array definition: P - coordinates of control points (363(363C5C3C) DIMENSION P(4,4) P(2,2)-P(2,l)+P(l,2)-P(l,l) P(2,3)-P(l,3)-P(l,“)+P(2,“) P(3,2)-P(3,l)-P(“,l)+P(“,2) P(3,3)-P(“,3)+P(3,“)-P(“,4) RETURN END C C********************* C) CDCDC)C3C3C5C3C3C5C3C3CDCDC)C3C3C3C3C) C B13 SUBROUTINE POINT (P,S,T,Q) This subroutine calculates a point for surface description. Array definitions: P - control points. SMAT - 8 matrix. TMAT - T matrix. M - M matrix. SM - S*M SMP - S*M*P MT - M*T Q - calculated surface point. Subroutine called: MMLT - matrix multiplication (Case Center library function). DIMENSION P(“,4),SMAT(“),TMAT(“),SM(4),SMP(4),Q(l) REAL M(“,4),MT(“) DATA Ml-le ,3. ,‘30 ,1. ,3. ,“60 ,3. ’00 ,‘30 ,3. ,0. ,0. ,le ,0. ,0. ,0./ SMAT(1)-s*s*s SMAT(2)=S*S SMAI(3)-s SMAT(4)-1 TMAT(l)-T*T*T TMAT(2)=T*T TMAT(3)=T TMAT(“)-l CALL MMLT (SM,SMAT,M,1,“,“) CALL MMLT (MT,M,TMAT,4,“,1) CALL MMLT (SMP,SM,P,1,“,“) CALL MMLT (Q,SMP,MT,1,“,1) RETURN END c******************** C C)C)C)C)CIC)C)C) SUBROUTINE EDGE (P,I,J) This subroutine calculates control points along a straight edge. Array definitions: P - control point coordinates. Bl“ DIMENSION P(4,4) IF (I.EQ.1) THEN P(J.2)=P(J.l)+((P(J.4)-P(J.l))/3.) P(J,3)-P(J,l)+((P(J,“)-P(J,1))*2./3.) ELSE P(2.J)-P(l.J)+((P(4,J)-P(1,J))/3.) P(3.J)=P(1.J)+((P(4.J)-P(1.J))*2./3.) ENDIF RETURN END PLOT ******************* 09000 SUBROUTINE SETPLT (SIZEX,SIZEY,SIZEZ) This subroutine sets up the plot and draws the axes for subroutine PLOT. Variable definitions: SIZEX,SIZEY,SIZEZ - scaling factors for controls points. VX,VY,VZ - view point coordinates. AX,AY,YZ - look at point coordinates. MAG - magnification factor. CX,CY - center position coordinates. SIZE - largest of SIZEX,SIZEY,SIZEZ. SIZEA - average of SIZEX,SIZEY,SIZEZ. The following subroutines are on the Prime system at The Case Center at Michigan State University. CARTVP - sets cartisan view point. LOOKAT - set lookat point. PERSPT - turns on or off perspective viewing. XUP,YUP,ZUP - defines which axis is up on plot. PPCENT - sets distance to 2-D viewing plane from look at point to view point as a percentage. DWINDO - sets bounds of area displayed on screen. CENTER - sets center point of display window. MACNFY - sets display magnification factor. MOVEA3 - move to specified coordinates (3-D). VECTOR - draw line to specified coordinates and draw an arrowhead (3-D). CHARTK - write text on plot. 000000000000000000000000000000000 COMMON /B/VX,VY,VZ,AX,AY,AZ,MAG,CX,CY REAL MAG SIZE-~10000. IF (SIZEX.CE.SIZE) SIZE-SIZEX IF (SIZEY.GE.SIZE) SIZE-SIZEY C5CDC) C B15 IF (SIZEZ.GE.SIZE) SIZE=SIZEZ SIZEA=(SIZEX+SIZEY+SIZEZ)/3 SET UP PLOT CALL CARTVP (VX,VY,VZ) CALL LOOKAT (AX,AY,AZ) CALL PERSPT (.FALSE.) IF (VX.EQ.O..AND.VY.EQ.O.) THEN CALL XUP ELSE CALL ZUP ENDIF CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL PPCENT DWINDO CENTER MAGNFY (100.) (-3.*SIZE,2.*SIZE,-2.*SIZE,3.*SIZE) (CX*SIZE,CY*SIZE) (MAG) DRAW AXES MOVEA3 VECTOR MOVEA3 CHARTK MOVEA3 VECTOR MOVEA3 CHARTK MOVEA3 VECTOR MOVEA3 CHARTK RETURN END (0.,0.,o.) (2.*SIZEX,0.,O.) (2.1*SIZEX,O.,O.) ('X',l.5) (0.,0.,o.) (O.,2.*SIZEY,O.) (O.,2.l*SIZEY,O.) ('Y',l.5) (0.,0.,o.) (O.,0.,l.5*SIZEZ) (O.,0.,l.6*SIZEZ) ('Z',1.5) C******************* C CDC)C3C3C3C363CIC3CDC36363 SUBROUTINE PLOT (PS,PT,OL,JJ) This subroutine plots the surfaces on the region set up in subroutine SETPLT. Array definitions: PS,PT - contains point locations for 3-D plots Variable definitions: OL,JJ - number of splines used in PS and PT to draw the surface. DIMENSION PS(ll,3,ll),PT(ll,3,ll) INTEGER 0L,JJ CECDCEC) non.— 20 C 816 DRAW SURFACE [First draw splines in S direction DO 10 I=1,0L Do 10 J=1,JJ IF (J.EQ.l) THEN CALL MOVEA3 (PS(J,1,I),PS(J,2,I),PS(J,3,I)) ELSE CALL DRAWA3 (PS(J,1,I),PS(J,2,I),PS(J,3,I)) ENDIF CONTINUE Then in T direction 00 20 I-1,0L DO 20 J-1,JJ IF (J.EQ.1) THEN CALL MOVEA3 (PT(J,l,I),PT(J,2,I),PT(J,3,I)) ELSE CALL DRAWA3 (PT(J,1,I),PT(J,2,I),PT(J,3,I)) ENDIF CONTINUE RETURN END C******************* C 00000000000‘00 000 SUBROUTINE LABPTS (PX,PY,PZ) This subroutine labels the moldboard control points. Array definitions: PX,PY,PZ - contains coordinates of control points. Variable definitions: Q - answer to question (character string). Q1 - numbers to plotted (character string). DIMENSION PX(“,“),PY(“,4),PZ(4,4) CHARACTER Q*3,Ql*32 Ql-' 1 2 3 4 5 6 7 8 910111213141516' LABEL POINTS Do 2 1-1,4 DO 2 J-l,“ CALL MovEA3 (PX(J,I),PY(J,I),PZ(J,I)) Q-Ql(((((I-1)*4+J)*2)-l):(((I-l)*4+J)*2)) CALL CHARTK (Q,l.) CONTINUE Bl7 RETURN END TRANSFORM ********************* 00000 SUBROUTINE DISTAN (PS,I,J,X,Y,Z,ANGLE1,ANGLE2,DIST) This subroutine calculates the distance the soil travels over an element. These calculations require translating and rotating elements. Array definitions: PS - coordinates of surface description points. Variable definitions: I,J - pointers indicating which element in P8 is to be translated and rotated. Points PS(J,*,I),PS(J+1,*,I),PS(J,*,I+1) and PS(J+1,*,I+1) form the element. X - x direction cosine of element orientation. Y - y direction cosine of element orientation. Z - z direction cosine of element orientation. ANGLEl - the first angle of rotation. ANGLEZ - the second angle of rotation. DIST - the distance the soil travels over the element. Subroutines called: TRANSL - translates point. ROTATE - rotates point. 000000000000000000000000000 DIMENSION PS(ll,3,ll) REAL LEN XS-X Y5=Y ZS-Z CALL TRANSL (PS(J,1,I),PS(J,2,I),PS(J,3,I),X1,Y1,Zl, +-PS(J,l,I),-PS(J,2,I),-PS(J,3,I)) CALL TRANSL (PS(J+l,l,I),PS(J+l,2,I),PS(J+1,3,I),X2,Y2,22, +-PS(J,l,I),-PS(J,2,I),-PS(J,3,I)) CALL TRANSL (PS(J+l,1,I+l),PS(J+l,2,I+l),PS(J+l,3,I+l),X3,Y3,Z3, +-PS(J,l,I),-PS(J,2,I),-PS(J,3,I)) CALL TRANSL (PS(J,1,I+l),PS(J,2,I+l),PS(J,3,I+1),X4,Y4,Z“, +-PS(J,l,I),-PS(J,2,I),-PS(J,3,I)) CALL ROTATE (X1,Yl,Zl,Xl,Yl,Zl,'Z',ANGLEl) CALL ROTATE (X2,Y2,ZZ,X2,Y2,22,'Z',ANGLEI) CALL ROTATE (X3,Y3,Z3,X3,Y3,Z3,'Z',ANGLEl) C CALL CALL CALL CALL CALL CALL CALL 318 ROTATE (X4,Y4,Z“,X“,Y4,Z“,'Z',ANGLE1) ROTATE (XS,Y5,ZS,XS,Y5,ZS,'Z',ANGLE1) ROTATE (X1,Yl,Zl,Xl,Yl,Zl,'Y',ANGLEZ) ROTATE (X2,Y2,22,X2,Y2,ZZ,'Y',ANGLEZ) ROTATE (X3,Y3,Z3,X3,Y3,23,'Y',ANGLE2) ROTATE (X4,Y4,Z“,X4,Y“,Z“,'Y',ANGLE2) ROTATE (XS,Y5,ZS,X5,YS,ZS,'Y',ANGLEZ) DIMY=(AES(Y1-T4)+AES(Y2-Y3))/2. DIMZ-(ABS(Zl-ZZ)+ABS(23-Z“))/2. LEN-SQRT(DIMY**2+DIMZ**2) DIST-DIMz/zs IF (DIST.GT.LEN) DIST-DIMY/YS IF (DIST.GT.LEN) DIST-LEN RETURN END C******************** C 0000000000000000000000 0 SUBROUTINE TRANEL (PS,I,J,ANGLE1,ANGLEZ,DIMY,DIMZ) This subroutine calculates the y and z dimension of an element. Array definitions: PS - surface desciption coordinates. Variable definitions: I,J - pointers indicating which element in PS is to be translated and rotated. ANGLEI - the first angle of rotation. ANGLEZ - the second angle of rotation. DIMY - calculated y dimension. DIME - calculated 2 dimension. Subroutines called: TRANSL - translates element. ROTATE - rotates element. DIMENSION PS(ll,3,ll) CALL TRANSL (PS(J,1,I),PS(J,2,I),PS(J,3,I),X1,Yl,Zl, +-PS(J,l,I),-PS(J,2,I),-PS(J,3,I)) CALL TRANSL (PS(J+1,1,I),PS(J+1,2,I),PS(J+1,3,I),X2,Y2,Z2, +-PS(J,l,I),-PS(J,2,I),-PS(J,3,I)) CALL TRANSL (PS(J+1,1,I+l),PS(J+1,2,I+1),PS(J+1,3,I+l),X3,Y3,Z3, +-PS(J,1,1),-PS(J,2,I),-PS(J,3,I)) CALL TRANSL (PS(J,1,I+1),PS(J,2,I+1),PS(J,3,I+1),X4,Y“,Zé, +-PS(J,1,1),-PS(J,2,I),-PS(J,3,I)) Bl9 (X1,Yl,Zl,Xl,Yl,Zl,'Z',ANGLEl) (X2,Y2,Z2,X2,Y2,ZZ,'Z',ANGLEI) (X3,Y3,23,X3,Y3,23,'Z',ANGLEl) (X4,Y“,Z4,X4,Y“,Z“,'Z',ANGLE1) (X1,Yl,Zl,Xl,Yl,Zl,'Y',ANGLEZ) (X2,Y2,ZZ,X2,Y2,ZZ,'Y',ANGLEZ) (X3,Y3,Z3,X3,Y3,Z3,'Y',ANGLE2) (x4,Y4,z4,x4,Y4,z4,'Y',ANGLE2) DIMY'(ABS(Yl—Y“)+ABS(Y2-Y3))/2. DIMZ-(ABS(Zl-ZZ)+ABS(23-Z“))/2. SUBROUTINE ROTATE (X,Y,Z,X1,Yl,Zl,AXIS,ANG) This subroutine rotates a point. Variable definitions: point to be rotated. Xl,Yl,Zl - point after rotation. AXIS - axis point is rotated about (character string). ANG - angle point is to be rotated. Subroutines called: ROT - calculates T matrix. MMLT - matrix multiplication (Case Center Math library function). C CALL ROTATE CALL ROTATE CALL ROTATE CALL ROTATE C CALL ROTATE CALL ROTATE CALL ROTATE CALL ROTATE C C RETURN END C c******************** C C C C 'C C C X,Y,Z - C C C C C C C C C C C DIMENSION T(4,4),P(4),RP(4) CHARACTER AXIS*1 Do 10 1-1,4 DO 10 J-l,“ IF (I.EQ.J) THEN T(I,J)-l. ELSE T(I.J)-0. ENDIF 10 CONTINUE P(1)-x P(2)-Y P(3)-z P(4)-l. IF (AXIS.EQ.'X') CALL ROT (T,2,3,ANG) C 320 IF (AXIS.EQ.'Y') CALL ROT (T,l,3,ANG) IF (AXIS.EQ.'Z') CALL ROT (T,l,2,ANG) CALL MMLT(RP,P,T,1,4,“) XI-RP(1) Yl-RP(2) Zl-RP(3) RETURN END c********************* C (EC)C5C3CDCSC5C363C5C5CDCMO C) C SUBROUTINE ROT (T,l,J,ANG) This subroutine calculates T matrix. Array definitions: T - work array for assigning values to used in subroutine ROTATE. Variable definitions: I,J - pointers in T matrix. ANG - angle of rotation. DIMENSION T(“,4) T(I,I)-COS(ANG) T(I,J)-SIN(ANC) T(J,I)--SIN(ANG) T(J,J)-COS(ANG) IF (I.EQ.1.AND.J.EQ.3) THEN T(I,J)--SIN(ANG) T(J,I)-SIN(ANG) ENDIF RETURN END C******************** C C)C)C)C)C)€)C) SUBROUTINE TRANSL (X,Y,Z,Xl,Yl,Zl,x2,Y2,ZZ) This subroutine translated a point. Variable definitions: X,Y,Z - point to be translated. X1,Yl,Zl - translated point. 821 X2,Y2,22 - distance to translated. Subroutine called: MMLT - matrix multiplication (Case Center Math library function). (3C5C3C3C3C10 DIMENSION T(“,“),P(4),TP(4) C5 D0 10 III,“ DO 10 J-l,“ IF (I.EQ.J) THEN T(I,J)-1. ELSE T(I,J)=0. ENDIF 10 CONTINUE P(1)-x P(2)=Y P(3)-z P(4)-l. T(4,1)-x2 T(4,2)-Y2 T(4,3)-zz CALL MMLT (TP,P,T,1,4,4) x1-TP(1) Yl-TP(2) Zl-TP(3) RETURN END NEWPTS ************************* C1C3CDC3C) SUBROUTINE NEWSCA (XS,YS,ZS,XM,YM,ZM,SIZEX,SIZEY,SIZEZ) This subroutine changes the scaling factors of the control points. Array definitions: XS,YX,ZS - coordinates of share control points. XM,YM,ZM - coordinates of moldboard control points. Variable definitions: SIZEX,SIZEY,SIXEZ - scaling factors for control points. (3(5C3C5C3C3C3C3C3C3C)C3C3 322 SIZEXI,SIZEY1,SIZEZI - intermediate values for SIZEX,SIZEY,SIZEZ. LUNTO - logical unit number for terminal output. LUNTI - logical unit number for terminal input. 000000 COMMON /LUN/LUNTI,LUNTO DIMENSION xs(4,4),Ys(4,4),zs(4,4),XM(4,4),YM(4,4),ZM(4,4) SIZEX1=SIZEX SIZEYl-SIZEY SIZEZl-SIZEZ WRITE (LUNTI,'(A,F9.3)') 'x-SCALE- ',SIZEXI WRITE (LUNTI,'(A,F9.3)') 'Y-SCALE- ',SIZEYl WRITE (LUNTI,'(A,F9.3)') 'Z-SCLAE= ',SIZEZI 5 WRITE (LUNTI,*) 'ENTER NEW x-SCALE, Y-SCALE, z-SCALE.' READ (LUNTO,*,ERR-5) SIZEX,SIZEY,SIZEZ Do 10 1-1,4 Do 10 J-l,“ XS(I,J)-XS(I,J)*SIZEX/SIZEX1 YS(I,J)-YS(I,J)*SIZEY/SIZEY1 ZS(I,J)-ZS(I,J)*SIZEZ/SIZEZl XM(I,J)-XM(I,J)*SIZEX/SIZEX1 YM(I,J)-YM(I,J)*SIZEY/SIZEY1 ZM(I,J)-2M(I,J)*SIZEZ/SIZE21 10 CONTINUE ' C RETURN END C C********************** C SUBROUTINE NEWPM (PX,PY,PZ) C C This subroutine changes the moldboard control points. C C Array definitions: C C PX,PY,PZ - coordinates of moldboard control C points. C C LUNTO - logical unit number for terminal output. C LUNTI - logical unit number for terminal input. C COMMON /LUN/LUNTI,LUNTO DIMENSION PX(“,“),PY(“,“),PZ(4,4) WRITE (LUNTI,*) ' MOLDBOARD DESCRIPTIVE POINTS' WRITE (LUNTI,'(A2“)') 'PTI X Y 2' C DO 10 I-l,“ DO 10 J-l,“ IF (((I-l)*“+J).EQ.S) GOTO 10 IF (((I-l)*4+J).EQ.6) GOTO 10 IF (((I-1)*4+J).EQ.7) GOTO 10 10 15 20 C 823 IF (((I-l)*“+J).EQ.9) GOTO 10 IF (((I-1)*4+J).EQ.10) GOTO 10 IF (((I-l)*“+J).EQ.ll) GOTO 10 WRITE (LUNTI,'(IZ,3(3X,F6.3))') ((I-l)*“+J),PX(J,I), + PY(J,I),PZ(J,I) CONTINUE WRITE (LUNTI,'(/,A34)') 'ENTER PT# To BE EDITED.(0 To STOP)‘ READ (LUNTO,*,ERR=15) J IF (J.GT.l6) GOTO 15 IF (J.EQ.0) GOTO 20 I-((J-l)/4)+l J=MOD(J-l,“)+l WRITE (LUNTI,'(A11)') 'ENTER X,Y,Z' READ (LUNTO,*,ERR-15) PX(J,I),PY(J,I),PZ(J,I) GOTO 15 CONTINUE RETURN END C******************** C 00000000000 10 15 SUBROUTINE NEWPS (PX,PY,PZ) This subroutine changes the share control points. Array definitions: PX,PY,PZ - coordinates of moldboard control points. LUNTO - logical unit number for terminal output. LUNTI - logical unit number for terminal input. COMMON /LUN/LUNTI,LUNTO DIMENSION PX(“,4),PY(4,4),PZ(“,“) WRITE (LUNTI,*) ' SHARE DESCRIPTIVE POINTS.‘ WRITE (LUNTI,'(A2“)') 'PT# x Y 2' Do 10 I-l,“ Do 10 J-l,“ IF (((I-I)*4+J).EQ.1) GOTO 5 IF (((1—1)*4+J).EQ.4) GOTO 5 IF (((I-I)*4+J).EQ.13) GOTO 5 IF (((I-l)*“+J).EQ.l6) GOTO 5 GOTO 10 WRITE (LUNTI,'(12,3(3X,F6.3))') ((I—1)*4+J),Px(J,I), + PY(J,I),PZ(J,I) CONTINUE WRITE (LUNTI,'(/,A34)') 'ENTER PT# TO BE EDITED.(O TO STOP)‘ READ (LUNTO,*,ERR-15) J IF (J.GT.16) GOTO 15 IR (J.EQ.0) GOTO 20 824 I=((J-l)/“)+l J'MOD(J-l,4)+l WRITE (LUNTI,'(A11)') 'ENTER X,Y,Z' READ (LUNTO,*,ERR=15) PX(J,I),PY(J,I),PZ(J,I) GOTO 15 20 CONTINUE RETURN END C c PARAM C C******************** C SUBROUTINE PARAM (SOILTY) This subroutine allow editing of the soil and tool parameters. Variable definitions: DFILE - name of operating conditions file (character string). SOILTY - name of soil type (character string). GAMMA - soil bulk density (kg/cu m). COHES - soil cohesion (kpa). PHI - soil internal friction (deg). MUP - soil-metal friction. ADHES - soil-metal adhesion (kpa). VELTL - tool velocity (m/s). DEPTHF - plowing depth (m). LUNTI - logical unit number for terminal input. LUNTO - logical unit number for terminal output. LUNDI - logical unit number for data input. Q - answer to question (character string). 00000000000000000000000 COMMON /A/GAMMA,COHES,PHI,MUP,ADHES,VELTL,DEPTHP COMMON /LUN/LUNTI,LUNTO CHARACTER SOILTY*“0 CHARACTER Q*3 CHARACTER DFILE*80 REAL GAMMA,COHES,PHI,MUP,ADHES,VELTL,DEPTHF DATA LUNDI/lO/ CALL NEWPAG WRITE (LUNTI,'(10X,A)') 'SOIL PARAMETERS' WRITE (LUNTI,'(A,T60,A)')' 1) SOIL TYPE: ',SOILTY WRITE (LUNTI,100)' 2) BULK DENSITY (RG/CU—M) ',GAMMA WRITE (LUNTI,100)' 3) COHESION (kPA) ',COHES WRITE (LUNTI,lOO)' 4) INTERNAL SOIL FRICTION ANGLE (DEG) ',PHI WRITE (LUNTI,100)' 5) SOIL-METAL FRICTION COEFFICIENT ',MUP WRITE (LUNTI,lOO)' 6) SOIL ADHESION (KPA)',ADHES WRITE (LUNTI,'(10X,A)')'TOOL PARAMETERS' 10 100 C3C3C5C3C) C5C3C3€3C3C36563C3 + B25 WRITE (LUNTI,100)' 7) FORWARD VELOCITY (M/S) ',VELTL WRITE (LUNTI,lOO)' 8) TOOL DEPTH (M) ',DEPTHF WRITE (LUNTI,'(A)') 'ENTER PARAMETER NUMBER To BE CHANGED. ', '(0 TO STOP)' READ (LUNTO,*) I IF (I.EQ.O) GOTO 20 WRITE (LUNTI,*) 'ENTER NEW VALUE FOR PARAMETER NUMBER ',I IF (I.EQ.1) READ (LUNTO,'(A20)’) SOILTY IF (I.EQ.2) READ (LUNTO,*) GAMMA IF (I.EQ.3) READ (LUNTO,*) COHES IF (I.EQ.4) READ (LUNTO,*) PHI IF (I.EQ.5) READ (LUNTO,*) MUP IF (I.EQ.6) READ (LUNTO,*) ADHES IF (I.EQ.7) READ (LUNTO,*) VELTL IF (I.EQ.8) READ (LUNTO,*) DEPTHF GOTO 10 WRITE (LUNI,*) ' STORE MODIFIED DATA?(Y OR N)’ READ (LUNTO,'(A3)') Q IF (Q.EQ.'N') GOTO 30 WRITE (LUNTI,*) 'ENTER NEW FILE NAME.’ READ (LUNTO,'(A20)') DPILE OPEN (UNIT=LUNDI,FILE=DFILE,STATUS='NEW',ERR820) WRITE (LUNDI,'(A20)') SOILTY WRITE (LUNDI,*) GAMMA WRITE (LUNDI,*) COMES WRITE (LUNDI,*) PHI WRITE (LUNDI ,*) MUP WRITE (LUNDI,*) ADHES WRITE (LUNDI,*) VELTL WRITE (LUNDI,*) DEPTHF CLOSE (LUNDI) RETURN FORMAT (A,T60,F9.3) END ANGLE ******************** SUBROUTINE ANGLE (PS,I,J,X,Y,ALPHA) This subroutine calculates the angle between one of axes and the element. Array definitions: PS - coordinates of surface description points. Variable definitions: 00000000000 000 . 000 826 I,J - pointers indicating which element in P8 is to have the orientation computed for. X,Y - numbers indicating the plane from which the angle is calculated. ALPHA - calculated angle. Subroutines called: INTERP - interpolates between to points. DIMENSION PS(11,3,11) INTEGER X,Y,Z,O,P DATA PI/3.14159265359/ Check which plane is to be considered. IF (XOEQOIOANDOYOEQOZ) 233 IF (X.EQ.2.AND.Y.EQ.3) 2'1 IF (XOEQO3OANDOYOEQOI) 2'2 Find point closest to 0,0,0 IF (PS(J,Z,I).GE.PS(J,Z,I+l).AND.PS(J,Z,I).GE.PS(J+1,Z,I)) THEN IF (PS(J,z,I+1).GE.PS(J+1,z,I)) THEN K-J+l L=J M=J N=I o-I P-I+1 ELSE K-J L-J M-J+1 N-I+1 o-I P-I ENDIF ELSE IF (PS(J,Z,I+1).GE.PS(J,Z,I).AND.PS(J,Z,I+1).GE.PS(J+1,Z,I)) + THEN . IF (PS(J,Z,I).GE.PS(J+1,Z,I)) THEN K=J+1 L-J M-J NaI o-I+1 P-I ELSE x-J L-J M-J+1 N-I o=I+1 827 P81 ENDIF ELSE IF (PS(J+l,Z,I).GE.PS(J,Z,I).AND.PS(J+1,Z,I).GE.PS(J,Z,I+1)) + THEN IF (PS(J,Z,I).GE.PS(J,Z,I+1)) THEN K-J L-J+l M-J N=I+l 0-I P-I ELSE K-J L-J+l M-J N-I O-I P-I+l ENDIF ENDIF C C Interpolate to find the point used to calculate the C angle. C CALL INTERP (PS(K,Z,N),PS(L,Z,O),PS(M,Z,P), + PS(K,X,N),PS(L,X,O),XX) CALL INTERP (PS(K,Z,N),PS(L,Z,O),PS(M,Z,P), + PS(K,Y,N),PS(L,Y,O),YY) C IF ((XX-PS(M,X,P)).LT..001.AND.(XX-PS(M,X,P)).GT.-.001) THEN ALPHA-PI/Z. ELSE RATYx-((YY-PS(M,Y,P))/(xx-PS(M,x,P))) IF ((YY-PS(M,Y,P))/(XX-PS(M,X,P)).LT.0.) THEN ALPHAa-ATAN(-RATYX) ELSE ALPHA-ATAN (RATYX) ENDIF ENDIF C RETURN END C C******************* C SUBROUTINE INTERP (MINI,MAXl,MIDI,MIN2,MAX2,MID2) C C This subroutine interpolates between to points. C C Variable definitions: C C MINI - minimum independent value. C MAXI - maximum independent value. C MIDI - middle independent value. B28 C MINZ - minimum dependent value. C MAXZ - maximum dependent value. C MIDZ - middle dependent value (calculated). C REAL MINI,MAXl,MID1,MIN2,MAX2,MIDZ C IF ((MAXl-MINI).EQ.O.) THEN MIDZ-MAXI ELSE MID2-MIN2+((MIDl-MIN1)/(MAXl-MIN1)*(MAX2-MIN2)) ENDIF C RETURN END C C FORCES C c******************** C SUBROUTINE COMFOR (PMS,PSS,OLS,JJS,OLM,JJM,SOILTY) This subroutine calculates the forces the soil applies to the tool. Array definitions: PMS - coordinates of moldboard surface description points. PSS - coordinates of share surface description points. SFORCE - Share forces. MFORCE - Moldboard forces. TOTFOR - Total forces. TOTMOM - Total moments. Variable definitions: OLM,OLS - number of horizontal lines drawn on moldboard and share respectively. JJM,JJS - number of vertical lines drawn on moldboard and share respectively. SOILTY - soil type (character string). LUNTI - logical unit number for terminal input. LUNTO - logiéal unit number for terminal output. LUNDA - logical unit number for file data storage. LUNDB - logical unit number for file data storage. Subroutines called: ELEFOR - calculates element forces. SUMFOR - sums the forces over all elements. 000000000000000000000000000000000 COMMON /A/GAMMA,COHES,PHI,MUP,ADHES,VELTL,DEPTHF 829 COMMON /LUN/LUNTI,LUNTO COMMON /LUND/LUNDA,LUNDB DIMENSION SFORCE(11,3,ll,lO),MFORCE(ll,3,ll,10) +,PMS(11,3,11),PSS(11,3,ll),TOTFOR(3,2),TOTMOM(3,2) +,XNS(11),YNS(11),ZNS(11),XNM(ll),YNM(ll),ZNM(11) REAL MUP,MFORCE 000 0O‘Ui0 000 INTEGER OLS,JJS,OLM,JJM CHARACTER SOILTY*40 IC=O OPEN (LUNDB,FILE-'D_FORCES',STATUSs'UNKNOWN') (LUNDB,'(//A)') 'SOIL AND OPERATING CONDITIONS' (LUNDB,'(A,T20,A)') 'SOIL TYPE',SOILTY WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE (LUNDB,5) (LUNDB,5) (LUNDB,5) (LUNDB,5) (LUNDB,5) (LUNDB,5) (LUNDB,5) (LUNDA.'(////A)') ' 'SOIL BULK DENSITY (KG/CU M)',GAMMA 'SOIL COHESION (KPA)',COHES 'SOIL INTERNAL FRICTION ANGLE (DEG)',PHI 'SOIL-METAL FRICTION COEFFICIENT',MUP 'SOIL-METAL ADHESION (KPA)',ADHES 'FORWARD VELOCITY (M/S)',VELTL 'TOOL DEPTH (M)',DEPTHF SOIL AND OPERATING CONDITIONS' (LUNDA,'(A,T30,A)') 'SOIL TYPE',SOILTY (LUNDA,S) (LUNDA,5) (LUNDA,5) (LUNDA,5) (LUNDA,S) (LUNDA,5) (LUNDA,5) (LUNDA,6) (LUNDA,6) 'SOIL BULK DENSITY (KG/CU M)',GAMMA 'SOIL COHESION (RPA)',COHES 'SOIL INTERNAL FRICTION ANGLE (DEG)',FHI 'SOIL-METAL FRICTION COEFFICIENT',MUP 'SOIL-METAL ADHESION (KPA)',ADHES 'FORWARD VELOCITY (M/S)',VELTL 'TOOL DEPTH (M)',DEPTHF 'NUMBER OF SHARE ELEMENTS',(JJS-l)*(OLS-l) 'NUMBER OF MOLDBOARD ELEMENTS',(JJM-1)*(0LM-1) FORMAT (A,T“O,F10.“) FORMAT (A,T“O,I3) WRITE (LUNTI,*) 'ENTER LOCATION OF ZERO MOMENT.(X,Y,Z)' READ (LUNTO,*) X,Y,Z WRITE (LUNDB.'(////A)') ' COMPUTE FORCES ON SHARE DO 10 J'1,JJS-l DO 10 I-l,OLS-l SHARE ELEMENT FORCES' Assign force cosines. IF (J.EQ.1) THEN “-1 e YN'O. ZN'O e ELSE xN-XNs(I) 000 000 000 0001-0 000 15 B30 YNsYNs(I) ZN-zNS(I) ENDIF IF (XNS(I).LE.0..AND.YNS(I).LE.O..AND.ZNS(I).LE.0.) THEN II-I+1 JJ-J GOTO 100 ENDIF Calculate element forces. CALL ELEFOR (PSS,I,J,SFORCE,'S',XN,YN,ZN,IC) AVEX'(PSS(J,1,I)+PSS(J+1,1,I)+PSS(J+1,1,I+l)+PSS(J,l,I+l))/“. AVEY-(PSS(J,2,I)+PSS(J+1,2,I)+PSS(J+1,2,I+1)+PSS(J,2,I+1))/“. AVEZ-(PSS(J,3,I)+PSS(J+1,3,I)+PSS(J+1,3,I+l)+PSS(J,3,I+l))/“. Sum forces. CALL SUMFOR (SFORCE,I,J,X,Y,Z,AVEX,AVEY,AVEZ) Calculate forces cosines for next row. IF (SFORCE(J,1,I,lO).LE..OOOl.AND.SFORCE(J,2,I,10).LE..0001 + .AND.SFORCE(J,3,I,lO).LE..OOOl) THEN XNS(I)=O. YNS(I)-0. ZNS(I)-o. ELSE XNS(I)--(SFORCE(J,1,I,lO))/SQRT(SFORCE(J,1,I,lO)**2+ SFORCE(J,2,I,10)**2+SFORCE(J,3,I,lO)**2) YNS(I)--(SFORCE(J,2,I,lO))/SQRT(SFORCE(J,1,I,10)**2+ + SFORCE(J,2,I,10)**2+SFORCE(J,3,I,10)**2) ZNS(I)--(SFORCE(J,3,I,10))ISQRT(SFORCE(J,1,I,lO)**2+ + SFORCE(J,2,I,IO)**2+SFORCE(J,3,I,10)**2) ENDIF + CONTINUE Compute forces on moldboard. WRITE (LUNDB,'(////A)') ' MOLDBOARD ELEMENT FORCES' Do 20 J-1,JJM-1 DO 20 I-1,0LM-1 Assign force cosines. IF (J.EQ.1) THEN Ic-l IF ((PMS(J,2,I).GE.PSS(JJS,2,IC).AND.PMS(J,2,I).LT. + PSS(JJS,2,IC+1)).OR.I.EQ.1) GOTO 16 IC=1C+1 GOTO 15 B31 16 XN=XNs(IC) YN-YNS(IC) ZN=ZNS(IC) ELSE XN-XNM(I) YN-YNM(I) ZN-ZNM(I) ENDIF Calculate element forces. 000 CALL ELEFOR (PMS,I,J,MFORCE,'M',XN,YN,ZN,IC) AVEx-(PMS(J,1,I)+PMS(J+1,1,I)+PMS(J+1,1,I+1)+PMS(J,1,I+1))/4. AVEY-(PMS(J,2,I)+PMS(J+1,2,I)+PMS(J+1,2,I+l)+PMS(J,2,I+1))/4. AVEz-(PMS(J,3,I)+PMS(J+1,3,I)+PMS(J+1,3,I+1)+PMS(J,3,I+1))/4. C Sum forces. CALL SUMFOR (MFORCE,I,J,X,Y,Z,AVEX,AVEY,AVEZ) Calculate force cosines for next row. 000 IF (MFORCE(J,1,I,lO).LE..OOOl.AND.MFORCE(J,2,I,10).LE.0. + .AND.MFORCE(J,3,I,10).LE..0001) THEN XNM(I)-0. YNM(I)-0. ZNM(I)-o. ELSE XNM(I)--(MFORCE(J,1,I,10))/SQRT(MFORCE(J,1,I,10)**2+ + MFORCE(J,2,I,lO)**2+MFORCE(J,3,I,10)**2) YNM(I)--(MFORCE(J,2,I,10))/SQRT(MFORCE(J,1,I,10)**2+ + MFORCE(J,2,I,10)**2+MFORCE(J,3,I,lO)**2) ZNM(I)--(MFORCE(J,3,I,10))/SQRT(MFORCE(J,1,I,10)**2+ + MFORCE(J,2,I,10)**2+MFORCE(J,3,I,lO)**2) ENDIF O CONTINUE Sum forces over entire tool. 000N0 DO 30 K-l,3 TOTF0R(R,1)-o. TOTMOM(K,l)-O. TOTFOR(R,2)-o. TOTMOM(K,2)-o. DO 40 J-l,JJS-l DO 40 I-l,OLS-l TOTMOM(K,l)-TOTMOM(K,l)+SFORCE(J,K,I,9) TOTFOR(K,1)-TOTFOR(K,1)+SFORCE(J,K, I, 10) 40 CONTINUE DO 30 J'1,JJM-1 50 60 F‘C5C5C) 1000 + B32 DO 30 I=l,OLM-l TOTMOM(K,2)-TOTMOM(K,2)+MFORCE(J,K,I,9) TOTFOR(K,2)=TOTFOR(K,2)+MFORCE(J,K,I,10) CONTINUE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE WRITE (LUNDB.'(////)') (LUNDB,50) ' TOOL TOTALS','X','Y','Z' (LUNDB,'(/,A)') ' FORCES (N)' (LUNDB,60) 'SHARE',(TOTFOR(R,1),K=1,3) (LUNDB,60) 'MOLDBOARD',(TOTFOR(K,2),R-1,3) (LUNDB,'(T33,A)') ' (LUNDB,60) 'TOTAL',(TOTFOR(K,1)+TOTFOR(K,2),K-l,3) (LUNDB,'(//A)') ' MOMENTS (N-M)‘ (LUNDB,60) 'SHARE',(TOTMOM(K,1),K-l,3) (LUNDB,60) 'MOLDBOARD',(TOTMOM(R,2),R-1,3) (LUNDB,'(T33,A)') ' (LUNDB,6O) 'TOTAL',(TOTMOM(R,1)+T01MOM(R,2),R-1,3) (LUNDB,60) 'LOCATION OF ZERO MOMENT',x,Y,z (LUNDA.'(//)') (LUNDA,50) ' TOOL TOTALS','x','Y','z' (LUNDA,'(/,A)') ' FORCES (N)' (LUNDA,60) 'SHARE',(TOTFOR(R,1),K=1,3) '(LUNDA,60) 'MOLDBOARD',(TOTFOR(K,2),K'1,3) (LUNDA,'(T33,A)') ' (LUNDA,60) 'TOTAL',(TOTFOR(K,l)+TOTFOR(K,2),K=I,3) (LUNTI,50) ' TOOL TOTALS','X', (LUNTI.'(/,A)') ' FORCES (N)' (LUNTI,60) 'SHARE',(TOTFOR(K,1),K-l,3) (LUNTI,60) 'MOLDBOARD',(TOTFOR(K,2),K-1,3) IYI’VZO (LUNTI,'(T33,A)') ' (LUNTI,60) 'TOTAL‘,(TOTFOR(K,l)+TOTFOR(K,2),K-1,3) (LUNTI,'(//A)') ' MOMENTS (N-M)' (LUNTI,60) 'SHARE',(TOTMOM(K,1),K=1,3) (LUNTI,60) 'MOLDBOARD',(TOTMOM(R,2),K-l,3) (LUNTI,'(T33,A)') ' (LUNTI,60) 'TOTAL',(TOTMOM(K,l)+TOTMOM(K,2),K=1,3) (LUNTI,60) 'LOCATION OF ZERO MOMENT',X,Y,Z FORMAT (A,T28,3(TR11,A)) FORMAT (A,T33,3(F10.2,2X)) CLOSE RETURN (LUNDB) Write message. WRITE WRITE WRITE FORHAT ( '******************** ATTENTION ********************v’/ ' SOIL IS NOT IN CONTACT WITH SURFACE AT POINT ',12,12) CLOSE (LUNTI,1000) II,JJ (LUNDA,1000) II,JJ (LUNDB,1000) II,JJ (LUNDB) C B33 RETURN C********************* C 000000000000000000000000000000000000000000000000 SUBROUTINE ELEFOR (PMS,I,J,FORCE,TOOLP,XN,YN,ZN,IC) This subroutine calculates the soil forces on an element. Array definitions: PMS - coordinates of surface description points. I,J - pointers indicating which element in PMS is to have forces calculated for. FORCE - calculated forces for elements where lst and 3rd dimensions indicate element 2nd dimension indicates coordinate l - x; 2 - y; 3 - 2 4th indicates which force - normal load - soil-metal friction adhesion - moments for each element - total force for each element VELM - velocity of soil over moldboard element. VELS - velocity of soil over share element. UIL‘UWNH l Variable definitions: TOOLP - indicates which tool part is being calculated. 8 for share, M for moldboard (character string) SOILTY - name of soil type (character string). GAMMA - soil bulk density (kg/cu m). COMES - soil cohesion (kpa). PHI - soil internal friction (deg). MUP - soil-metal friction. ADHES - soil-metal adhesion (kpa). VELTL - tool velocity (m/s). DEPTHF - plowing depth (m). XN,YN,ZN - force direction cosines. IC - pointer to indicate which share element is before moldboard element. MU - internal soil friction coefficient. F0 - contact area of soil block and tool. Fl - area of forward shear failure surface. WEIGHT - weight of soil block. ACCEL - soil acceleration. NO - normal load on tool. LUNTI - logical unit number for terminal input. LUNTO - logical unit number for terminal output. LUNDA - logical unit number for data file. 00000000 000 000 834 LUNDB - logical unit number for data file. Subroutines called: ANGLE - computes angles of angles elements. TRANEL - translates elements. DISTAN - computes distance soil travels over element. COMMON /A/GAMMA,COHES,PHI,MUP,ADHES,VELTL,DEPTHF COMMON /LUN/LUNTI,LUNTO COMMON /LUND/LUNDA,LUNDB DIMENSION PMS(ll,3,ll),FORCE(ll,3,ll,5),VELM(ll),VELS(ll) REAL MU,MUP,N0 CHARACTER TOOLP*1 SAVE VELM,VELS DATA PI/3.l“lS9265“/ Calculate element orientation CALL ANGLE (PMS,I,J,1,2,ALPHA) CALL ANGLE (PMS,I,J,3,1,DELTA) PHIP=ATAN(SIN(ALPHA)*TAN(DELTA)) BETA-.5*(90.-PHI)/(180./PI) Compute other parameters IF (J.EQ.1.AND.TOOLP.EQ.'S') THEN COHESE-COHES*1000. ELSE COHESE-o. ENDIF Mu-TAN(PHI/(180./PI)) CALL TRANEL (PMS,I,J,(90./(180./PI)-ALPHA),-PHIP,DIMY1,DIMZl) FO-DIMY1*DIMZI CALL TRANEL (PMS,I,J,(90./(180./PI)-ALPHA),-BETA,DIMY,DIMZ) Fl-DEPTHF/SIN(BETA)*DIMY WEIGHTsGAMMA*9.81*F1*DIMz Calculate force direction cosines. IF (J.EQ.1.AND.TOOLP.EQ.'S') THEN XNl-SIN(DELTA) YNl'Oe ZNl-Cos(DELTA) ELSE XN-YN/TAN(ALPHA)+ZN*TAN(DELTA) XNl-XN/SQRT(XN**2+YN**2+ZN**2) YNl-YN/SQRT(XN**2+YN**2+ZN**2) ZN1a2N/SQRT(XN**2+YN**2+EN**2) ENDIF Compute accelerations. B35 CALL DISTAN (PMS,I,J,XN1,YN1,ZN1,(90./(l80./PI)-ALPHA), + -PHIP,DIST) 000 000 000 SDIST-DIM21*COS(PHIP)/SIN(BETA) TIME-DIST/VELTL IF (J.EQ.1) THEN IF (TOOLP.EQ.'S') THEN VELI -0 e VELs(I)-SDIST/TIME VELz-VELS(I) ELSE VEL1-VELS(IC) VELM(I)-SDIST/TIME VEL2-VELM(I) ENDIF ELSE IF (TOOLP.EQ.'S') THEN VELl-VELS(I) VELS(I)-SDIST/TIME VEL2-VELS(I) ELSE VEL1-VELM(I) VELM(I)-SDIST/TIME VEL2-VELM(I) ENDIF ENDIF ACCEL-GAMMA*Fl*DIMZ*(VEL2-VEL1)/TIME NO'(COHESE*F1+ACCEL)*COS(PHIP-BETA)+WEIGHT*SIN(PHIP) IF (NO.LE.O.) N030. Calculate normal load. FORCE(J,l,I,l)-N0*COS(PHIP)*SIN(ALPHA) FORCE(J,2,I,1)I-NO*COS(PHIP)*COS(ALPHA) FORCE(J,3,I,l)--NO*SIN(PHIP) Calculate Soil-metal frictional force. FORCE(J,1,I,2)-N0*MUP*(XN1) FORCE(J,2,I,2)=N0*MUP*(YN1) FORCE(J,3,I,Z)-NO*MUP*(ZN1) Calculate adhesion force. FORCE(J,1,I,3)-ADHES*F0*(XN1) FORCE(J,2,I,3)-ADHES*F0*(YNI) FORCE(J,3,I,3)=ADHES*F0*(ZN1) Print out info to LUNDB. WRITE (LUNDB,'(//A)') 'ELEMENT COORDINATES' WRITE (LUNDB,'(11X,3(A,9X))') 'X','Y','Z' WRITE (LUNDB,3S) I,J,PMS(J,I,I),PMS(J,2,I),PMS(J,3,I) B36 WRITE (LUNDB,35) I,J+1,PMS(J+1,1,I),PMS(J+1,2,I),PMS(J+1,3,I) WRITE (LUNDB,35) I+l,J+1,PMS(J+l,1,I+1),PMS(J+1,2,I+1), + PMS(J+1,3,I+1) WRITE (LUNDB,35) I+1,J,PMS(J,1,I+l),PMS(J,2,I+1),PMS(J,3,I+1) C WRITE (LUNDB,'(A,T28,3(TR11,A))') ' FORCES (N)','X','Y','Z' WRITE (LUNDB,50)'NORMAL LOAD',(FORCE(J,K,I,1),K=1,3) WRITE (LUNDB,50)'SOIL-METAL FRICTION',(FORCE(J,K,I,2),K=1,3) WRITE (LUNDB,50)'ADHESION',(FORCE(J,K,I,3),K=1,3) C 35 FORMAT (12,3X,12,3(F9.3)) 50 FORMAT (A,T33,3(F10.2,2X)) C RETURN END C C******************** C SUBROUTINE SUMFOR (FORCE,I,J,X,Y,Z,AVEX,AVEY,AVEZ) C C This subroutine sums forces for an element. C C Array definitions: C C FORCE - forces values to be summed. C C Variable definitions: c . C I,J - pointers indication which element is being C considered. C X,Y,Z - coordinates of point force moments are being C summed about. C AVEX,AVEY,AVEZ - coordinates of center of point. C C LUNDA - logical unit number for data file. C LUNDB - logical unit number for data file. C COMMON /LUND/LUNDA,LUNDB DIMENSION FORCE(11,3,11,5) C FORCE(J,K,I,S)=0. 5 CONTINUE C C Sum forces. C no 10 Rs1,3 FORCE(J,1,I,5)-FORCE(J,1,I,5)+FORCE(J,1,I,K) FORCE(J,2,I,S)-FORCE(J,2,I,5)+FORCE(J,2,I,K) FORCE(J,3,I,5)-FORCE(J,3,I,5)+FORCE(J,3,I,K) o CONTINUE Calculate moments. 0001- B37 FORCE(J,l,I,“)=(FORCE(J,2,I,5)*(Z-AVEZ)) + -(FORCE(J,3,I,lO)*(Y-AVEY)) FORCE(J,2,I,“)--(FORCE(J,l,I,5)*(Z-AVEZ)) + +(FORCE(J,3,I,S)*(X-AVEX)) FORCE(J,3,I,“)=(FORCE(J,l,I,5)*(Y-AVEY)) + -(FORCE(J,2,I,5)*(X-AVEX)) WRITE (LUNDB,'(T33,36A)')' -------- ' WRITE (LUNDB,30) 'TOTALS',(FORCE(J,K,I,10),K-l,3) WRITE (LUNDB,'(/)') WRITE (LUNDB,30) 'DISTANCE TO ZERO MOMENT',x-AVEx,Y-AVEY,z-AVEZ WRITE (LUNDB,30) 'MOMENT (N-M)',(FORCE(J,R,I,9),R=1,3) 3o FORMAT (A,T33,3(F10.2,2x)) RETURN END APPENDIX C PLOW DATA FILES PLOW DATA FILES This section contains the data files used to generate the information for this research. Each file will be referred to by the name as it exists on the Prime 750 located at The Case Center for Computer Aided Design, Michigan State University. A brief explanation of the function of each file will also be included. Those interested in a detailed description of each value are encouraged to review the fortran source code for the variable name the values are read into. The first file is D_TINE. It is the geometry file for the 63 mm wide inclined blade. 0.357 0.063 0.250 0.000 0.000 0.000 0.083 0.000 0.083 0.167 0.000 0.167 0.089 0.000 0.062 0.000 0.333 0.000 0.083 0.333 0.083 0.167 0.333 0.167 0.250 0.333 0.250 0.000 0.667 0.000 0.083 0.667 0.083 0.167 0.667 0.167 0.250 0.667 0.250 0.000 0.063 0.000 0.083 1.000 0.083 0.167 1.000 0.167 0.089 0.063 0.062 0.089 0.000 0.062 0.178 0.000 0.125 0.268 0.000 0.187 0.357 0.000 0.250 0.089 0.021 0.062 0.500 0.333 0.500 0.750 0.357 0.089 0.500 0.750 0-357 0.089 0.178 0.268 0-357 The 0.3“59 0.0000 0.0359 0.0719 0.1078 0.1153 0.1513 0.1658 0.2018 0.2306 0.2“52 0.2811 0.2957 0.3“59 0.3605 0.3751 0.3896 0.1078 0.18“2 0.2“76 0.2682 0.1958 0.2722 0.703“ 0.7239 0.2838 0.“962 0.8185 0.8128 0.3718 0.58“2 0.8382 0.8325 0.333 0.021 0.0“2 0.667 0.667 0.0“2 0.063 0.063 0.063 0.063 0.“07“ 0.0000 0.0000 0.0000 0.0000 0.1358 0.1358 0.106“ 0.106“ 0.2716 0.2“22 0.2“22 0.2128 0.“07“ 0.3780 0.3“86 0.3192 0.0000 0.0000 0.0000 0.0991 0.0991 0.“597 0.“572 0.1981 0.3073 0.53“3 0.2972 0.“06“ 0.“890 0.56“3 0.750 0.250 0.062 00500 0.750 0.250 0.062 0.125 0.187 0.250 0.259“ 0.0000 0.0160 0.0320 0.0“80 0.0000 0.0160 0.0321 0.0“81 0.0000 0.0160 0.0321 0.0“81 0.0000 0.0160 0.0321 0.0“81 0.0“80 0.0826 0.1651 0.259“ 0.0“7“ 0.0819 0.“391 0.533“ 0.0“67 0.0“67 0.1671 0.279“ 0.0“61 0.0“61 0.1270 C2 following file is D_FORD. It is the geometry file for the 16 inch wide Ford moldboard plow. C3 The following file is D_FORDPLOW. It contains the descriptor points for the 16 inch wide Ford moldboard plow. \OCDNGU'It'WNI—I file. moldboard plow model 0.198“ 0.0000 0.1285 0.2301 0.3“59 0.3896 0.2886 0.1078 0.1723 0.212“ 0.2680 0.360“ 0.“627 0.6070 0.“955 0.3718 0.5638 0.639“ 0.7817 0.2“92 0.2682 0.3033 0.3235 0.“3“0 0.5“53 0.6663 0.7501 0.7530 0.6“72 005081 0.“003 0.7990 0.8325 0.8181 .1035 .0000 .1502 .2673 .“07“ .3192 0.2053 0.0000 0.002“ 000000 -0.0030 0.0635 0.1827 0.2861 0.“03“ 0.2972 0.3059 0.5011 -0.0039 -0.0025 0.0“9“ 0.0“75 0.1578 0.28“1 0.“223 0.5167 0.“896 0.3783 0.2“18 0.15“2 0.5605 0.56“3 005338 0.0“89 0.0000 0.001“ 0.0006 0.0000 0.0“81 0.0“87 0.0“80 0.0918 0.1387 0.1266 0.1056 0.1029 0.0800 0.0551 0.0“61 0.2002 0.19“1 001581 0.2017 0.259“ 0.2067 0.2830 0.3““0 0.3816 0.366“ 0.3“02 0.2538 0.2608 0.2“18 0.1868 0.3096 0-2393 0.1893 The thirteen files that follow are operating conditions The first file is the operating conditions for the remainder of the files, verification (Table 6.2). For the the number at the end of each file name corresponds to the case number of Figure 6.1. C“ D_SANDYLOAM Norfolk Sandy Loam 1770. 1907 3“.8 .“ 0. 1.3“ .203 D_LMCLAYl Low Moisture Clay-Case 1 103“. 35.9 38. .““5 1.8 1.3“ .25 D_LMCLAY2 Low Moisture Clay-Case 2 1007. 17.2 “5. .625 12.1 1.3“ .25 D_LMCLAY3 Low Moisture Clay-Case 3 1089. ' “8.3 35. .36“ 11. 1.3“ 025 D_HMCLAY“ High Moisture Clay-Case “ 1025. 15.5 39. .625 12.1 1.3“ .25 C5 D_HMCLAYS High Moisture Clay-Case 5 980. 55-2 26. .“66 6.9 1.3“ .25 D_HMCLAY6 High Moisture Clay-Case 6 10“3. 37.9 2“. .36“ 10.5 1.3“ .25 D_LMSAND7 Low Moisture Sandy Clay-Case 7 1379. 6.9 36. .““5 2.8 1.3“ .25 D_LMSAND8 Low Moisture Sandy Clay-Case 8 1361. 17.2 3“. .306 5.” 1.3“ .25 D_LMSAND9 Low Moisture Sandy Clay-Case 9 1“15. C6 D_HMSANDlO High Moisture Sandy Clay-Case 10 1“06. 10.3 33. .36“ “.6 103“ .25 D_HMSANDll High Moisture Sandy Clay-Case 11 1288. - 10.3 32. .36“ 9. 1031' .25 D_HMSAND12 High Moisture Sandy Clay-Case 12 1325. 17.2 “0. .510 3.5 1.3“ .25 APPENDIX D MEASURED DATA MEASURED DATA The following file contains the data points measured on the 16 inch wide Ford moldboard plow. the entire times. moves were used to piece together the data. The surface, point as D_FORDPLOW in the numbers Appendix C is manipulation of this file. To adequately measure plow had to be positioned three measured before and after the The file listed of the the result Points 1-18 were taken at the first plow position. 1 0.000 2 8.605 3 0.999 “ -“.980 5 -11.951 6 -11.135 7 -5.253 8 5.305 9 3.296 10 2.237 11 -1.110 12 -6.875 13 -12.5“8 1“ -19089u 15 “150303 16 -9093? 17 -16.0“6 18 -20.123 Points 11 0.000 17 15.201 18 19.251 19 26.578 20 -2.035 21 “10305 22 0.936 0.000 2.327 2.111 2.016 1.901 -0.218 -0.109 0.1“9 -1.7“2 -3.699 -3.290 —2.566 -2.607 ”10952 -0.732 -0.l23 -6.679 -60551 0.000 2.210 1.75“ -0.030 3.176 5-“38 3.216 5.200 6.568 8.203 9.“37 11.050 7.380 6.232 “.127 2.781 1.780 2.500 3.965 “.753 “.917 6.017 6.958 3.220 3.63“ 11 and 17-31 were 8.000 7.291 6.882 6.500 9.“67 9.72“ 9.077 01 taken at the second position. 23 1.658 2“ 7.852 25 1“.“07 26 21.“55 27 26.281 28 25.572 29 19.625 30 11.987 31 6.“31 Points position. 17 -11.361 18 -70303 19 0.000 27 -o.281 28 -00980 32 2.227 33 3.253 3“ 1.99“ 6.218 8.283 90380 8.372 7.061 3.757 “.360 “.022 2.120 17.19; 2.202 1.762 0.000 7.103 3.792 5.768 30005 1.13“ 27, D2 9.“l7 8.““1 7.050 5.658 “.771 5.918 6.855 7.855 8.169 28 and 32-3“ were taken at the third 7.288 6.880 6.500 “.780 .5.91“ “.653 5.520 6.260 LIST OF REFERENCES LIST OF REFERENCES Carlson, E.C., 1961. Plow and Computers. Agricultural Engineering. “2(6):292-295, 307. Emmett, W.T. Jr., 1983. Computer-Aided Performance Predictions of Coated Moldboard Plows. M.S. Thesis Cornell University, Ithaca, NY. Emmett, W.T. Jr. and W.W. Gunkel, 1983. A Computer-Aided Analysis of the Performance of Coated Moldboard Plow Surfaces. American Society of Agricultural Engineers Paper No. 83-10“6. Faux, I.D. and M.J. Pratt, 1979. Computational Geometry for Design and Manufacture. Ellis Horwood Limited, West Sussex, England. Foley, J.D. and A. VanDam, 1982. Fundamentals of Interactive Computer Graphics. Addison Wesley Publishing Company, Reading, Massachusetts. Gill, W.R. and F.E. VandenBerg, 1967. Soil Dynamics in Tillage and Traction. Agricultural Handbook No. 316. U.S. Government Printing Office, Washington, D.C. Hettiaratchi, D.R.P. and A.R. Reece, 1967. Symmetrical Three-Dimensional Soil Failure. Journal of Terramechanics. “(3):“5-67. McKyes, E., 1977. The Calculation of Draft Forces and Soil Failure Boundaries of Narrow Cutting Blades. Transactions of American Society of Agricultural Engineers. 15(2):111-116. Nichols, M.L., 1931a. Dynamic Properties of Soil. I. An Explanation of the Dynamic Properties of Soils by Means of Colloidal Films. Agricultural Engineering. 12(7):259-26“. Nichols, M.L., 1931b. The Dynamic Properties of Soil. II. Soil and Metal Friction. Agricultural Engineering. 12(8):32l-32“. Nichols, M.L. and T.H. Kummer, 1932. The Dynamic Properties of Soil. IV. A Method of Analysis of Plow Moldboard Design Based upon Dynamic Properties of Soil. Agricultural Engineering. 13(11):279-285. Nichols, M.L. and I.F. Reed, 193“. Soil Dynamics: VI. Physical Reactions of Soils to Moldboard Surfaces. Agricultural Engineering. 15(6):187-190. Nichols, M.L., I.F. Reed and C.A. Reaves, 1958. Soil Reaction: To Plow Share Design. Agricultural Engineering. 39(6):336-339- O'Callaghan, J.R. and J.G McCoy, 1965. The Handling of Soil by Mouldboard Ploughs. Journal of Agricultural Engineering Research. 10(1):23-25. Orlandea, N., S.H. Chen and T. Berenyi, 1983. A Study of Soil-Tool Interactions. Transactions of American Society of Agricultural Engineers. 21(5):1619—1625. Perumpral, J.V., R.D. Grisso and 0.8. Desai, 1983. A Soil-Tool Model Based on Limit Equilibrium Analysis. Transactions of American Society of Agricultural Engineers. 21(3):991-995. Plasse, R., G.S.V. Raghavan and F. McKyes, 1983. Simulation of Narrow Blade Performance in Different Soils. American Society of Agricultural Engineers Paper No. 83-1539. Rowe, R.J. and K.K. Barnes, 1961. Influence of Speed on Elements of Draft of a Tillage Tool. Transactions of the American Society of Agricultural Engineers. 6(1):55-57. Siemens, J.C., J.A. Weber and T.H. Thorburn, 1965. Mechanics of Soil as Influenced by Model Tillage Tools. Transactions of American Society of Agricultural Engineers. 8(1):1-7. Soehne, W., 1959. [Investigations on the Shape of Plough Bodies for High Speeds.) Grundlagen der Landtechnik. 11:22-39, (National Institute of Agricultural Engineering., English Translation 87.) White, E.A., 1918. A Study of the Plow Bottom and its Action Upon the Furrow Slice. Journal of Agricultural Research. 12:1“9-182, illus.