I decided to make something usefull for my FX-700P. So I wrote a program that gives internal forces from a beam and computes necessary cross-section (for steel beams and the IPE-type cross sections only). The program uses several simplifications, it takes into account only a bending moments so it is *for a preliminary design only*. I actually needed it for some work in the wild when no real computer with me and when a fast (and thus just a preliminary) decision is needed.

So the program takes internal forces (bending moment, shear force and normal force) and uses basic computations (normal stress from M/W+N/A and a shear stress computation) to decide what IPE size is enough.

The IPE cross section parameters are approximated by continuous functions to save the memory of the calculator.

The code for the FX-700P looks like this:

10 INPUT "M=",M 20 INPUT "V=",V 30 INPUT "N=",N 40 D = 235000000 * 0.9 100 J = 0 TO 12 STEP 1 110 H = 80 + J*20 120 A = H*H*0.000338738+H*0.0836899 -1.60321 130 I = H*H*H*0.000475247 -0.0512346*H*H + 212.463 140 B = 0.0148498*H + 2.62096 150 F = 0.0249428*H + 3.39449 160 E = 0.465021*H + 8.23748 170 S = (F*B*H/2)/1000000+((H/2.0-B/2.0)*F)/1000000 180 H = H/1000 190 A = A/10000 200 I = I/100000000 210 W = I/(0.5*h) 300 IF ABS(N/A - M/W) > D THEN 400 310 IF ABS(N/A + M/W) > D THEN 400 320 IF ABS(V*S / I*B) > D THEN 400 330 GOTO 410 400 NEXT J 410 PRINT "IPE";H*1000

For a comparison there is a C code that does exactly the same:

int assess_IPE(double M, double V, double N) { int i ; double h, A, I, W, S, Sh,f,e,a, fy; double sigma_top, sigma_bot, tau_top, tau_max ; fy = 235e6 * 0.9 ; /* design value of yield stress */ for (i=0; i 240)&&(h = 300) h = 330 ; /* fix fo real h sizes */ /* approximations: */ A = h*h*0.000338738 + h*0.0836899 -1.60321 ; I = h*h*h*0.000475247 -0.0512346*h*h + 212.463 ; a = 0.0148498*h + 2.62096; /* wall thickness */ f = 0.0249428*h + 3.39449 ; /* thicknes of top part */ e = 0.465021*h + 8.23748 ; /* width of the top part */ S = ((h/2.0-a/2.0)*f)/1e6 ; /* static moment S: UNUSED ATM */ Sh = S + (pow(h/2-a,2)/2.0*a)/1e6 ; /* static moment for center (h/2) */ h = h/1e3 ; /* mm -> m */ A = A/1e4 ; /* cm2 -> m2 */ I = I/1e8 ; /* cm4 -> m4 */ W = I/(0.5*h) ; /* Stresses: */ sigma_top = N/A - M/W ; sigma_bot = N/A + M/W ; tau_max = V*Sh / I*a ; if ((fabs(sigma_top)<fy)&&(fabs(sigma_bot)<fy)&&(fabs(tau_max)<fy/sqrt(3))) { fprintf(stdout,"Found IPE%i\n",(int)(h*1000)); break; } } return(0); }

Both codes are under the GPL v2. But once more: please do not use these codes for any real work! I don’t tested their correctness too much and they use some big simplifications.

Just for those who are curious about it: the BASIC code also works on the Elektronika MK-85.