' ******************************************* ' * Calculation utility for conical valves * ' * as used in our robot * ' * by * ' * Prof.dr.Godfried-Willem Raes * ' ******************************************* ' 30.01.2010: written and debugged. #COMPILE EXE #DIM ALL #INCLUDE "C:\b\pb\winapi\g_win.inc" #INCLUDE "C:\b\pb\gmt\g_kons.bi" #INCLUDE "C:\b\pb\gmt\g_type.bi" ' This declares all our own structures, user defined types #INCLUDE "C:\b\pb\gmt\g_indep.bi" FUNCTION PBMAIN () AS LONG LOCAL d1 AS SINGLE LOCAL traject AS SINGLE LOCAL diam AS SINGLE LOCAL angle AS SINGLE OPEN "conevalve_lookup.txt" FOR OUTPUT AS #1 ' Laukhuff cone 35 diam = 0.035 angle = 110 PRINT #1, "Cone diameter ="; FORMAT$(diam* 1000, 3); " mm" PRINT #1, "Top angle ="; angle FOR traject = 0.001 TO 0.01 STEP 0.001 d1 = FrustumFlow (traject, diam, angle) PRINT "traject= "; INT(traject * 1000); "mm inlet diameter in mm:" ; d1 * 1000 ' result in mm IF d1 >= diam THEN PRINT "Impossible, reduce traject or change angle" EXIT FOR ELSE PRINT #1, "traject ="; INT(traject * 1000); "mm orifice eqv =" ; FORMAT$(d1 * 1000,4); " mm" END IF NEXT traject PRINT #1, " " ' Laukhuff cone 25 'traject = 0.005 '7mm 0.01 ' 10mm diam = 0.025 angle = 100 PRINT #1, "Cone diameter ="; FORMAT$(diam* 1000, 3); " mm" PRINT #1, "Top angle ="; angle FOR traject = 0.001 TO 0.01 STEP 0.001 d1 = FrustumFlow (traject, diam, angle) PRINT "traject= "; INT(traject * 1000); "mm inlet diameter in mm:" ; d1 * 1000 ' result in mm IF d1 >= diam THEN PRINT "Impossible, reduce traject or change angle" : EXIT FOR ELSE PRINT #1, "traject ="; INT(traject * 1000); "mm orifice eqv =" ; FORMAT$(d1 * 1000,5); " mm" END IF NEXT traject PRINT #1, " " ' Laukhuff cone 20 'traject = 0.005 '7mm 0.01 ' 10mm diam = 0.020 angle = 85 PRINT #1, "Cone diameter ="; FORMAT$(diam* 1000, 3); " mm" PRINT #1, "Top angle ="; angle FOR traject = 0.001 TO 0.01 STEP 0.001 d1 = FrustumFlow (traject, diam, angle) PRINT "traject= "; INT(traject * 1000); "mm inlet diameter in mm:" ; d1 * 1000 ' result in mm IF d1 >= diam THEN PRINT "Impossible, reduce traject or change angle" : EXIT FOR ELSE PRINT #1, "traject ="; INT(traject * 1000); "mm orifice eqv =" ; FORMAT$(d1 * 1000,5); " mm" END IF NEXT traject PRINT #1, " " ' Laukhuff cone 16.5 'traject = 0.005 '7mm 0.01 ' 10mm diam = 0.0165 angle = 81 PRINT #1, "Cone diameter ="; FORMAT$(diam* 1000, 3); " mm" PRINT #1, "Top angle ="; angle FOR traject = 0.001 TO 0.01 STEP 0.001 d1 = FrustumFlow (traject, diam, angle) PRINT "traject= "; INT(traject * 1000); "mm inlet diameter in mm:" ; d1 * 1000 ' result in mm IF d1 >= diam THEN PRINT "Impossible, reduce traject or change angle" : EXIT FOR ELSE PRINT #1, "traject ="; INT(traject * 1000); "mm orifice eqv =" ; FORMAT$(d1 * 1000,5); " mm" END IF NEXT traject PRINT #1, " " ' Laukhuff cone 13 'traject = 0.005 '7mm 0.01 ' 10mm diam = 0.013 angle = 72 PRINT #1, "Cone diameter ="; FORMAT$(diam* 1000, 3); " mm" PRINT #1, "Top angle ="; angle FOR traject = 0.001 TO 0.01 STEP 0.001 d1 = FrustumFlow (traject, diam, angle) PRINT "traject= "; INT(traject * 1000); "mm inlet diameter in mm:" ; d1 * 1000 ' result in mm IF d1 >= diam THEN PRINT "Impossible, reduce traject or change angle" EXIT FOR ELSE PRINT #1, "traject ="; INT(traject * 1000); "mm orifice eqv =" ; FORMAT$(d1 * 1000,5); " mm" END IF NEXT traject PRINT #1, " " WAITKEY$ END FUNCTION