//JOB(ERCC07,STEPHENS,T=200,L=10000) //OPTIONS(QUOTES,OPT) //ALGOL 'COMMENT' *************** * * * ALGG046 * * * *************** ; 'BEGIN' 'COMMENT' !***GBI1****BENGBME*************************** ; 'BEGIN' 'COMMENT' INTERPOLATION OF LOAD CAPACITY USING CARPET; 'COMMENT' A0,A6; 'ARRAY' SHAPE[1:7],TAPER[1:13]; 'REAL' HI,BOL,I,J,TOLERANCE; 'ARRAY' PZ[1:7,1:13]; 'PROCEDURE' LOCATE(VECTOR,L,U,VALUE,I,TOLERANCE,UP,ESCAPE); 'VALUE' L,U,VALUE,TOLERANCE,UP; 'REAL' VECTOR,VALUE,TOLERANCE; 'INTEGER' L,U,I; 'BOOLEAN' UP; 'LABEL' ESCAPE; 'COMMENT' MODIFICATION OF B-LIBRARY 3012.SEARCHES A VECTOR BETWEEN UPPER AND LOWER LIMITS FOR A SPECIFIED VALUE. IF A VECTOR HAS THAT VALUE (WITHIN A TOLERANCE) THEN THE VECTOR INDEX I IS GIVEN. OTHERWISE A JUMP IS MADE TO ESCAPE WITH I GIVING THE VECTOR IMMEDIATELY BELOW THE VALUE,SO THAT VECTOR I AND VECTOR (I+1) STRADDLE THE VALUE. THE ENTRIES IN THE VECTOR ARE INCREASING IF UP IS TRUE. LIBRARY WRITTEN BY M.WELLS,E.C.L , LEEDS UNIV, MODIFICATION TO INCLUDE THE TOLERANCE BY P.H.MARKHO, MECH.ENG, LEEDS UNIV; 'BEGIN' 'FOR' I:=L,U,(L+U)'/'2 'WHILE' LABS(TAPER[P+1]-HI)'AND'P<12) 'OR' P=1 'THEN' P:=P+1; LOCATE(SHAPE[I],1,6,BOL,I,TOLERANCE,'TRUE',NEITHERTAB); 'FOR' Q:=P-1,P,P+1 'DO' F[Q]:=PARAMETER[I,Q]; CARPETQUAD:=LINEQUAD(TAPER,F,P-1,P,P+1,HI); 'GOTO' FINI; NOTBOLTAB: 'IF'(ABS(SHAPE[I]-BOL)>ABS(SHAPE[I+1]-BOL)'AND'I<6) 'OR' I=1 'THEN' I:=I+1; 'FOR' Q:=I-1,I,I+1 'DO' F[Q]:=PARAMETER[Q,P]; CARPETQUAD:=LINEQUAD(SHAPE,F,I-1,I,I+1,BOL); 'GOTO' FINI; NEITHERTAB:'IF'(ABS(SHAPE[I]-BOL)>ABS(SHAPE[I+1]-BOL)'AND'I<6) 'OR' I=1 'THEN' I:=I+1; 'FOR'Q:=P-1,P,P+1 'DO' 'BEGIN' 'FOR' J:=I-1,I,I+1 'DO' G[J]:=PARAMETER[J,Q]; F[Q]:=LINEQUAD(SHAPE,G,I-1,I,I+1,BOL); 'END'; CARPETQUAD:=LINEQUAD(TAPER,F,P-1,P,P+1,HI); FINI: 'END' OF CARPETQUAD; 'FOR'I:=1 'STEP' 1 'UNTIL' 7 'DO' SHAPE[I]:=I*0.25+0.25; 'FOR' I:=1 'STEP' 1 'UNTIL' 13 'DO' TAPER[I]:=I*0.25-0.25; 'FOR' I:=1 'STEP' 1 'UNTIL' 7 'DO' 'FOR' J:=1 'STEP' 1 'UNTIL' 13 'DO' PZ[I,J]:=READ; TOLERANCE:=READ; WRITE TEXT('('INTERPOLATION%OF%LOAD%CAPACITY%BY% CARPETQUAD'('4C')'B/L%%HI'('9S')'PZ'('2C')'')'); 'FOR' BOL:=0.5 'STEP' 0.1 'UNTIL' 2.0 'DO' 'FOR' HI:=1.0 'STEP' 0.1 'UNTIL' 4.0 'DO' 'BEGIN' PRINT(BOL,1,1); SPACES(2); PRINT(HI,1,1); SPACES(6); I:=CARPETQUAD(HI,BOL,PZ); PRINT(I,1,4); NEWLINES(1); 'END'; 'END'; 'END' //RUN 0;0.016;0.0229;0.0265;0.0289;0.0301;0.0301;0.0299;0.0295; 0.0287;0.0281;0.0274;0.0268; 0;0.0253;0.0404;0.0470;0.0504;0.0518;0.0516;0.0510;0.0498; 0.0480;0.0464;0.0450;0.0441; 0;0.0345;0.0558;0.0651;0.0689;0.0703;0.07;0.0691;0.0670; 0.0643;0.0618;0.0598;0.0584; 0;0.0383;0.0673;0.0789;0.0853;0.0847;0.0842;0.0826;0.0801; 0.077;0.0738;0.0712;0.0688; 0;0.0434;0.0772;0.0902;0.0946;0.0959;0.0950;0.0928;0.09; 0.0867;0.0834;0.08;0.0769; 0;0.0470;0.0846;0.0983;0.0999;0.1031;0.1042;0.1031;0.0989; 0.0940;0.0903;0.0866;0.0827; 0;0.0478;0;0.1303;0;0.1858;0;0.2179;0.0143;0.2337;0.1074; 0.2418;0.2659;0.2719;0.3966;0.418;0.5163; 0;16;3000;50;0.075;0.032;7; 16;3000;50;0.075;0.032;7;