' >>>>**** FACE-HARDENED ARMOR PENETRATION PROGRAM BY NATHAN OKUN ****<<<< ' >>>>**** VERSION 5.8 OF 9 FEBRUARY 2004 ****<<<< ' >>>>**** 1ST PRINT & SUBPROGRAM MODULE "FH58SBM1.BAS" ****<<<< ' ' THE FOLLOWING MUST BE IDENTICAL AT TOP OF ALL MODULES OF THIS PROGRAM !! ' COMMON SHARED NATION, PROJ, ARMOR, SC, D, PENTP, OLDVALUE, NEWVALUE, CMT, VXP COMMON SHARED Q, QDAM, UB, CARTWL, CMPND, SOFTSHAT, THNCHL, MSHAT, CRTGD COMMON SHARED TA, UBMAN, UBCALC, TPCAL, THIN, YS, MTLBACK, TRUTHIN, PSHMAX COMMON SHARED TD, LCMOD, POLMOD, POIMOD, SHAT, CART, VS, OB, OBRAD, EX, EXRAD COMMON SHARED VLMT, VLSHAT, VLTRU, VITRU, TOTPLUGWT, NORMPLUGWT, DELTAPLUGWT COMMON SHARED UBSV, QSV, QDAMSV, CARTWLSV, CMPNDSV, THNCHLSV, SOFTSHATSV, HF COMMON SHARED CRITAGL, SHATRES, NSDAMAGL, BRAAK, APCAP, LTCASE, PLIM, PDAM COMMON SHARED ALD, BLD, CLD, AED, BED, CED, NDAP, BRK, NSBRK, BDYDM, BEND, WT COMMON SHARED BKEFF, PNL, PNI, PNLSHAT, CARDONALD, PNLPR, VHSHAT, PENFLG, VLND COMMON SHARED VDFSTD, VDFUSED, VDFSTDWW1, VDFSTDWW2, VSCRIT, CAPHD, OBCRIT, WB COMMON SHARED VHOL, WTSAVE, BRAIK, VDFBND, VDFBRK, MAXDIFF, SNCSMAX, OBDF, MO COMMON SHARED THKTHN, THKTHNSV, MINEV, MINEV1, MINEV2, MINEV3, MINEV4, MINEV5 COMMON SHARED NVRFLAG, MAXOB, THVAL, THSPD, HARD, WD, VHTRU, CRTAPR, MTMP, VR COMMON SHARED CURV, CRVRL, CRVFLAG, VRATMIN, VHEXREV, VLEXREV, VHDAM, VLDAM COMMON SHARED VRAT, VRATVEL, EXMIN, TMPOBDF, NSSHAT, VNPLUG, VDPLUG, VRSHATNS COMMON SHARED OB45, OB45CALC, VHSHATMAX, VLSHATMAX, CRITVEL, SHATVDF, NOTEFLAG COMMON SHARED VDFUSEDPR, VRPR, VHND, EXTH, OBRK, TCAL, NSTEST, NSTESTV COMMON SHARED OPRIMEL, OPRIMED, OBPRNT, EXPRNT, MTMPCR, MTMPNS, VCNT, FLAG COMMON SHARED WTSVPRNT, WTPRNT, WBPRNT, SOFTQPMAX, MINSHVEL, PENCONST#, TEFF COMMON SHARED SHATMULT, VTOTAL, UBFLAG COMMON SHARED NBL1$, NBL2$, NBL3$, NBL4$, NBL5$, NBL6$, NBL7$, RESNOTE$, PSL$ COMMON SHARED HBL1$, HBL2$, HBL3$, HBL4$, HBL5$, HBL6$, HBL7$, HBL8$, HBL9$, ND$ COMMON SHARED PAND$, FLAKE$, CAP$, REMV$, NOTE1$, NOTE2$, NOTE3$, NOTE4$, NOTE5$ COMMON SHARED BDYDM1$, BDYDM2$, BDYDM3$, NSBRK1$, NSBRK2$, NSBRK3$, BD1$, BD2$ COMMON SHARED BKPRT1$, BKPRT2$, BKPRT3$, BKPRT4$, BKPRT5$, CALC$, EBL$, EFFVEL$ COMMON SHARED HBLTONBL$, N1$, N2$, N3$, N4$, H1$, H2$, H3$, H4$, PRJ$, NATN$ COMMON SHARED VELLTRU$, VELLSHAT$, VELLSHATMAX$, VELLND$, EFFPRINT1$ COMMON SHARED VELHTRU$, VELHSHAT$, VELHSHATMAX$, VELHND$, EFFPRINT2$ COMMON SHARED YS$, PEN1$, PEN2$, WBL1$, WBL2$, WBL3$, WBL4$, VEL$ COMMON SHARED ONEPC$, RVU$, DPLG$, REMVEL$, BSNS1$, BSNS2$, BSNS3$ DIM SHARED M(15), MS(17) COMMON M(), MS() ' ' ** END OF MODULE-LEVEL "FH58SBM1.BAS" CODE ** SUB ALLPROJDATA (NATN, PRJTL) ' 'SELECT PROJECTILE DATA FOR ALL NATIONS BEND = 0: ' CLEAR SPECIAL SHATTER-ONLY BENDING PROJECTILE FLAG (BRITISH POST-WWI CP/CPBC/SAP/SAPC/AP/APC) CARDONALD = 0: ' SPECIAL ROYAL ORDNANCE FACTORY IMPROVED WWII BRITISH APC PROJECTILES ON NATN GOSUB USPROJDATA, BRITPROJDATA, GERMPROJDATA, FRPROJDATA, ITPROJDATA, JAPPROJDATA, AHPROJDATA EXIT SUB ' '*** PROJ PARAMETERS DEFINED: ''ALD', 'BLD', & 'CLD' MODIFY NBL FOR PLATE THICKNESS & OBLIQUITY DUE TO ' PROJ DAMAGE (0 = NOT USED). ''AED', 'BED', & 'CED' MODIFY 'EFFECTIVE' LIMIT (= PROJ FILLER & FUZE NOT ' DAMAGED BY IMPACT='FIT TO BURST') (NOTE THAT OTHER DAMAGE MAY OCCUR) ' (-1 = NOT USED). ''CRITAGL' IS MAX DEFLECTION ANGLE ('OBDF') FOR SOME PROJ DESIGNS TO ' REMAIN 'EFFECTIVE'. DOES NOT AFFECT PLATE CAUSING DAMAGE. REPLACES ' 'AED/BED/CED' &, SOMETIMES, 'ALD/BLD/CLD' (0 = NOT USED) (FH ARMOR ' THICKNESS SEEMS TO HAVE NO EFFECT ON THESE PROJ, BUT HOMOGENEOUS ARMOR ' THICKNESS DOES). NEGATIVE VALUE IS MAXIMUM BRITISH 'BEND' LOGIC OBLIQUITY ' WHERE PROJ REMAINS UNBROKEN UNLESS, FOR 'CARDONALD' PROJ ONLY, STRIKING ' VEL GOES ABOVE SHATTER NBL 'VLSHAT' (ODD-BALL LOGIC THIS, BUT IT WORKS!) ''BRAAK' MEANS WEAK PROJ BREAKS IF VEL < NBL AT OB < 50 DEG FOR COMPOUND ' ARMOR & OB < 40 DEG FOR THE REST: 1 = BREAKS; 0 = DOES NOT. IF SHATR, ' IGNORED. ''SHATRES' GIVES PROJ RESISTANCE TO SHATR AT OB = 0 (NORMAL): ' 0 = RESISTS SHATR (AP CAP); 1 = EASILY SHATRS (WEAK NOSE) (INCLUDES UNCAPPED ' JAP TYPE 91 AP WITH OR WITHOUT CAP HEAD STILL IN PLACE ON ARMOR IMPACT); ' 2 = CHILLED CAST IRON PROJ (VERY WEAK NOSE; COMPOUND ARMOR CAN SHATR IF UNCAPPED). ''APCAP' IS AP CAP TYPE: -1 = HOOD; 0 = NO CAP & NO HOOD; 1 = 'SOFT' AP CAP ' (MAX HARDNESS <= 300 BRINELL) (MOST WWI); 2 = 'HARD' AP CAP (INCLUDES JAP ' UNCAPPED JAP 15.5/20.3CM TYPE 91 AP PROJ W/'CAP HEAD' FOR HOLING ONLY ' (ALL TYPE 88 APC WITH 'CAP HEAD' WERE AP-CAPPED PROJ)); 3 = SMALL/THIN 'HARD' AP ' CAP, SUCH AS THOSE ON WWI KRUPP "L/3,2" & "L/3,4" APC AND POST-1908 A-H SKODA APC, ' WHICH FAILS TO STOP SHATTER IF PLATE DAMAGE-CAUSING EFF THICKNESS IN CAL (TD/D) ' IS > 0.67 CAL & OB > 20 DEG (CAPS MERELY COPIES OF OLD SOFT CAP DESIGNS OR THIN, ' SUCH AS CAP FOR KRUPP WWII 38CM SPRG.M.K. L/4,6 (CAPPED BASE-FUZED COMMON)). ''LTCASE' MEANS PROJ BODY WEAK DUE TO LARGE OR EXTRA-LARGE EXPLOSIVE CAVITY, ' THE LATTER BASED ON WWI BRITISH 'COMMON, POINTED, CAPPED' (CPC) DESIGN: ' 2 = PROJ HAS EXTRA-LARGE FILLER CAVITY & BREAKS AT OB = 0 AGAINST A ' >0.67-CAL-THICK PLATE (SHATR RESULTS ARE ALSO CHANGED) OR IF ANY NOSE DAMAGE; ' 1 = PROJ HAS A LARGE CAVITY, WHICH MAKES INTACT PENETRATION MORE DIFFICULT ' (SHATR RESULTS ALSO CHANGED), INCLUDING IF NOSE DAMAGED, BUT SMALLER THAN ' 'LTCASE'=2 PROJ; 0 = NOT APPLICABLE. ''NSDAMAGL' IS MAX DEFLECTION ('OBDF') PROJ NOSE CAN TAKE BEFORE BREAKING. ' LIKE 'CRITAGL', THIS DAMAGE ONLY AFFECTS LATER IMPACTS. DAMAGE BLUNTS/ ' DEFORMS/BREAKS NOSE FROM FORWARD BOURRELET UP. ONLY 'LTCASE'=2 OR COMMON ' PROJ WITH 'HOOD' ('APCAP'=-1), PROJ MADE 'INEFFECTIVE'. IF SHATR, IGNORED. ''PLIM' & 'PDAM' ARE DEFAULT PROJ 'QUALITY' FACTORS AT NORMAL IMPACT USED ' FOR NAVY & EFFECTIVE B.L., RESPECTIVELY. THEY MAY BE MODIFIED BY DAMAGE ' IF OB > 0 &, IF 'LTCASE'=2, AT OB = 0 AGAINST >0.67-CAL-THICK PLATES. ''BEND' IS SPECIAL SHATTER-ONLY DAMAGE-CAUSE FLAG FOR PROJECTILES THAT ' BEND CONSIDERABLY AT OBLIQUE IMPACT, BUT HAVE A DIFFERENT DAMAGE-CAUSING ' EFFECT AT NORMAL, CHANGING FROM ONE TO THE OTHER IN THE 0-30 DEGREE RANGE, ' THUS 'PLIM' AT NORMAL IF LESS THAN 1! IS LINEARLY INCREASED TO 1! AT 30 ' DEGREES & ABOVE FOR THOSE PROJECTILES WITH THIS FLAG SET WHEN SHATTER OCCURS. ''CARDONALD' IS SPECIAL "SUPER" PROJECTILE FLAG. WITH 'BEND' = 1, IT MEANS SUPERIOR ' BRITISH WWII 15" MARK 17B ROYAL ORDNANCE FACTORY, CARDONALD, SCOTLAND PROJECTILES ' ('CARDONALD' = 1) & WITH 'BEND' = 0 & 'CARDONALD' = 2, IT MEANS SUPERIOR SOFT-CAPPED ' WWI U.S. NAVY "MIDVALE UNBREAKABLE" OR "MIDVALE 1916" AP PROJECTILES AND ALL LATER ' US AP & "SPECIAL" COMMON PROJECTILES WITH SOFT CAPS OR HOODS (IF 'CARDONALD' = 2, ' 'SOFTSHAT' = 2 ARMOR HAS NO EFFECT AT 'OB'<= 15, AS WITH 'SOFTSHAT' = 0 ARMOR WITH ' THE REST OF THE WEAKER SOFT-CAPPED APC PROJECTILES) ' '** U.S. USPROJDATA: ON PRJTL GOTO UPR1, UPR2, UPR3, UPR4, UPR5, UPR6, UPR7, UPR8, UPR9, UPR10, UPR11, UPR12, UPR13, UPR14, UPR15, UPR16, UPR17, UPR18, UPR19, UPR20 UPR1: GOTO DEFAULT1: ' 1 UPR2: GOTO DEFAULT2: ' 2 UPR3: GOTO DEFAULT5: ' 3 UPR4: GOTO DEFAULT6: ' 4 UPR5: GOTO DEFAULT3: ' 5 UPR6: GOTO DEFAULT4: ' 6 UPR7: ALD = .0004301: BLD = 1.845: CLD = .0027: ' 7 AED = .03322: BED = 1.172: CED = .02222 CRITAGL = 0: BRAAK = 1: SHATRES = 1: APCAP = 0 LTCASE = 2: NSDAMAGL = 15: PLIM = .748: PDAM = .6 CARDONALD = 0: BEND = 0 RETURN UPR8: CRITAGL = 5: BRAAK = 1: SHATRES = 0: APCAP = 1: ' 8 NSDAMAGL = 15: PLIM = .89: LTCASE = 0: GOTO UCMN1 UPR9: CRITAGL = 5: BRAAK = 0: SHATRES = 0: APCAP = 1: ' 9 NSDAMAGL = 15: PLIM = 1!: LTCASE = 0: GOTO UCMN1 UPR10: CRITAGL = 10: BRAAK = 0: SHATRES = 0: APCAP = 2: ' 10 NSDAMAGL = 15: PLIM = .94: LTCASE = 0: GOTO UCMN UPR11: CRITAGL = 20: BRAAK = 0: SHATRES = 0: APCAP = 2: ' 11 NSDAMAGL = 20: PLIM = .94: LTCASE = 0: GOTO UCMN1 UPR12: CRITAGL = 10: BRAAK = 0: SHATRES = 1: APCAP = 0: ' 12 NSDAMAGL = 15: PLIM = .85: LTCASE = 1: GOTO UCMN1 UPR13: CRITAGL = 15: BRAAK = 0: SHATRES = 1: APCAP = -1: ' 13 NSDAMAGL = 15: PLIM = .9: LTCASE = 1: GOTO UCMN1 UPR14: CRITAGL = 20: BRAAK = 0: SHATRES = 0: APCAP = -1: ' 14 NSDAMAGL = 20: PLIM = .95: LTCASE = 0: GOTO UCMN UPR15: CRITAGL = 15: BRAAK = 0: SHATRES = 1: APCAP = 2: ' 15 NSDAMAGL = 15: PLIM = .9: LTCASE = 1: GOTO UCMN UPR16: CRITAGL = 15: BRAAK = 0: SHATRES = 0: APCAP = 2: ' 16 NSDAMAGL = 15: PLIM = .94: LTCASE = 0: GOTO UCMN UPR17: CRITAGL = 20: BRAAK = 0: SHATRES = 0: APCAP = 2: ' 17 NSDAMAGL = 15: PLIM = .96: LTCASE = 0: GOTO UCMN UPR18: CRITAGL = 20: BRAAK = 0: SHATRES = 0: APCAP = 2: ' 18 NSDAMAGL = 20: PLIM = .9: LTCASE = 0: GOTO UCMN UPR19: CRITAGL = 25: BRAAK = 0: SHATRES = 0: APCAP = 2: ' 19 NSDAMAGL = 25: PLIM = .94: LTCASE = 0: GOTO UCMN UPR20: CRITAGL = 30: BRAAK = 0: SHATRES = 0: APCAP = 2: ' 20 NSDAMAGL = 30: PLIM = 1!: LTCASE = 0 UCMN: CARDONALD = 0: GOTO UCMN2: ' HARD-CAPPED PROJ DO NOT USE THIS FLAG UCMN1: CARDONALD = 2: ' BEST UNCAPPED OR SOFT-CAPPED PROJ (SHEATH HARDENED) UCMN2: ALD = 0: BLD = 0: CLD = 0: ' 8-20 (COMMON DATA) AED = -1: BED = -1: CED = -1 BEND = 0: PDAM = -1: ' 'PDAM' IS UNIVERSAL NO-OP HERE (USUALLY SET TO EQUAL 'PLIM' TO NO-OP) RETURN ' '** BRITAIN BRITPROJDATA: ON PRJTL GOTO BPR1, BPR2, BPR3, BPR4, BPR5, BPR6, BPR7, BPR8, BPR9, BPR10, BPR11, BPR12, BPR13, BPR14, BPR15, BPR16, BPR17, BPR18, BPR19 BPR1: GOTO DEFAULT1: ' 1 PALLISER CHILLED CAST IRON BPR2: GOTO DEFAULT5: ' 2 UNCAPPED "AP SHOT" 1895-21 0-3.9% BLACK-POWDER/HE FILLER BPR3: APCAP = 0: PLIM = .748: PDAM = .65: ' 3 UNCAPPED "AP SHELL"/COMMON 1895-18 4-6% BLACK POWDER FILLER LTCASE = 1: BRAAK = 1: CARDONALD = 0: GOTO BCMN1 BPR4: APCAP = 1: PLIM = .748: PDAM = .65: ' 4 CAPPED "AP SHELL"/COMMON 1905-18 4-6% BLACK-POWDER/HE FILLER LTCASE = 1: BRAAK = 1: CARDONALD = 0: GOTO BCMN1 BPR5: APCAP = 0: PLIM = .728: PDAM = .5: ' 5 CP LTCASE = 2: BRAAK = 1: CARDONALD = 0: GOTO BCMN1 BPR6: APCAP = 1: PLIM = .728: PDAM = .5: ' 6 CPC LTCASE = 2: BRAAK = 1: CARDONALD = 0: GOTO BCMN1 BPR7: GOTO DEFAULT6: ' 7 ORIGINAL 6-IN TO 12-IN APC 1905-1912 BPR8: APCAP = 1: PLIM = .985: PDAM = .985: ' 8 AVE 6-13.5" (LT) APC 1913-1918 LTCASE = 0: BRAAK = 1: CARDONALD = 0: GOTO BCMN1 BPR9: APCAP = 1: PLIM = 1!: PDAM = 1!: ' 9 AVE 13.5" (HY) & 15" APC 1913-1918 LTCASE = 0: BRAAK = 0: CARDONALD = 2 BCMN1: ALD = .0004301#: BLD = 1.845#: CLD = .0027#: ' 3, 4, 5, 6, 8, & 9 (COMMON DATA) AED = .03322: BED = 1.172: CED = .02222 CRITAGL = 0: NSDAMAGL = 15: BEND = 0: SHATRES = 1 RETURN BPR10: PLIM = 1!: PDAM = 1!: CRITAGL = 0: ' 10 12" MK 7A APC ALD = .0004301#: BLD = 1.845#: CLD = .0027# AED = .03322: BED = 1.172: CED = .02222 GOTO BCMN2 BPR11: PLIM = 1.02: PDAM = 1.02: CRITAGL = 0: ' 11 13.5" (HVY), 14", & 15" MK 5A APC ALD = .000454554#: BLD = 2.08917437#: CLD = .00514125# AED = .03322: BED = 1.172: CED = .02222 GOTO BCMN2 BPR12: PLIM = 1.02: PDAM = 1.02: CRITAGL = 15: ' 12 15" MK 5A BLUE-BAND APC ALD = 0: BLD = 0: CLD = 0: AED = -1: BED = -1: CED = -1 BCMN2: CARDONALD = 0: BEND = 0: SHATRES = 0: APCAP = 2: ' 10-12 (COMMON DATA) LTCASE = 0: BRAAK = 0: NSDAMAGL = 20 RETURN BPR13: SHATRES = 1: APCAP = -1: PLIM = .9: PDAM = .9: ' 13 POST-WWI CPBC/SAP WITH HOOD ALD = .000184977#: BLD = 2.46#: CLD = .02549452# CRITAGL = -33: CARDONALD = 0: LTCASE = 1: GOTO BCMN3 BPR14: SHATRES = 0: APCAP = 2: PLIM = .93: PDAM = .93: ' 14 8" SAPC ALD = .000000122#: BLD = 3.84#: CLD = .001118# CRITAGL = -33: CARDONALD = 0: LTCASE = 1: GOTO BCMN3 BPR15: PLIM = 1!: PDAM = .99: CRITAGL = 15: ' 15 9.2" GREEN BOY COAST DEFENSE 1919-1935 ALD = .0004301#: BLD = 1.845#: CLD = .0027# AED = .03322: BED = 1.172: CED = .02222 GOTO BCMN2 BPR16: SHATRES = 0: APCAP = 2: PLIM = 1.06: PDAM = 1.06: ' 16 9.2" COAST DEFENSE 1935-1950 (STILL 3.4% FILLER) ALD = .000232273#: BLD = 2.00692#: CLD = .00096671# CRITAGL = -41: CARDONALD = 0: LTCASE = 0: GOTO BCMN3 BPR17: SHATRES = 0: APCAP = 2: PLIM = 1.01: PDAM = 1.01: ' 17 16" MK 1B APC ALD = .000184977#: BLD = 2.46#: CLD = .02549452# CRITAGL = -38: CARDONALD = 0: LTCASE = 0: GOTO BCMN3 BPR18: SHATRES = 0: APCAP = 2: PLIM = 1.05: PDAM = 1.05: ' 18 14-16" POST-1930 ALD = .000184977#: BLD = 2.46#: CLD = .02549452# CRITAGL = -38: CARDONALD = 0: LTCASE = 0: GOTO BCMN3 BPR19: SHATRES = 0: APCAP = 2: PLIM = 1.05: PDAM = 1.05: ' 19 15" CARDONALD ALD = .000184977#: BLD = 2.46#: CLD = .02549452# CRITAGL = -38: CARDONALD = 1: LTCASE = 0 BCMN3: AED = -1: BED = -1: CED = -1: BEND = 1: BRAAK = 0: ' 13-14, 16-19 (COMMON DATA) NSDAMAGL = 25: RETURN ' '** GERMANY GERMPROJDATA: ON PRJTL GOTO GPR1, GPR2, GPR3, GPR4, GPR5, GPR6, GPR7, GPR8, GPR9, GPR10, GPR11, GPR12, GPR13, GPR14, GPR15 GPR1: GOTO DEFAULT1: ' 1 GRUSON CHILLED CAST IRON AP SHOT & SHELL GPR2: SHATRES = 0: APCAP = 0: ' 2 STEEL UNCAPPED AP SHOT UP TO 1918 PLIM = .794: PDAM = .754: GOTO GCMN1 GPR3: SHATRES = 1: APCAP = 0: ' 3 UNCAPPED COMMON UP TO 1929 PLIM = .75: PDAM = .65: GOTO GCMN1 GPR4: SHATRES = 0: APCAP = 1: ' 4 AVE. OF ALL PRE-1911 STEEL APC (PSGR.M.K. L/3,1 & UNDER) PLIM = .794: PDAM = .754: GOTO GCMN1 GPR5: SHATRES = 0: APCAP = 3: ' 5 28.3CM ("28CM") PSGR.M.K. L/3,2 & 30.5/38CM PSGR.M.K. L/3,4 PLIM = .794: PDAM = .754 GCMN1: ALD = .000143#: BLD = 2.249#: CLD = .00267#: ' 2, 3, 4, & 5 (COMMON DATA) AED = .000247: BED = 2.129: CED = .00172 CRITAGL = 0: NSDAMAGL = 15: BRAAK = 1: LTCASE = 0 CARDONALD = 0: BEND = 0 RETURN GPR6: GOTO DEFAULT7: ' 6 COMMON WITH HOOD ("GRUNDRING") AFTER 1929 GPR7: GOTO DEFAULT8: ' 7 38CM & PROJECTED 40.6CM CAPPED COMMON (SPGR.M.BDZ.U.K.) GPR8: NSDAMAGL = 10: PLIM = .759: PDAM = .709: APCAP = 2: ' 8 15CM PSGR.M.K. L/3,7 ALD = .0000243#: BLD = 2.477#: CLD = .00307# AED = .000247: BED = 2.129: CED = .00172 CRITAGL = 0: BRAAK = 1: SHATRES = 0: CARDONALD = 0 BEND = 0: LTCASE = 1 RETURN GPR9: NSDAMAGL = 10: PLIM = .794: PDAM = .754: APCAP = 2: ' 9 28,3CM ("28CM") PSGR.M.K. L/3,7 ALD = .000143#: BLD = 2.249#: CLD = .00267#: ' AED = .000247: BED = 2.129: CED = .00172 CRITAGL = 0: BRAAK = 1: SHATRES = 0: CARDONALD = 0 LTCASE = 0: BEND = 0 RETURN GPR10: NSDAMAGL = 25: PLIM = .99: PDAM = .972: GOTO GCMN3: ' 10 20,3CM & 30,5CM PSGR.M.K. L/4,4 AND 15CM PSGR.M.K. L/4,6 GPR11: NSDAMAGL = 25: PLIM = .979: PDAM = .926: GOTO GCMN3: ' 11 28,3CM ("28CM") PSGR.M.K. L/4,4 GPR12: NSDAMAGL = 25: PLIM = .988: PDAM = .977: GOTO GCMN3: ' 12 38CM PSGR.M.K. L/4,4 GPR13: NSDAMAGL = 25: PLIM = .929: PDAM = .881: GOTO GCMN3: ' 13 40.6CM PSGR.M.K. L/4,4 GPR14: NSDAMAGL = 25: PLIM = .86: PDAM = .8: GOTO GCMN3: ' 14 LIGHTWEIGHT 38CM & 40.6CM COAST DEFENSE APC (PSGR.M.K.) GPR15: NSDAMAGL = 25: PLIM = .9: PDAM = .86: ' 15 PROJECTED 53CM "GERAT 36" APC (PSGR.M.K.) GCMN3: ALD = .00006891#: BLD = 2.26#: CLD = .00333#: ' 10-15 (COMMON DATA) AED = .0000971: BED = 2.283: CED = .0035 CRITAGL = 0: BRAAK = 1: SHATRES = 0: APCAP = 2 LTCASE = 0: CARDONALD = 0: BEND = 0 RETURN ' '** FRANCE FRPROJDATA: ON PRJTL GOTO FPR1, FPR2, FPR3, FPR4, FPR5, FPR6, FPR7, FPR8 FPR1: GOTO DEFAULT1: ' 1 UNCAPPED CHILLED CAST IRON FPR2: GOTO DEFAULT2: ' 2 CAPPED CHILLED CAST IRON FPR3: GOTO DEFAULT3: ' 3 UNCAPPED STEEL AP SHELL FPR4: GOTO DEFAULT7: ' 4 USE UNCAPPED GERMAN SPGR.M.BDZ. (POST-1922) FPR5: GOTO DEFAULT4: ' 5 SOFT-CAPPED STEEL AP SHELL FPR6: ALD = .00335#: BLD = 2.13#: CLD = .08701#: ' 6 33CM SAPC CRITAGL = 15: LTCASE = 1 GOTO FCMN FPR7: ALD = .00336#: BLD = 1.418#: CLD = .0091701#: ' 7 38CM FRENCH 1940 APC CRITAGL = 20: LTCASE = 0 FCMN: BRAAK = 1: SHATRES = 0: APCAP = 2: ' 6 & 7 (COMMON DATA) AED = -1: BED = -1: CED = -1 NSDAMAGL = 20: PLIM = 1!: PDAM = 1! CARDONALD = 0: BEND = 0 RETURN FPR8: ALD = 0: BLD = 0: CLD = 0: ' 8 38CM US CRUCIBLE STEEL CO 380MM AP MK 1 AED = -1: BED = -1: CED = -1: CRITAGL = 30 BRAAK = 0: SHATRES = 0: APCAP = 2: LTCASE = 0 NSDAMAGL = 30: PLIM = 1!: PDAM = 1! CARDONALD = 0: BEND = 0 RETURN ' '** ITALY ITPROJDATA: ON PRJTL GOTO IPR1, IPR2, IPR3, IPR4, IPR5, IPR6, IPR7, IPR8, IPR9, IPR10, IPR11, IPR12, IPR13, IPR14 IPR1: GOTO BPR1: ' 1 AVE. BRITISH-TYPE PALLISER/GRUSON CHILLED CAST IRON AP & COMMON IPR2: GOTO BPR2: ' 2 AVE. BRITISH-TYPE UNCAPPED STEEL AP SHOT/AP C.1900 IPR3: GOTO BPR3: ' 3 AVE. BRITISH-TYPE UNCAPPED STEEL AP SHELL/COMMON C.1900 IPR4: GOTO BPR4: ' 4 AVE. BRITISH-TYPE CAPPED STEEL AP SHELL/COMMON C.1900 IPR5: GOTO BPR5: ' 5 AVE. BRITISH-TYPE UNCAPPED CP (LIGHT-CASE) IPR6: GOTO BPR6: ' 6 AVE. BRITISH-TYPE CPC (LIGHT-CASE) IPR7: GOTO BPR7: ' 7 AVE. BRITISH-TYPE APC ORIGINAL C.1905 IPR8: GOTO BPR8: ' 8 AVE. BRITISH-TYPE APC IMPROVED CAST-STEEL (UP TO 12") C.1912 IPR9: GOTO BPR9: ' 9 AVE. BRITISH-TYPE APC IMPROVED FORGED-STEEL (13.5-15") FOR PROPOSED BB GUNS IPR10: GOTO BPR10: ' 10 AVE. BRITISH-12"-MARK 7A-TYPE POST-JUTLAND APC C.1923 IPR11: GOTO BPR11: ' 11 AVE. BRITISH-13.5"/14"/15"-MARK 5A-TYPE POST-JUTLAND APC FOR PROPOSED BB GUNS IPR12: GOTO DEFAULT7: ' 12 ITALIAN POST-1930 UNCAPPED COMMON (EST. USING KRUPP 20.3CM SPGR.M.BDZ. W/'GRUNDRING') IPR13: GOTO DEFAULT8: ' 13 ITALIAN POST-1930 CAPPED COMMON (EST. USING KRUPP 38CM SPGR.M.BDZ.U.K.) IPR14: PLIM = 1.02: PDAM = 1.02: ' 14 ITALIAN POST-1930 15-38cm APC (EST. BASED ON BRITISH 15" MK 5A IMPROVMENTS) ALD = .0081984#: BLD = 1.119507#: CLD = .005032# AED = -1: BED = -1: CED = -1 CARDONALD = 0: BEND = 0: SHATRES = 0: APCAP = 2: LTCASE = 0 CRITAGL = 25: BRAAK = 0: NSDAMAGL = 20 RETURN ' '** JAPAN JAPPROJDATA: ON PRJTL GOTO JPR1, JPR2, JPR3, JPR4, JPR5, JPR6, JPR7, JPR8, JPR9, JPR10, JPR11 JPR1: GOTO DEFAULT1: ' 1 PALLISER CHILLED CAST IRON JPR2: GOTO DEFAULT3: ' 2 UNCAPPED AP 1900 W/LARGE BLACK-POWDER FILLER JPR3: APCAP = 0: GOTO JCMN1: ' 3 UNCAPPED BASE-FUZED COMMON (4-6% FILLER) (BRITISH COMMON) JPR4: APCAP = 1: ' 4 SOFT-CAPPED BASE-FUZED COMMON (4-6% FILLER) (CAPPED DITTO) JCMN1: PLIM = .748: PDAM = .6: BRAAK = 1: LTCASE = 1: ' 3 & 4 (COMMON DATA) ALD = .0004301#: BLD = 1.845#: CLD = .0027# AED = .03322: BED = 1.172: CED = .02222: SHATRES = 1 CRITAGL = 0: NSDAMAGL = 15: CARDONALD = 0: BEND = 0 RETURN JPR5: APCAP = 0: LTCASE = 2: PLIM = .728: PDAM = .5: ' 5 BRITISH CP (9-10% FILLER) GOTO JCMN2 JPR6: APCAP = 1: LTCASE = 2: PLIM = .728: PDAM = .5: ' 6 BRITISH CPC (9-10% FILLER) GOTO JCMN2 JPR7: APCAP = 1: LTCASE = 0: PLIM = .985: PDAM = .985: ' 7 14-INCH BRITISH PRE-JUTLAND APC 1912-1921 JCMN2: ALD = .0004301#: BLD = 1.845#: CLD = .0027#: ' 5, 6, & 7 (COMMON DATA) AED = .03322: BED = 1.172: CED = .02222: SHATRES = 1 CRITAGL = 0: BRAAK = 1: NSDAMAGL = 15: CARDONALD = 0: BEND = 0 RETURN JPR8: PLIM = 1.02: PDAM = 1.01: ' 8 14-IN BRITISH 'MK 5' APC ALD = .0081984#: BLD = 1.119507#: CLD = .005032# AED = .03322: BED = 1.172: CED = .02222 GOTO JCMN3 JPR9: PLIM = 1.02: PDAM = 1.01: ' 9 20CM, 36CM, & 41CM MK 6/TYPE 88 APC ALD = .0081984#: BLD = 1.119507#: CLD = .005032# AED = .03322: BED = 1.172: CED = .02222 JCMN3: CARDONALD = 0: BEND = 0: SHATRES = 0: APCAP = 2: ' 8 & 9 (COMMON DATA) CRITAGL = 15: BRAAK = 1: NSDAMAGL = 20: LTCASE = 0 RETURN JPR10: AED = .00104: BED = 1.773: CED = .00823: LTCASE = 0: ' 10 ALL CAPPED TYPE 91 AP (APC) CRITAGL = 0: SHATRES = 0: NSDAMAGL = 15: PDAM = .85 GOTO JCMN4 JPR11: AED = -1: BED = -1: CED = -1: CRITAGL = 15: SHATRES = 1: ' 11 ALL UNCAPPED TYPE 91 AP (SAP) NSDAMAGL = 20: PDAM = .945: LTCASE = 1 JCMN4: ALD = .00336#: BLD = 1.418#: CLD = .0091701#: ' 10 & 11 (COMMON DATA) BRAAK = 1: APCAP = 2: PLIM = .945: CARDONALD = 0: BEND = 0 RETURN ' '** AUSTRO-HUNGARY AHPROJDATA: ON PRJTL GOTO APR1, APR2, APR3, APR4, APR5, APR6, APR7, APR8, APR9, APR10 APR1: GOTO DEFAULT1: ' 1 APR2: GOTO DEFAULT2: ' 2 APR3: GOTO DEFAULT3: ' 3 APR4: GOTO DEFAULT4: ' 4 APR5: GOTO DEFAULT5: ' 5 APR6: GOTO DEFAULT6: ' 6 APR7: APCAP = 0: LTCASE = 2: PLIM = .66: PDAM = .5: ' 7 SKODA BRITISH-TYPE CP (9-10% FILLER) (UNCAPPED) GOTO AHCMN1 APR8: GOTO DEFAULT8: ' 8 APR9: APCAP = 2: LTCASE = 2: PLIM = .66: PDAM = .5: ' 9 SKODA BRITISH-TYPE (BUT HARD-CAPPED) CPC (9-10% FILLER)(Z.GR.) AHCMN1: ALD = .0004301#: BLD = 1.845#: CLD = .0027#: ' 7 & 8 (COMMON DATA) AED = .03322: BED = 1.172: CED = .02222: SHATRES = 1 CRITAGL = 0: BRAAK = 1: NSDAMAGL = 15: CARDONALD = 0: BEND = 0 RETURN APR10: SHATRES = 0: APCAP = 2: ' 10 SKODA WWI APC (P.GR.) PLIM = .83: PDAM = .78 ALD = .000143#: BLD = 2.24#: CLD = .00267# AED = .000247: BED = 2.129: CED = .00172 CRITAGL = 0: NSDAMAGL = 15: BRAAK = 1: LTCASE = 0 CARDONALD = 0: BEND = 0 RETURN ' '** DEFAULTS #1-9: ESTIMATES FOR PROJ WITH LITTLE DATA DEFAULT1: ' AVE PRE-1900 UNCAPPED CHILLED CAST IRON AP (PALLISER/GRUSON) PLIM = .6: PDAM = .5: LTCASE = 1 SHATRES = 2: APCAP = 0: NSDAMAGL = 5 AED = -1: BED = -1: CED = -1 GOTO DEFCMN3 DEFAULT2: ' AVE CHILLED CAST IRON APC (U.S. ARMY COAST DEFENSE C.1900, ETC.) PLIM = .6: PDAM = .5: LTCASE = 1 SHATRES = 2: APCAP = 1: NSDAMAGL = 5 GOTO DEFCMN2 DEFAULT3: ' AVE C.1900 UNCAPPED STEEL "AP SHELL"/COMMON (4-6% BLACK-POWDER/HE FILLER) PLIM = .75: PDAM = .65: LTCASE = 1 SHATRES = 1: APCAP = 0: NSDAMAGL = 15 GOTO DEFCMN2 DEFAULT4: ' AVE C.1900 SOFT-CAPPED STEEL "AP SHELL"/COMMON (4-6% BLACK-POWDER/HE FILLER) PLIM = .75: PDAM = .65: LTCASE = 1 SHATRES = 1: APCAP = 1: NSDAMAGL = 15 GOTO DEFCMN2 DEFAULT5: ' AVE C. 1900 UNCAPPED STEEL "AP SHOT"/AP (0-3.9% BLACK POWDER/HE FILLER) PLIM = .83: PDAM = .75: LTCASE = 0: APCAP = 0 GOTO DEFCMN1 DEFAULT6: ' AVE C. 1900 SOFT-CAPPED STEEL "AP SHOT"/APC (0-3.9% BLACK POWDER/HE FILLER) PLIM = .83: PDAM = .75: LTCASE = 0: APCAP = 1 DEFCMN1: ' 5 & 6 (COMMON DATA #1) ALD = .0004301#: BLD = 1.845#: CLD = .0027# AED = .03322: BED = 1.172: CED = .02222 CRITAGL = 0: CARDONALD = 0: BEND = 0 BRAAK = 1: SHATRES = 1: NSDAMAGL = 15 RETURN DEFAULT7: ' GERMAN WWII HOODED BASE-FUZED COMMON ('SPGR.M.BDZ.U.HB.' WITH 'GRUNDRING') PLIM = .86: PDAM = .768: LTCASE = 1 SHATRES = 1: APCAP = -1: NSDAMAGL = 15 GOTO DEFCMN2 DEFAULT8: ' GERMAN WWII THIN-CAPPED BASE-FUZED COMMON ('38CM & 40.6CM SPGR.M.BDZ.U.K. L/4,6') PLIM = .86: PDAM = .768: LTCASE = 1 SHATRES = 1: APCAP = 3: NSDAMAGL = 15 GOTO DEFCMN2 DEFAULT9: ' SKODA C.1910 HARD-CAPPED STEEL "AP SHELL"/COMMON (4-6% BLACK-POWDER/HE FILLER) PLIM = .75: PDAM = .65: LTCASE = 1 SHATRES = 1: APCAP = 3: NSDAMAGL = 15 DEFCMN2: ' 2, 3, 4, 7, & 8 (COMMON DATA #2, PART 1) AED = .000247: BED = 2.129: CED = .00172 DEFCMN3: ' 1, 2, 3, 4, 7, & 8 (COMMON DATA #2, PART 2) ALD = .000143#: BLD = 2.249#: CLD = .00267# CRITAGL = 0: BRAAK = 1: CARDONALD = 0: BEND = 0 RETURN ' ' ** END OF SUB ALLPROJDATA ** END SUB SUB ARMORBACK STATIC ' ' INPUT WOOD, CEMENT, &/OR METAL BACK SUPPORT LAYER THICKNESS BEHIND ARMOR ' WDTRU = 100 * WD: PRINT "CURRENT WOOD BACKING THICKNESS ="; WDTRU; "inch"; IF (WDTRU > 1!) THEN PRINT "es": ELSE PRINT WOOD: INPUT "Thickness of wood backing, inches (0 = NONE): ", WD$ IF (WD$ = "") THEN PRINT "Using"; WDTRU ELSE WD = VAL(WD$) / 100 END IF IF (WD < 0) THEN GOTO WOOD: 'BAD INPUT ' CMTTRU = 25 * CMT: PRINT "CURRENT CEMENT BACKING THICKNESS ="; CMTTRU; "inch"; IF (CMTTRU > 1!) THEN PRINT "es": ELSE PRINT CEMENT: INPUT "Thickness of cement-type backing, inches (0 = NONE): ", CMT$ IF (CMT$ = "") THEN PRINT "Using"; CMTTRU ELSE CMT = VAL(CMT$) / 25 END IF IF (CMT < 0) THEN GOTO CEMENT: 'BAD INPUT ' PRINT "CURRENT METAL BACKING PLATE THICKNESS ="; MTLBACK; "inch"; IF (MTLBACK > 1!) THEN PRINT "es": ELSE PRINT METALBACK: INPUT "Total thickness of all metal backing, inches (0 = NONE): ", BK$ IF (BK$ = "") THEN PRINT "Using"; MTLBACK ELSE MTLBACK = VAL(BK$) END IF IF (MTLBACK < 0) THEN GOTO METALBACK: 'BAD INPUT ' ' ** END OF SUB ARMORBACK ** ' END SUB SUB ARMORINFO (ARMR) STATIC '* PARAMETERS FOR SELECTED ARMOR TYPE: * ''CARTWL' --IF '1', BRITTLE PLATE ALWAYS THROWS LARGE DISK ('CARTWHEEL' OR 'BACK SPALL') FROM BACK; IF '2', HAPPENS ONLY AT HIGH OBLIQUITY ''CMPND' --COMPOUND (STEEL-FACED WROUGHT IRON) ARMOR (FACE TOO SOFT TO SHATR MOST STEEL PROJ) ''SOFTSHAT'--EXTRA-TOUGH ARMOR THAT, IF '1', ALWAYS SHATRS SOFT-CAPPED PROJ (MOST POST-WWI ARMOR) OR, IF '2', SAME FOR WEAKER SOFT-CAPPED PROJ ('CARDONALD' < 2) ''THKTHN' --FLAG FOR BOUNDARY OF THICK- & THIN-PLATE CALCULATIONS (1=LOW 0.35-CAL VALUE/DUCTILE ARMOR; 0=HIGH 0.5-CAL VALUE/BRITTLE ARMOR) ''THNCHL' --VERY THIN FACE LAYER W/REDUCED BREAKAGE ABILITY (HARVEY & BETHLEHEM THIN CHILL) ''Q' --PLATE'S RELATIVE STEEL QUALITY BASED ON TYPICAL WWII ARMOR AS 1.00 STANDARD (LARGER=BETTER) ''QDAM' --PLATE'S RELATIVE PROJ DAMAGE ABILITY (ONLY RARELY DIFFERENT FROM 'Q') ''UB' --AVERAGE THICKNESS OF PLATE'S UNHARDENED BACK LAYER (THINNER MEANS MORE SCALING EFFECTS) (65% USED BY ORIGINAL KRUPP KC) ' Q = 1!: UB = 65: UBMAN = 65: UBCALC = 65: CARTWL = 0: CMPND = 0: SOFTSHAT = 0: THKTHN = 0: THNCHL = 0: 'INIT DEFAULT VALUES (SKIPPED IN TABLE IF USED AS-IS) ' ON ARMR GOTO GRUSON, COMPOUND, HARVEYMS, HARVEYNIS, KCAA, KCNA1, KCNA2, AHKC, BRWWIKC, BR1922KC, CA, TERNI, VH, MNC, BTC, WWICLA, WWIICLA, WWIICLA2, AVE1898, AVE1911, AVE1922, AVE1930 ' GRUSON: Q = .7: CARTWL = 1: '1-GRUSON CHILLED CAST IRON DOMES (VARIABLE FACE THICKNESS) CALL FACECALC UB = UBCALC: UBMAN = UBCALC: 'INITIALIZE NEW VALUES GOTO QDAMEQLQ COMPOUND: UB = 70: Q = .75: QDAM = .6: CMPND = 1: EXIT SUB: '2-COMPOUND (67-75% WROUGHT IRON W/CIRCA 450 BRINELL STEEL FACE) HARVEYMS: UB = 85: Q = .78: QDAM = .7: THNCHL = 1: EXIT SUB: '3-HARVEY MILD STEEL (CIRCA 1 INCH HIGH-CARBON 600-700 BRINELL 'CEMENTED' FACE) HARVEYNIS: UB = 85: Q = .805: QDAM = .75: THNCHL = 1: EXIT SUB: '4-HARVEY NI-STEEL (STRONGER STEEL) KCAA: Q = .828: GOTO QDAMEQLQ: '5-GERMAN KC a/A (ORIGINAL KRUPP KC) (TOUGH BACK LAYER, BUT FACE TOO BRITTLE FOR BEST RESULTS) KCNA1: UB = 59: Q = .9: THKTHN = 1: GOTO QDAMEQLQ: '6-GERMAN KC n/A (IMPROVED 1928 KRUPP KC FOR 'POCKET BATTLESHIP' TURRETS) (MEDIUM--41%--FACE THICKNESS & HIGHEST FACE HARDNESS EVER USED) KCNA2: UB = 59: Q = .96: GOTO AVE1930: '7-GERMAN KC n/A (FINAL FURTHER-IMPROVED THICK-PLATE VERSION OF GERMAN KC n/A FOR SCHARNHORST & BISMARCK) (HAS 'SOFTSHAT' CAPABILITY) AHKC: Q = .947: GOTO AVE1930: '8-AUSTRO-HUNGARIAN WITKOWITZER KC (ASSUMES 1911 SKODA 30.5-CM APC = KRUPP 30.5-CM L/3.4 APC) (BEST WWI FH ARMOR--HAS 'SOFTSHAT' CAPABILITY) BRWWIKC: Q = .85: SOFTSHAT = 2: THKTHN = 2: GOTO QDAMEQLQ: '9-BRITISH WWI AVERAGE KC BR1922KC: Q = .9: SOFTSHAT = 2: THKTHN = 2: GOTO QDAMEQLQ: '10-BRITISH AVERAGE KC USED IN HMS NELSON & RODNEY (IMPROVED WWI KC) CA: UB = 70: Q = .928: GOTO AVE1930: '11-BRITISH WWII CA (THINNEST FACE AFTER 1930 IN ALL THICKNESSES) TERNI: Q = .98: '12-ITALIAN POST-1930 TERNI CEMENTED (VARIABLE FACE THICKNESS = BEST THICK KC-TYPE & NEAR-BEST THIN KC-TYPE) CALL FACECALC UB = UBCALC: UBMAN = UBCALC: 'INITIALIZE NEW VALUES GOTO AVE1930 VH: Q = .839: GOTO QDAMEQLQ: '13-JAP VH (BEST NON-CEMENTED FH ARMOR, BUT BRITTLE--NOT 'SOFTSHAT' TYPE. ONLY POST-1930 FH ARMOR THAT WASN'T 'SOFTSHAT' ARMOR--BASED ON 1910 BRITISH VICKERS KC (VC)) MNC: UB = 18: Q = .881: CARTWL = 1: SOFTSHAT = 1: GOTO QDAMEQLQ: '14-MIDVALE NON-CEMENTED (HEAVIEST--82%--FACE: 50% @ 490-BRINELL & 32% TRANSITION--HAS 'SOFTSHAT' CAPABILITY) BTC: UB = 85: Q = .889: QDAM = .85: THNCHL = 1: EXIT SUB: '15-BETHLEHEM THIN CHILL (KC-TYPE, BUT THINNEST--ONLY ABOUT 15%--FACE) WWICLA: Q = .889: GOTO QDAMEQLQ: '16-MOST DEFAULTS USED HERE. AVERAGE OF ALL OTHER U.S. CLASS 'A' 1911-1930 (MOSTLY CARNEGIE KC ('CKC'; IMPROVED KRUPP KC a/A)) WWIICLA: UB = 45: GOTO AVE1930: '17-ORIGINAL U.S. WWII CLASS 'A' (THICKEST--55%--FACE FOR WWII FH ARMOR. BEST THIN PLATES, BUT FACE TOO THICK IN THICK PLATES) WWIICLA2: Q = 1.025: UB = 45: GOTO AVE1930: '18-IMPROVED U.S. WWII CLASS 'A' STARTING IN 1944 (MOST 6-TAPERED-TO-4" TO 8" PLATES) AVE1898: Q = .828: CARTWL = 2: GOTO QDAMEQLQ: '19-ALL OTHER KC 1898-1910 (SIMILAR TO KRUPP KC a/A, BUT EVEN MORE BRITTLE--WORST KC-TYPE ARMOR) AVE1911: Q = .85: GOTO QDAMEQLQ: '20-ALL OTHER KC 1911-1921 (NOTICABLY IMPROVED KRUPP KC a/A, WITH SOME IMPROVED TOUGHNESS, BUT STILL NO 'SOFTSHAT' CAPABILITY) AVE1922: Q = .9: GOTO QDAMEQLQ: '21-ALL OTHER KC 1922-1930 (FURTHER IMPROVED KC a/A; BUT STILL NO 'SOFTSHAT' CAPABILITY, TO MY KNOWLEDGE) AVE1930: SOFTSHAT = 1: THKTHN = 1: '22-MOST DEFAULTS USED HERE. ALL OTHER POST-1930 KC (VERY IMPROVED KC a/A) (ALL ARE EXTRA-TOUGH 'SOFTSHAT' PLATES--SOFT AP/HOODS CAPS DO NOT WORK VERY WELL) ' QDAMEQLQ: QDAM = Q: 'DEFAULT 'Q'='QDAM' VALUE FOR MOST ARMORS ' ** END OF SUB ARMORINFO ** END SUB SUB AUSTHUNGPROJ STATIC PRINT " 1. Average Chilled Cast Iron (Gruson) AP & Common (*)" PRINT " 2. Average Chilled Cast Iron APC (*)" PRINT " 3. Ave. c.1900 uncapped Steel 'AP Shell'/Common (4-6% blk-pwdr/HE filler)(*)" PRINT " 4. Ave. c.1900 soft-capped Steel 'AP Shell'/Common (4-6% blk-pwdr/HE filler)(*)" PRINT " 5. Ave. c.1900 uncapped Steel 'AP Shot'/AP (0-3.9% blk-powder/HE filler)(*)" PRINT " 6. Ave. c.1900 soft-capped Steel 'AP Shot'/APC (0-3.9% blk-powder/HE filler)(*)" PRINT " 7. British-type CP (no AP cap) (9-10% black-powder/HE filler) (1905-18)(*)" PRINT " 8. Hard-capped 'AP Shell'/Common (E.Gr.)(4-6% blk-pwdr/HE filler) (1909-18)(*)" PRINT " 9. British-type CPC(w/hard AP cap)(Z.gr.)(9-10% blk-pwdr/HE filler)(1909-18)(*)" PRINT "10. Improved Skoda APC(P.Gr.)(25%-Ni hard AP cap & 2-3.5% blok-TNT flr)(1909-18)" PRINT ' ** END SUB AUSTHUNGPROJ ** END SUB SUB BENDLOGIC '* BRITISH DEFORMABLE PROJ ('BEND' = 1) PENETRATION RULES IF (BEND = 1) AND (SHAT = 0) THEN IF (OB >= OBCRIT) THEN IF (CARDONALD = 1) THEN 'IF CARDONALD PROJ COMPLETELY PENETRATES AT ABOVE CRITICAL VEL, IT IS INTACT IF (VS >= VSCRIT) THEN BRK = 0: ELSE BRK = 7 ELSE BRK = 8: 'ONLY CARDONALD PROJECTILES RECOVER FROM SHATTER-BREAKAGE HERE END IF ELSE IF (((BRAIK = 0) AND (PENFLG < 2)) OR (PENFLG = 2)) THEN BRK = 0: ' PROJ BODY DAMAGE NIL BELOW 'OBCRIT' ON COMPLETE PENETRATION OR WITH STRONG PROJ ELSE BRK = 9: ' WEAK ('BRAIK' = 1) PROJ BODY BREAKS IF NOT COMPLETE PENETRATION END IF END IF END IF ' ** END SUB BENDLOGIC ** END SUB SUB BRITAINPROJ STATIC ' ' SCREEN PRINT OF BRITISH PROJECTILE OPTIONS ' PRINT " 1. Average Chilled Cast Iron (Palliser) uncapped AP & Common (*)" PRINT " 2. Average uncapped Steel 'AP Shot'/AP (0-3.9% black-powder/HE filler)(1890-23)" PRINT " 3. Ave. uncapped Steel 'AP Shell'/Common (4-6% black-powder/HE filler)(1890-23)" PRINT " 4. Ave. soft-capped Steel 'AP Shell'/Common (4-6% blk-powdr/HE filler)(1905-23)" PRINT " 5. Average uncapped Common, Pointed (CP)(6.6-9.4% black-powder filler)(1900-21)" PRINT " 6. Ave. Common, Pointed,(soft)Capped(CPC)(6.6-9.4% black-pdr/Shellite)(1905-25)" PRINT " 7. 6 to 12-in first soft-capped cast-steel APC(3.05-3.4% Lyddite filr)(1905-11)" PRINT " 8. 6 to 13.5-in(Light) improved cast-steel APC(3.05-3.4% Lyddite filr)(1912-18)" PRINT " 9. 13.5(Heavy), 14 & 15-in forged-steel APC(3.15-3.87% Lyddite filler)(1913-18)" PRINT "10. 12-in hard-capped Mark 7A 'GREEN BOY' APC (2.5% Shellite filler)(1918-45)" PRINT "11. 13.5(Heavy)/14/15-in Mark 5A 'GREEN BOY' APC (2.5% Shellite filler)(1918-35)" PRINT "12. 15-in Mark 5A 'Improved' (special 'blue-band' model) APC (1921-35)" PRINT "13. Average post-WWI CPBC/SAP (Hooded & 4-6% TNT- or Shellite filler) (1921-55)" PRINT "14. Post-WWI 8-in Mark 1B/4B SAPC (4-5% TNT filler)" PRINT "15. 9.2-in 'GREEN BOY' APC (3.4% Shellite filler for Coast Defense) (1919-35)" PRINT "16. Ave. 9.2-in Mark 12A APC (3.4% Shellite filler for Coast Defense) (1935-50)" PRINT "17. 16-in Mark 1B (NELSON Class) APC (2048 lb & 2.25% Shellite filler) (1925-45)" PRINT "18. 14-in Mark 1B/8B (KING GEORGE V Cl.), 15-in Mark 13A/non-Cardonald 17B/22B," PRINT " & 16-in Mark 2B (projected WWII LION Cl.) APC (2.5% TNT filler) (1935-57)" PRINT "19. Royal Ordnance Factory WWII 15-in Mk 17B 'Cardonald' APC (hardened)(1940-45)" PRINT ' ** END SUB BRITAINPROJ ** END SUB SUB CALCVDF STATIC ' ' COMPUTE VELOCITY HOLING DIFFERENTIAL TO USE IN THIS CASE ' ' BRITTLE WWI PLATES (ALL 'THKTHN = 0' PLATES) USE 'VDFSTDWW1'; ' ALL MORE MODERN, TOUGHER ('THKTHN > 0') PLATES USE SMALLER 'VDFSTDWW2' DIFFERENCE. ' BRITISH DEFORMABLE PROJECTILES ('BEND' = 1) VARY THIS FROM A NARROW GAP UP TO 22.5 DEG ' THEN A RAPID INCREASE IN THE GAP UNTIL IT REACHES THE STANDARD PLATE GAP AT & ABOVE 45 DEG. ' A CARDONALD PROJ IS MORE RIGID AND DOES NOT SUFFER THIS RAISING OF THE HBL (AT LEAST AS I SEE IT NOW). ' NON-BRITISH-CPC-TYPE PROJECTILES THAT BREAK IF THEY DO NOT COMPLETELY PENETRTATE HAVE HBL RAISED BY 'SHATVDF' ' SOFT-CAPPED BRITISH-CPC-TYPE PROJECTILES ALWAYS USE THE WWII VDF VALUE (THE GAP BETWEEN HBL & NBL STAYS LARGE) ' IF SHATTER OCCURS OR 'VDFBRK' IF NO SHATTER (CALCULATED IN SUBROUTINE 'CALCNBL' IN 'FH40MAIN' MODULE) ' 'VARIABLE 'VDFSTD' USED FOR NON-DEFORMING PROJ & BRITISH 'CARDONALD' PROJ WITH 'VLND' & 'VHND' VDFSTD = VDFSTDWW1: ' BRITTLE WWI ARMOR VEL GAP BETWEEN HBL & NBL 'TOUGHER WWII & BRITISH POST-1911/WITKOWITZER WWI ARMORS OR BRITISH-CPC-TYPE PROJ IF ((THKTHN > 0) OR ((BRAIK = 1) AND (LTCASE = 2) AND (ABS(HARD) = 1))) THEN VDFSTD = VDFSTDWW2 ' VDFUSED = VDFSTD: ' DEFAULT FOR MOST NON-BRITTLE PROJ (CONSTANT FOR ALL 'OB') ' IF ((BEND = 1) AND (CARDONALD = 0)) THEN ' BRITISH DEFORMABLE NON-CARDONALD PROJ OBVDF = OB IF (OB < 22.5) THEN OBVDF = 22.5: ' EQUAL TO 'DIF2' IF OB =< 22.5 DEG IF (OB > 45) THEN OBVDF = 45: ' EQUAL TO 'DIF1+DIF2' IF OB >= 45 DEG NINETYDEG = 90 / 57.29578: ' CHANGE TO RADIANS FOR SINE VDFVAL = NINETYDEG * (2 * ((OBVDF - 22.5) / 22.5) + 1) DIF1 = .08: DIF2 = .01: ' NON-CARDONALD DEFORMING PROJ THAT ARE NOT AS BRITTLE VDFBND = (VDFUSED / (DIF1 + DIF2)) * (DIF1 * (1 - SIN(VDFVAL)) / 2 + DIF2) ELSE VDFBND = 0: 'NON-BENDING PROJECTILES OR BRITISH CARDONALD BENDING PROJECTILES END IF ' ** END OF SUB CALCVDF ** END SUB SUB DEFLECCALC STATIC 'CALCULATED DEFLECTION OF 'EX' FROM ORIGINAL IMPACT 'OB' VRAT = VRATVEL / VRATMIN TMPV = VRAT ^ 2 - 1: TMPVEL = VRAT ^ 2 + VRAT * SQR(TMPV) TMPDF1 = SNCSMAX / TMPVEL: TMPDF2 = 1 - 4 * TMPDF1 ^ 2 TANOBDF = (1 - SQR(TMPDF2)) / (2 * TMPDF1): 'TRIG IDENTITY FOR TANGENT OF 'OBDF' TMPOBDF = ATN(TANOBDF) * 57.29578: ''TMPOBDF' = 'EXMIN' AT NL, SO EXTRA LOGIC BELOW NEEDED IF (OB - EXMIN) > 45 DEG IF ((OB - EXMIN) > 45!) THEN OB45CALC = ((OB - EXMIN) - 45!) / 45!: 'OB45CALC' = FRACTION OF (OB - EXMIN) > 45 DEG ELSE OB45CALC = 0: ' DEFAULT VALUE RESTORED END IF TMPOBDF = TMPOBDF * (1 + OB45CALC): ''OB45CALC' CHANGES IN STEP WITH 'OBDF' FOR 45 DEG, IF NOT ZERO ' ** END OF SUB DEFLECCALC ** END SUB SUB EFFVELINIT STATIC ' INITIALIZE EFF VEL CALC VARIABLES MINEV = 0: NOTEFLAG = 0: NSFLG = 0: CRITVEL = 0: NOSEVEL = 0: NVRFLAG = 0 MINEV1 = 0: MINEV2 = 0: MINEV3 = 0: MINEV4 = 0: MINEV5 = 0: NSTEST = 0 NSTESTV = 0 'SET UP FOR REVERSE 'EX' LOGIC IF (SHAT = 1) THEN MAXDIFF = 0: 'SHATR HAS NO LINEAR 'EX' PART BELOW 'VLMT' ELSE 'LINEAR 'EX' BELOW 'VLMT' OR WHEN 'OB'<=15 DEG IF (OB > 15!) THEN MAXDIFF = 15!: 'DEFLECTION AT 'VLMT' WHEN 'OB'>15 DEG ELSE MAXDIFF = OB: 'NO DEFLECTION AT 'VLMT' WHEN 'OB'<=15 DEG END IF END IF ' ** END SUB EFFVELINIT ** END SUB SUB FRANCEPROJ STATIC PRINT " 1. Average Chilled Cast Iron (Palliser/Gruson) AP & Common (*)" PRINT " 2. Average Chilled Cast Iron APC (*)" PRINT " 3. Ave. uncapped Steel AP Shell/Common (4-6% black-powder filler)(1890-1922)(*)" PRINT " 4. Ave. uncapped AP Shell/Common (4-6% TNT/British Shellite filler)(1923-60)(*)" PRINT " 5. Ave. soft-capped AP Shell(4-6% blk-pdr/Melanite/Shellite filler)(1900-45)(*)" PRINT " 6. 33cm APC (1934 SAPC) (4% Shellite filler) (O.Pf(RC) KMle 34)(*)" PRINT " 7. 38cm APC (original French 1940) (2% Shellite filler) (O.Pf(RC) KMle 40)(*)" PRINT " 8. 38cm APC (US Crucible Steel AP Mk 1 1943)(2% Ex. D filler)(O.Pf(RC) KMle 43)" PRINT ' ** END SUB FRANCEPROJ ** END SUB SUB GERMANYPROJ STATIC PRINT " 1. Average Chilled Cast Iron (Gruson) AP & Common (*)" PRINT " 2. Average Steel uncapped small-filler 'AP Shot'/AP up to 1918 ('Psgr.') (*)" PRINT " 3. Average Steel uncapped, base-fuzed Common ('Spgr.m.Bdz.') up to 1929 (*)" PRINT " 4. Ave. Steel APC up to 1911 ('Psgr.m.K.' w/'Gr.f.88' or black powder filler)" PRINT " 5. Ave. L/3.2 & L/3.4 APC (0.5-cal-KCa/A@30-deg, TNT, & delay-fuzed) (1911-18)" PRINT " 6. Ave. uncapped, base-fuzed, hooded Common from 1930 on ('Spgr.m.Bdz.u.Hb.')" PRINT " 7. WWII 38cm & Projected 40.6cm L/4.6 capped Common ('Spgr.m.Bdz.u.K.') (*)" PRINT " 8. Post-WWI 15cm L/3.7 APC (All German Navy 15cm guns from 1925 on)" PRINT " 9. Post-WWI 28.3cm L/3.7 APC ('28cm') ('Pocket BB' main armament)" PRINT "10. WWII 20.3cm L/4.4 and Prototype 30.5cm L/4.4 & 1944 15cm L/4.6 APC" PRINT "11. WWII 28.3cm L/4.4 APC ('28cm')" PRINT "12. WWII 38cm L/4.4 APC" PRINT "13. WWII 40.6cm L/4.4 and Projected 45.7cm & 50.8cm (L/4.4?) APC" PRINT "14. Average long-range, light-weight Coast Artillery APC (21/28.3/38/40.6cm)(*)" PRINT "15. Projected 53cm 'Gerat. 36' (L/4.4?) APC for H-44-Type Battleships (*)" PRINT PRINT "NOTE: All post-1930 Common & APC projectiles had aluminum windscreens." PRINT ' ** END SUB GERMANYPROJ ** END SUB SUB GETPLATETHICKNESS STATIC ' ' INPUT AND STORE ACTUAL PLATE THICKNESS ' THICKNESS: IF (TA > 0) THEN PRINT "CURRENT ACTUAL PLATE THICKNESS ="; TA; "inches" INPUT "Armor plate actual thickness at impact center (TA), inches: ", TA$ IF ((TA$ = "") AND (TA > 0)) THEN PRINT "Using"; TA ELSE TA = VAL(TA$) END IF IF (TA <= 0) THEN GOTO THICKNESS: 'BAD INPUT ' ' ** END OF SUB GETPLATETHICKNESS ** END SUB SUB GRUSONANDTC STATIC 'GRUSON (ARMOR = 1) OR TERNI CEMENTED (ARMOR = 12) ARMOR FACE THICKNESS LOGIC ' PRINT IF (ARMOR = 1) THEN PRINT "Gruson Armor Back Layer Percent (UB) varies linearly (estimate) from a minimum" PRINT "of 45% if TA <= 15.75 inches to a maximum of 67% if TA >= 33.07 inches (84cm," PRINT "the thickest known Gruson plate ever made)." ELSE PRINT "Terni Cemented Armor Back Layer Percent (UB) varies linearly (estimate) from a" PRINT "minimum of 50% if TA < 6.2205 inches to a maximum of 70% if TA > 10.433 inches." PRINT "Between these two boundaries, face thickness is very close to constant for all" PRINT "plate thicknesses. The simplest estimate between known 13cm & 28cm TC plates." END IF PRINT "UB values calculated are rounded down to the nearest whole percent." PRINT " CURRENT PLATE BACK LAYER FROM 'UB' DEFAULT CALCULATION (%) ="; UBCALC PRINT " CURRENT MANUAL 'UB' OVERRIDE VALUE (%) ="; IF (UBMAN <> UBCALC) THEN PRINT UB: ELSE PRINT " NONE (Default value in use)" ' ' ** END OF SUB GRUSONANDTC ** END SUB SUB INITVALHDR STATIC ' ' INITIALIZE CONSTANTS AND PRINT SCREEN HEADER VXP = 1 / 1.21: 'INVERSE OF VEL TO THICKNESS EXPONENT (= 0.8264463) VDFSTDWW1 = .1256839#: 'STANDARD WWI VEL DIFF (100*%(NBL-HBL)) BETWEEN HBL & NBL (W/O SPECIAL LOGIC) VDFSTDWW2 = .09#: 'STANDARD WWII VEL DIFF (100*%(NBL-HBL)) BETWEEN HBL & NBL (W/O SPECIAL LOGIC) VDFBRK = .02#: 'VEL DIFF IF PROJ ALWAYS BREAKS IF IT DOES NOT PENETRATE COMPLETELY (100*%(NBL-HBL)) BETWEEN HBL & NBL (W/O SPECIAL LOGIC) CLS : PRINT "NATHAN OKUN FACE HARDENED ARMOR PENETRATION PROGRAM(c) (VERSION 5.8 (2/9/2004))": PRINT : 'CENTERED TITLE PRINT " *** Press RETURN/ENTER without entry to repeat a previous DATA VALUE entry ***": PRINT ' ' ** END OF SUB INITVALHDR ** END SUB SUB ITALYPROJ STATIC PRINT " 1. Average Chilled Cast Iron (Palliser/Gruson) uncapped AP & Common (*)" PRINT " 2. Ave. c.1900 uncapped Steel 'AP Shot'/AP (0-3.9% black-powder filler) (*)" PRINT " 3. Ave. uncapped Steel 'AP Shell'/Common (4-6% black-powder/HE filler)(1900-30)" PRINT " 4. Ave. British soft-capped Common (4-6% black-powder/HE filler)(1905-30)" PRINT " 5. Ave. British uncapped CP (6.6-9.4% black-powder filler)(1900-23)" PRINT " 6. Ave. British soft-capped CPC (6.6-9.4% black-powder filler)(1912-23)" PRINT " 7. British original 6 to 12-in soft-capped APC(3.05-3.4% Lyddite filr)(1905-11)" PRINT " 8. British improved 6 to 13.5-in(Light) APC(3.05-3.4% Lyddite filr)(1912-23)" PRINT " 9. British improved 15-in APC(3.15-3.87% Lyddite filler)(Proposed 1914 BB guns)" PRINT "10. British 12-in hard-capped 'Mark-7A' APC (2.5% TNT filler)(1921-30)" PRINT "11. British 15-in hard-capped 'Mark 5A' APC(2.5% TNT flr)(Proposed 1914 BB guns)" PRINT "12. Average Italian-design uncapped Common (3-6% TNT filler) (1931-50) (*)" PRINT "13. Average Italian-design hard-capped Common (3-6% TNT filler) (1931-50) (*)" PRINT "14. Average Italian-design 15cm-38cm APC (2-2.9% TNT filler) (1931-45) (*)" PRINT ' ** END SUB ITALYPROJ ** END SUB SUB JAPANPROJ STATIC PRINT " 1. Average Chilled Cast Iron (Palliser/Gruson) uncapped AP & Common (*)" PRINT " 2. Ave. uncapped Steel AP Shot(0-3.9% black-powdr/Shimose filler)(1895-1911)(*)" PRINT " 3. Ave. uncapped Steel AP Shell/Common (4-6% Shimose filler) (1915-45)(*)" PRINT " 4. Ave. soft-capped Steel AP Shell/Common (4-6% Shimose filler) (1915-45)(*)" PRINT " 5. Ave. uncapped British CP (6.1-10% black-powder/Shimose filler)(1895-1923)" PRINT " 6. 14/16.1-in(36/41cm)British CPC(6.1-10% black-powder/Shimose filler)(1912-28)" PRINT " 7. 14-in (36cm) British pre-Jutland APC (3.16% Shimose filler) (1912-21)" PRINT " 8. 36/41cm hard-capped British 'Mark 5'-type APC (2.5% Shimose filler)(1921-28)" PRINT " 9. 20cm (1928-45), 36 & 41cm (1928-31) 'Mark 6'/Type 88 APC (Mark 5 w/cap head)" PRINT "10. 30.5 & 51cm (Proposed) & 36, 41, & 46cm (1931-45) Type 91 APC with cap head" PRINT "11. 15.5cm & 20.3cm uncapped Type 91 AP (flat-nosed SAP) with cap head (1931-45)" PRINT PRINT "NOTE: Type 88 APC has 2.5% Shimose filler, but Type 91 APC has 2.5% cavity with" PRINT " only 1.4-1.6% TNA filler & Type 91 AP has 4% cavity with only 2.5% TNA filler." PRINT " 'Cap head' is break-away nose tip lost with windscreen after any impact; it" PRINT " functions against face-hardened armor as tip of projectile cap or, for uncapped" PRINT " Type 91, as a very limited AP cap only during plate hole formation. Loss prior" PRINT " to plate impact reduces penetration slightly with capped projectiles, but prior" PRINT " loss results in a major loss of holing ability in uncapped Type 91 projectiles." PRINT ' ** END SUB JAPANPROJ ** END SUB SUB LMTSTRINGS STATIC ' ' BALLISTIC LIMIT DEFINITION STRINGS FOR PAGE 2 OF RESULTS DEFINED HERE ' RESNOTE$ = " BL USED FOR PENETRATION MARKED BY '-!-'/BL USED FOR POST-IMPACT LOGIC BY '-#-'" NBL1$ = "N1> Navy BL w/o shatter, but all other damage & given AP cap =" NBL2$ = "N2> Navy BL w/ shatter and all other damage & given AP cap =" NBL3$ = "(Worst (maximum) NBL at low OB; replaces N1 when OB <= 45 deg and N2 < N1)" NBL4$ = "N3> Navy BL w/ shatter, but no other damage & given AP cap =" NBL5$ = "(Replaces N2 (& N1/N4 if N2 does) @ NBL or VS if no shatter-changing damage)" NBL6$ = "N4> Navy BL if unshattered/undeformed body and given AP cap =" NBL7$ = "(Best (minimum) NBL; replaces N1 @ NBL or VS if no penetration-changing damage)" '* HBL1$ = "H1> Holing BL without shatter using given AP cap =" HBL2$ = "(Unshattered HBL if < H2 and non-shatter damage reduces penetration @ HBL)" HBL3$ = "(Includes Japanese uncapped Type 91 AP projectile w/cap head in place)" HBL4$ = "H2> Holing BL with shatter (AP cap, if any, did not work) =" HBL5$ = "(Replaces H1 if H2 <= H1 (smaller hole) or other damage adds to shatter @ HBL)" HBL6$ = "H3> Holing BL with shatter, but no other kind of damage =" HBL7$ = "(Best high-OB HBL; replaces H2 @ HBL or VS if no shatter-changing damage)" HBL8$ = "H4> Holing BL if unshattered/undeformed body & given AP cap =" HBL9$ = "(Best low -OB HBL; replaces H1 @ HBL or VS if no penetration-changing damage)" ' ' END SUBROUNTINE 'LMTSTRINGS END SUB SUB LPAUSTHUNG (PRJ) STATIC LPRINT "AUSTRO-HUNGARIAN"; PSL$ SELECT CASE PRJ CASE 1 LPRINT " Average Chilled Cast Iron (Gruson) AP & Common" CASE 2 LPRINT " Average Chilled Cast Iron APC" CASE 3 LPRINT " Ave. c.1900 uncapped Steel 'AP Shell'/Common (4-6% blk-pwdr/HE filler)" CASE 4 LPRINT " Ave. c.1900 soft-capped Steel 'AP Shell'/Common (4-6% blk-pwdr/HE filler)" CASE 5 LPRINT " Ave. c.1900 uncapped Steel 'AP Shot'/AP (0-3.9% blk-powder/HE filler)" CASE 6 LPRINT " Ave. c.1900 soft-capped Steel 'AP Shot'/APC (0-3.9% blk-powder/HE filler)" CASE 7 LPRINT " British-type CP (no AP cap) (9-10% black-powder/HE filler) (1905-18)" CASE 8 LPRINT " Hard-capped 'AP Shell'/Common (E.Gr.) (4-6% black-powder/HE filler) (1909-18)" CASE 9 LPRINT " British-type CPC(w/hard AP cap)(Z.gr.)(9-10% black-powder/HE filler)(1909-18)" CASE 10 LPRINT " Improved Skoda APC(P.Gr.)(25%-Ni hard AP cap & 2-3.5% block-TNT flr)(1909-18)" END SELECT '** END OF SUB LPAUSTHUNG ** END SUB SUB LPBRITISH (PRJ) STATIC LPRINT "BRITISH"; PSL$ SELECT CASE PRJ CASE 1 LPRINT " Average Chilled Cast Iron (Palliser) uncapped AP & Common" CASE 2 LPRINT " Average uncapped Steel 'AP Shot'/AP (0-3.9% black-powder/HE filler) (1890-23)" CASE 3 LPRINT " Ave. uncapped Steel 'AP Shell'/Common (4-6% black-powder/HE filler) (1890-23)" CASE 4 LPRINT " Ave. soft-capped Steel 'AP Shell'/Common (4-6% blk-powdr/HE filler) (1905-23)" CASE 5 LPRINT " Average uncapped Common, Pointed (CP) (6.6-9.4% black-powder filler) (1900-21)" CASE 6 LPRINT " Ave. Common, Pointed,(soft)Capped(CPC) (6.6-9.4% black-pdr/Shellite) (1905-25)" CASE 7 LPRINT " 6 to 12-in first soft-capped cast-steel APC (3.05-3.4% Lyddite filr) (1905-11)" CASE 8 LPRINT " 6 to 13.5-in(Light) improved cast-steel APC (3.05-3.4% Lyddite filr) (1912-18)" CASE 9 LPRINT " 13.5(Heavy), 14 & 15-in forged-steel APC (3.15-3.87% Lyddite filler) (1913-18)" CASE 10 LPRINT " 12-in hard-capped Mark 7A 'GREEN BOY' APC (2.5% Shellite filler) (1918-45)" CASE 11 LPRINT " 13.5(Heavy)/14/15-in Mark 5A 'GREEN BOY' APC (2.5% Shellite filler) (1918-35)" CASE 12 LPRINT " 15-in Mark 5A 'Improved' (special 'blue-band' model) APC (1921-35)" CASE 13 LPRINT " Average post-WWI CPBC/SAP (Hooded & 4-6% TNT- or Shellite filler) (1921-55)" CASE 14 LPRINT " Post-WWI 8-in Mark 1B/4B SAPC (4-5% TNT filler)" CASE 15 LPRINT " 9.2-in 'GREEN BOY' APC (3.4% Shellite filler for Coast Defense) (1919-35)" CASE 16 LPRINT " Ave. 9.2-in Mark 12A APC (3.4% Shellite filler for Coast Defense) (1935-50)" CASE 17 LPRINT " 16-in Mark 1B (NELSON Class) APC (2048 lb & 2.25% Shellite filler) (1925-45)" CASE 18 LPRINT " 14-in Mark 1B/8B (KING GEORGE V Cl.), 15-in Mark 13A/non-Cardonald 17B/22B," LPRINT " & 16-in Mark 2B (projected WWII LION Cl.) APC (2.5% TNT filler) (1935-57)" CASE 19 LPRINT " Royal Ordnance Factory WWII 15-in Mk 17B 'Cardonald' APC (hardened) (1940-45)" END SELECT ' ** END OF SUB LPBRITISH ** END SUB SUB LPDAMAGE STATIC 'PRINT TO PRINTER NOSE & BODY DAMAGE INFO LPRINT BDYDM1$ IF (BDYDM2$ <> "") THEN LPRINT BDYDM2$ IF (BDYDM3$ <> "") THEN LPRINT BDYDM3$: 'NOSE & BODY DAMAGE COVERED ALREADY ELSE ' NOSE DAMAGE NOT COVERED YET IF (NSBRK1$ <> "") THEN LPRINT NSBRK1$ IF (NSBRK2$ <> "") THEN LPRINT NSBRK2$: LPRINT NSBRK3$ END IF END IF ' ** END SUB LPDAMAGE ** END SUB SUB LPFRENCH (PRJ) STATIC LPRINT "FRENCH"; PSL$ SELECT CASE PRJ CASE 1 LPRINT " Average Chilled Cast Iron (Palliser/Gruson) AP & Common" CASE 2 LPRINT " Average Chilled Cast Iron APC" CASE 3 LPRINT " Ave. uncapped Steel AP Shell/Common (4-6% black-powder filler) (1890-1922)" CASE 4 LPRINT " Ave. uncapped AP Shell/Common (4-6% TNT/British Shellite filler) (1923-60)" CASE 5 LPRINT " Ave. soft-capped AP Shell (4-6% black-pwdr/Melanite/Shellite filler) (1900-45)" CASE 6 LPRINT " 33cm APC (1934 SAPC) (4% Shellite filler) (O.Pf(RC) KMle 34)" CASE 7 LPRINT " 38cm APC (original French 1940) (2% Shellite filler) (O.Pf(RC) KMle 40)" CASE 8 LPRINT " 38cm APC (US Crucible Steel AP Mk 1 1943)(2% Ex. D filler) (O.Pf(RC) KMle 43)" END SELECT ' ** END OF SUB LPFRENCH ** END SUB SUB LPGERMAN (PRJ) STATIC LPRINT "GERMAN"; PSL$ SELECT CASE PRJ CASE 1 LPRINT " Average Chilled Cast Iron (Gruson) AP & Common" CASE 2 LPRINT " Average Steel uncapped small-filler 'AP Shot'/AP up to 1918 ('Psgr.')" CASE 3 LPRINT " Average Steel uncapped, base-fuzed Common ('Spgr.m.Bdz.') up to 1929" CASE 4 LPRINT " Ave. Steel APC up to 1911 ('Psgr.m.K.' w/'Gr.f.88' or black powder filler)" CASE 5 LPRINT " Ave. L/3.2 & L/3.4 APC (0.5-cal-KCa/A@30-deg, TNT, & delay-fuzed) (1911-18)" CASE 6 LPRINT " Ave. uncapped, base-fuzed, hooded Common from 1930 on ('Spgr.m.Bdz.u.Hb.')" CASE 7 LPRINT " WWII 38cm & Projected 40.6cm L/4.6 capped Common ('Spgr.m.Bdz.u.K.')" CASE 8 LPRINT " Post-WWI 15cm L/3.7 APC (All German Navy 15cm guns from 1925 on)" CASE 9 LPRINT " Post-WWI 28.3cm L/3.7 APC ('28cm') ('Pocket BB' main armament)" CASE 10 LPRINT " WWII 20.3cm L/4.4 and Prototype 30.5cm L/4.4 & 1944 15cm L/4.6 APC" CASE 11 LPRINT " WWII 28.3cm L/4.4 APC ('28cm')" CASE 12 LPRINT " WWII 38cm L/4.4 APC" CASE 13 LPRINT " WWII 40.6cm L/4.4 & Projected 45.7cm & 50.8cm (L/4.4?) APC" CASE 14 LPRINT " Average long-range, light-weight Coast Artillery APC (21/28.3/38/40.6cm)" CASE 15 LPRINT " Projected 53cm 'Gerat. 36' (L/4.4?) APC for H-44-Type Battleships" END SELECT ' ** END OF SUB LPGERMAN ** END SUB SUB LPITALIAN (PRJ) STATIC LPRINT "ITALIAN"; PSL$ SELECT CASE PRJ CASE 1 LPRINT " Average Chilled Cast Iron (Palliser/Gruson) uncapped AP & Common" CASE 2 LPRINT " Ave. c.1900 uncapped Steel 'AP Shot'/AP (0-3.9% black-powder filler)" CASE 3 LPRINT " Ave. uncapped Steel 'AP Shell'/Common (4-6% black-powder/HE filler) (1900-30)" CASE 4 LPRINT " Ave. British soft-capped Common (4-6% black-powder/HE filler) (1905-30)" CASE 5 LPRINT " Ave. British uncapped CP (6.6-9.4% black-powder filler) (1900-23)" CASE 6 LPRINT " Ave. British soft-capped CPC (6.6-9.4% black-powder filler) (1912-23)" CASE 7 LPRINT " British original 6 to 12-in soft-capped APC(3.05-3.4% Lyddite filler)(1905-11)" CASE 8 LPRINT " British improved 6 to 13.5-in (Light) APC (3.05-3.4% Lyddite filler) (1912-23)" CASE 9 LPRINT " British improved 15-in APC (3.15-3.87% Lyddite filler) (Proposed 1914 BB guns)" CASE 10 LPRINT " British 12-in hard-capped 'Mark-7A' APC (2.5% TNT filler) (1921-30)" CASE 11 LPRINT " British 15-in hard-capped 'Mark 5A' APC (2.5% TNT flr) (Proposed 1914 BB guns)" CASE 12 LPRINT " Average Italian-design uncapped Common (3-6% TNT filler) (1931-50)" CASE 13 LPRINT " Average Italian-design hard-capped Common (3-6% TNT filler) (1931-50)" CASE 14 LPRINT " Average Italian-design 15cm-38cm APC (2-2.9% TNT filler) (1931-45)" END SELECT ' ** END OF SUB LPITALIAN ** END SUB SUB LPJAPANESE (PRJ) STATIC LPRINT "JAPANESE"; PSL$ SELECT CASE PRJ CASE 1 LPRINT " Average Chilled Cast Iron (Palliser/Gruson) uncapped AP & Common" CASE 2 LPRINT " Ave. uncapped Steel AP Shot (0-3.9% black-powdr/Shimose filler) (1895-1911)" CASE 3 LPRINT " Ave. uncapped Steel AP Shell/Common (4-6% Shimose filler) (1915-45)" CASE 4 LPRINT " Ave. soft-capped Steel AP Shell/Common (4-6% Shimose filler) (1915-45)" CASE 5 LPRINT " Ave. uncapped British CP (6.1-10% black-powder/Shimose filler) (1895-1923)" CASE 6 LPRINT " 14/16.1-in (36/41cm) British CPC(6.1-10% black-powder/Shimose filler)(1912-28)" CASE 7 LPRINT " 14-in (36cm) British pre-Jutland APC (3.16% Shimose filler) (1912-21)" CASE 8 LPRINT " 36/41cm hard-capped British 'Mark 5'-type APC (2.5% Shimose filler) (1921-28)" CASE 9 LPRINT " 20cm (1928-45), 36 & 41cm (1928-31) 'Mark 6'/Type 88 APC (Mark 5 w/cap head)" CASE 10 LPRINT " 30.5 & 51cm (Proposed) & 36, 41, & 46cm (1931-45) Type 91 APC with cap head" CASE 11 LPRINT " 15.5cm & 20.3cm uncapped Type 91 AP (flat-nosed SAP) with cap head (1931-45)" END SELECT '** END OF SUB LPJAPANESE ** END SUB SUB LPPROJIMPACT STATIC 'PRINT D, VS, & OB TO PRINTER LPRINT "Projectile Diameter (Caliber) ="; D; "inch"; IF (D > 1!) THEN LPRINT "es": ELSE LPRINT LPRINT "Projectile Striking Velocity ="; VS; IF (VS > 1!) THEN LPRINT "feet/second": ELSE LPRINT "foot/second" LPRINT "Projectile Impact Obliquity ="; OBPRNT; "degree"; IF (OBPRNT > 1!) THEN LPRINT "s": ELSE LPRINT ' ** END OF SUB LPPROJIMPACT ** END SUB SUB LPRINTHDR STATIC LPRINT SPC(4); "USUAL RESULTS OF NATHAN OKUN FACE HARDENED ARMOR PENETRATION PROGRAM (c)" LPRINT SPC(20); "(VERSION 5.8 DATED 9 FEBRUARY 2004)" LPRINT "ALL FACE HARDENED ARMOR PLATE TYPES:" LPRINT " 1. Gruson Chilled Cast Iron (1868-90) (land fortification dome turrets)" LPRINT " 2. Average Compound (hardened-steel-faced wrought iron) (1880-90)" LPRINT " 3. Harveyized (cemented/carburized/case hardened) Mild Steel (1891-1900)" LPRINT " 4. Harveyized Nickel-Steel (1890-1900) (usual 'Harvey' armor)" LPRINT " 5. German original Krupp Cemented (1894-1918) ('KC a/A' (KC 'Old Type'))" LPRINT " 6. German new KC 'n/A' ('New Type') (1928-36) for 'Pocket BB' turrets only" LPRINT " 7. German improved thick-plate KC n/A (1936-45) (SCHARNHORST & BISMARCK)" LPRINT " 8. Austro-Hungarian Witkowitz KC (1898-1918)" LPRINT " 9. British average KC manufactured 1911-21 (all manufacturers)" LPRINT " 10. British average KC manufactured 1922-30 (all manufacturers)" LPRINT " 11. British average post-1930 Cemented Armor (all manufacturers)" LPRINT " 12. Italian Terni Cemented Armor (TC) (thin face for thick plates) (1935-45)" LPRINT " 13. Japanese Vickers Hardened (non-cemented) (1937-45)" LPRINT " 14. U.S. Midvale Non-Cemented Class 'A' (1907-12 & 1922)" LPRINT " 15. U.S. Bethlehem Thin Chill Class 'A' (1921-25) (also made by Midvale)" LPRINT " 16. U.S. average of all other Class 'A' manufactured 1911-25" LPRINT " 17. U.S. average 1935-1943 Class 'A' (all manufacturers) (original)" LPRINT " 18. U.S. average 1944-1950 Class 'A' (all manufacturers) (improved)" LPRINT " 19. Average of all other KC introduced before 1911 (including U.S.& Britain)" LPRINT " 20. Average of all other KC introduced between 1911 and 1921" LPRINT " 21. Average of all other KC introduced between 1922 and 1930" LPRINT " 22. Average of all other KC introduced after 1930" ' ' ** END OF SUB LPRINTHDR ** END SUB SUB LPRNTARMOR STATIC ' PRINT ARMOR TYPE & PARAMETERS TO PRINTER LPRINT SPC(25); ">>>>>>>> TYPE USED ="; ARMOR; "<<<<<<<<" LPRINT "SEE PROGRAM ARMOR PARAMETER CHANGE LOGIC FOR MEANING OF VALUES & FLAGS." IF ((ARMOR = 1) OR (ARMOR = 12)) THEN LPRINT "GRUSON & TC ARMORS: Soft Back Layer Thickness 'UB' varies with thickness." LPRINT "Calculated default 'UB' value for this plate given in 'ORIGINAL ARMOR' data." END IF LPRINT "FLAGS = '0'(CLEAR), '1'(SET), or, for SOFTSHAT, CARTWL & THKTHN, '2'(ALTERNATE)" LPRINT "ORIGINAL ARMOR TABLE PARAMETER VALUES:"; TAB(41); "UB ="; UBSV; TAB(52); "Q ="; QSV; TAB(64); "QDAM ="; QDAMSV LPRINT " FLAGS: CARTWL="; CARTWLSV; TAB(21); "CMPND="; CMPNDSV; TAB(31); LPRINT "THNCHL="; THNCHLSV; TAB(42); "SOFTSHAT="; SOFTSHATSV; TAB(55); "THKTHN="; THKTHNSV LPRINT "CURRENT ARMOR PARAMETER VALUES:"; TAB(41); "UB ="; UB; TAB(52); "Q ="; Q; TAB(64); "QDAM ="; QDAM LPRINT " FLAGS: CARTWL="; CARTWL; TAB(21); "CMPND="; CMPND; TAB(31); LPRINT "THNCHL="; THNCHL; TAB(42); "SOFTSHAT="; SOFTSHAT; TAB(55); "THKTHN="; THKTHN NATN$ = STR$(NATION): PRJ$ = STR$(PROJ) PSL$ = " (NATION =" + NATN$ + ") PROJECTILE TYPE (SELECTION =" + PRJ$ + "):" ' ** END OF SUB LPRNTARMOR ** END SUB SUB LPRNTSECPG STATIC 'PRINT OUT SECOND PAGE OF DATA (EBL/NBL/HBL) TO PRINTER LPRINT TAB(34); "PAGE 1 OF 2": LPRINT CHR$(12); : 'FORM FEED '* LPRINT SPC(12); CALC$ LPRINT LPRINT RESNOTE$ LPRINT LPRINT NBL1$; VELLTRU$; " "; N1$ LPRINT NBL2$; VELLSHAT$; " "; N2$: LPRINT NBL3$ LPRINT NBL4$; VELLSHATMAX$; " "; N3$: LPRINT NBL5$ LPRINT NBL6$; VELLND$; " "; N4$: LPRINT NBL7$ LPRINT LPRINT HBL1$; VELHTRU$; " "; H1$: LPRINT HBL2$: LPRINT HBL3$ LPRINT HBL4$; VELHSHAT$; " "; H2$: LPRINT HBL5$ LPRINT HBL6$; VELHSHATMAX$; " "; H3$: LPRINT HBL7$ LPRINT HBL8$; VELHND$; " "; H4$: LPRINT HBL9$ '* 'PRINT EFFECTIVE B.L. LPRINT : LPRINT EBL$; IF (EFFVEL$ <> "") THEN LPRINT EFFVEL$; IF ((VHOL <= 4000) AND (PAND$ <> "")) THEN LPRINT PAND$: LPRINT SPC(29); END IF IF (HBLTONBL$ = "") THEN LPRINT EFFPRINT1$; EFFPRINT2$; IF (NVRFLAG = 1) THEN LPRINT OBCRIT: ELSE PRINT ELSE LPRINT HBLTONBL$ END IF LPRINT IF (NOTE1$ <> "") THEN LPRINT NOTE1$: LPRINT NOTE2$ IF (NOTE3$ <> "") THEN LPRINT NOTE3$ IF (NOTE4$ <> "") THEN LPRINT NOTE4$ IF ((NOTE5$ <> "") AND ((BEND = 1) OR ((BEND = 0) AND (MINEV >= VHOL)))) THEN LPRINT NOTE5$ LPRINT : LPRINT : LPRINT TAB(34); "PAGE 2 OF 2": LPRINT CHR$(12); : 'FORM FEED ' ** END OF SUB LPRNTSECPG ** END SUB SUB LPUS (PRJ) STATIC LPRINT "U.S."; PSL$ IF (PRJ > 13) THEN LPRINT " >>NOTE: 'Mk XX-Y-Z' means 'Mark (Design) XX Mod (Model/Version) Y to Z'<<" END IF SELECT CASE PRJ CASE 1 LPRINT " Average Army/Navy (A/N) uncapped Chilled Cast Iron (Palliser) AP & Common" CASE 2 LPRINT " Average capped Chilled Cast Iron Army Coast Defense (A.C.D.) APC (1900-10)" CASE 3 LPRINT " A/N uncapped Steel 'AP Shot' (0-3.9% black-powder/Ex.D filler) (1890-1910)" CASE 4 LPRINT " A/N soft-capped Steel 'AP Shot'(0-3.9% blk-powder/Ex.D filler)(1898-1910N/45A)" CASE 5 LPRINT " A/N uncapped Steel 'AP Shell'/Common(4-6% black-powder/Ex.D filler)(1890-1945)" CASE 6 LPRINT " A/N soft-capped Steel 'AP Shell'/Common(4-6% black-pdr/Ex.D filler)(1898-1945)" CASE 7 LPRINT " Base-fuzed 7/12/14-in 'Bombardment' (Light-case) (9-11% Ex.D filler) (1914-42)" CASE 8 LPRINT " Ave. Navy 1911-23 APC except Navy Midvale 8-in Mk 11 (1911) & 'Midvale 1916'" CASE 9 LPRINT " Navy Midvale 8-in Mk 11 (1911) & all Navy 'Midvale Unbreakable 1916' APC" CASE 10 LPRINT " Ave. 1921-1935 A.C.D. APC Shot (2-3% Ex. D filler) ('Midvale Army 1921')" CASE 11 LPRINT " Ave. post-1935 A.C.D. APC Shot (1.4-2% Ex. D filler) (Ave. Navy AP c.1940)" CASE 12 LPRINT " Ave. post-WWI base-fuzed Common (4-5% Ex D filler & windscreen, but no hood)" CASE 13 LPRINT " Ave. post-WWI hooded base-fuzed Special Common (3-5% Ex. D filler) (1930-45)" CASE 14 LPRINT " 6-in Mk 27-1-6 hooded base-fuzed Special Common (2.1-2.4% Ex. D filler) (1933)" CASE 15 LPRINT " 8-in Mk 15-1 hard-capped base-fuzed Special Common (4.4% Ex. D filler) (1930)" CASE 16 LPRINT " 3-in Mk 29-1/30-1 (to 1944), 8-in Mk 19-1-3 (to 1941) & A.C.D. Mk 20-1 APC" CASE 17 LPRINT " 8-in Mk 19-4-6 APC" CASE 18 LPRINT " 6-in Mk 35-1-8 & 16-in Mk 8-1-5 (to 1944) APC" CASE 19 LPRINT " 8-in Mk 21-1-4, 14-in Mk 16-1-6 (to 1943) & A.C.D. Mk 20-1, and" LPRINT " 16-in Mk 5-1-4 (to 1944) & Mk 5-6 (ex-A.C.D. Mk 12-1 w/Mk 21 BDF) APC" CASE 20 LPRINT " 3-in Mk 29-2/30-2, 6-in Mk 35-9-11, 8-in Mk 21-5, 12-in Mk 18-1," LPRINT " 14-in Mk 16-7-11, and 16-in Mk 5-5 & Mk 8-6-8 APC" END SELECT ' ** END OF SUB LPUS ** END SUB SUB NOSEBROKE STATIC ''NSBRK = 1' SET LOGIC IF (NSBRK = 0) THEN 'IF SHATR 'NSBRK' = 2 ALREADY SET, IGNORE THIS LOGIC IF (BRAIK > 0) THEN NSBRK = 1: ' WEAK-BODIED PROJ HAVE WEAK NOSES, TOO ELSEIF ((HARD = -1) AND (SHATRES = 1) AND (CMPND = 0)) THEN NSBRK = 4: ' HOODED COMMON PROJ NOSE BREAKAGE ELSEIF ((ABS(HARD) = 1) AND (SOFTSHAT = 1)) THEN NSBRK = 5: ' ALL HOODED OR SOFT-CAPPED FULL AP PROJ NOSE BREAKAGE VS MAX-EXTRA-TOUGH PLATE ELSEIF ((ABS(HARD) = 1) AND (SOFTSHAT = 2) AND (CARDONALD < 2)) THEN NSBRK = 5: ' AVE HOODED OR SOFT-CAPPED FULL AP PROJ NOSE BREAKAGE VS BRIT 1912-30 EXTRA-TOUGH PLATE ELSEIF ((PENFLG = 0) AND (OB >= NDAP)) THEN NSBRK = 3: ' NO HOLE 'NDAP' CHECK ELSEIF ((PENFLG = 1) AND ((OB - EX) > NDAP)) THEN NSBRK = 3: ' HOLING 'NDAP' CHECK ELSEIF ((PENFLG = 0) AND (VLMT > VLND) AND (CARDONALD = 0)) THEN NSBRK = 6: ' IF HARD-CAPPED PROJ NEEDS HIGHER VEL TO MAKE HOLE, NOSE BREAKAGE IS PROBABLE CAUSE ELSEIF (OB > 45!) THEN NSBRK = 7 END IF END IF ' ** END OF SUB NOSEBROKE ** END SUB SUB NOSEDAM '* NOSE DAMAGE CRITICAL OB MODIFICATION AND RESULTS CALC * ' NDAP = NSDAMAGL: ''NSDAMAGL' VALUES ARE FOR AVERAGE WWI ARMOR, SO MODIFY THEM FOR OTHER KINDS OF ARMOR IF (CMPND = 1) THEN NDAP = NDAP + 10: 'COMPOUND ARMOR IS WEAK IF (THNCHL = 1) THEN NDAP = NDAP + 5: 'THIN CHILL ARMOR IS ALSO WEAK, BUT NOT AS BAD IF (SOFTSHAT = 1) THEN NDAP = NDAP - 10: ''SOFTSHAT' ARMOR IS MUCH BETTER THAN AVERAGE WWI ARMOR IF (SOFTSHAT = 2) THEN NDAP = NDAP - 5: 'BRITISH WWI-ERA CA SHATTERS SOFT-CAPPED AP EXCEPT MIDVALE UNBREAKABLE IF ((NDAP < 5) AND (NSDAMAGL > 0)) THEN NDAP = 5: 'USE A 5-DEGREE MIN ANGLE > 0 IF (NDAP < 0) THEN NDAP = 0: 'MIN ANGLE = 0 ' ** END OF SUB NOSEDAM ** END SUB SUB NSBDYDAMPRNT STATIC ' PRINT RESULTS OF PROJECTILE NOSE AND BODY DAMAGE COMPUTATIONS SELECT CASE BDYDM CASE 0 IF (PENFLG = 2) THEN IF (NSBRK > 0) THEN BDYDM1$ = "Projectile nose damaged by impact, but lower body undamaged." BDYDM2$ = " Projectile still 'effective' unless nose damage reaches explosive cavity." ELSE BDYDM1$ = "Neither projectile nose nor lower body damaged by impact." BDYDM2$ = " Projectile still 'effective' and intact other than losing nose coverings." END IF ELSE IF (NSBRK > 0) THEN BDYDM1$ = "Projectile nose damaged so 50% chance that only minor lower body damage occurs." ELSE BDYDM1$ = "Projectile nose intact so only minor lower body damage occurs most of the time." END IF BDYDM2$ = " Projectile usually will still be 'effective' if lower body damage is minor." END IF CASE 1 IF (NSBRK = 0) THEN BDYDM1$ = "Projectile lower body damaged by impact." ELSE BDYDM1$ = "Projectile nose and lower body damaged by impact." END IF IF (((SHATRES > 0) AND (CMPND = 0)) OR ((SHATRES = 2) AND (CMPND = 1))) THEN BDYDM2$ = " Projectile is not 'effective' and lower body is always broken up by impact." ELSE BDYDM2$ = " Projectile is not 'effective' and lower body is usually deformed or broken." END IF CASE 2 BDYDM1$ = "Projectile nose " + ND$ + " and lower body damaged by impact." BDYDM2$ = BD1$ + "rojectile loses" + BD2$ + "33% of body weight & is much weaker." BDYDM3$ = " Projectile is not 'effective' and lower body is always broken up by impact." END SELECT PRINT BDYDM1$: PRINT BDYDM2$ IF (BDYDM = 2) THEN 'NOSE ALREADY DESTROYED BY IMPACT PRINT BDYDM3$ ELSE 'CHECK FOR NOSE DAMAGE ('BDYDM3$' = "") IF (NSBRK = 0) THEN NSBRK1$ = "Projectile nose suffers no major damage but all nose coverings stripped off." ELSE NSBRK1$ = "Projectile nose " + ND$ + " by impact." NSBRK2$ = BD1$ + "rojectile loses" + BD2$ + "33% of body weight & is much weaker." IF (LTCASE > 0) THEN NSBRK3$ = " Projectile's large explosive cavity is rendered 'ineffective' by nose damage." ELSE NSBRK3$ = " Projectile's small explosive cavity usually not affected by just nose damage." END IF END IF IF ((LTCASE < 2) OR (NSBRK3$ = "")) THEN PRINT NSBRK1$: IF (NSBRK2$ <> "") THEN PRINT NSBRK2$: PRINT NSBRK3$ END IF END IF ' ** END SUB NSBDYDAMPRNT ** END SUB SUB NUMVALHDR STATIC ' PRINT "NUMERICAL VALUES:" PRINT " 'UB' = Percent Unhardened Back Layer (Scaling Factor step function logic)" PRINT " 'Q' = Relative Armor Resistance Quality (compared to best WWII armors)" PRINT " 'QDAM' = Relative Armor Projectile Damaging Ability (ditto)" PRINT "**Minimum value for 'Q' & 'QDAM' = 0.1. Also, 'QDAM' can never exceed 'Q'.**" PRINT "FLAGS:" PRINT " 'CARTWL' = If '1', brittle armor ejects huge plugs; if '2', at high OB only" PRINT " 'CMPND' = Compound Armor (never shatters steel projectiles)" PRINT " 'THNCHL' = Back layer over 75% of plate (reduced damage-causing ability)" PRINT " 'SOFTSHAT' = Shatter soft-capped proj (='1'); except Midvale Unbreakable (='2')" PRINT " 'THKTHN' = Ductility lowers THIN boundary from .55 cal(0) to .45(2) or .35(1)" PRINT "NOTE: SEE PROGRAM LISTING OR DESCRIPTION DOCUMENT FOR DETAILS." ' ** END OF SUB NUMVALHDR ** END SUB SUB OBHDSAPCAP STATIC '* PRINT DISCUSSION ABOUT OBLIQUITY, HOODS, & SOFT AP CAPS PRINT PRINT " OBLIQUITY IS MEASURED SO THAT ZERO DEGREES IS AT RIGHT-ANGLES TO PLATE FACE." PRINT " MAXIMUM OBLIQUITY FOR PLATE DAMAGE IS 75 DEG. (THICK) & 80 DEG. (OTHERWISE)." PRINT " MAXIMUM OBLIQUITY FOR COMPLETE PENETRATION WITHOUT SHATTER IS 70 DEG." IF (ABS(HARD) = 1) THEN 'SOFT AP CAP OR HOOD EXISTS IF (HARD = -1) THEN PRINT "HOODS USUALLY ACT AS SOFT AP CAPS ABOVE THE PLATE'S NAVY BALLISTIC LIMIT ONLY." PRINT "BELOW THE NBL, HOODED NOSES USUALLY BREAK UP; INTO EXPLOSIVE CAVITY IF OVER 3.5%." END IF PRINT "SOFT AP CAPS ALWAYS & HOODS USUALLY WORK IF OB<=15 DEG, BUT NEVER IF OB>20 DEG." IF (SOFTSHAT = 1) THEN PRINT "IF USING EXTRA-TOUGH ARMOR, NOSE-ONLY SHATTER OCCURS IF SOFT CAP OR HOOD WORKS.": 'SOFTSHAT PLATE RULE DEFINED END IF END IF '** END OF SUB 'OBHDSAPCAP' ** END SUB SUB OBINPUT STATIC ' ' INPUT IMPACT OBLIQUITY VALUE ' PRINT "CURRENT IMPACT OBLIQUITY ="; OB; "degree"; IF (OB > 1!) THEN PRINT "s": ELSE PRINT OBLIQUE: INPUT "Impact Obliquity (OB), degrees: ", OB$ IF (OB$ = "") THEN PRINT "Using"; OB ELSE OBTEST = VAL(OB$) END IF IF ((OBTEST < 0) OR (OBTEST > MAXOB)) THEN GOTO OBLIQUE: 'BAD INPUT OB = OBTEST OBRAD = OB / 57.29578: 'OB IN RADIANS FOR BASIC TRIG FUNCTIONS ' ' ** END OF SUB OBINPUT ** END SUB SUB OBMULT STATIC ' 'OBLIQUITY MULTIPLIER TABLES FOR UNSHATRD PROJ & THIN-PLATE SHATRD PROJ ' '* UNSHATRD PROJ 'MO' INTERPOLATION TABLE * M(0) = 1!: M(1) = 1.045: M(2) = 1.09: M(3) = 1.135: M(4) = 1.18 M(5) = 1.235: M(6) = 1.31: M(7) = 1.4: M(8) = 1.53: M(9) = 1.695: M(10) = 1.9 M(11) = 2.3: M(12) = 3.2: M(13) = 4.9: M(14) = 8!: M(15) = 15! ' NOTE: MS(14) IS FOR 70 DEG (MAX OB ALLOWED IF NO SHATR) ' 'SHATRD PROJ 'MSHAT' INTERPOLATION TABLE FOR 'THIN' PLATES (RELATIVE TO NORMAL OB VALUE) 'THICK PLATES USE FORMULA UP TO 75 DEG IN SUB "SETOBMULT" IF SHATR OCCURS OR FOR HIGH-OB HBL MS(0) = 1!: MS(1) = 1.002: MS(2) = 1.0078: MS(3) = 1.0176: MS(4) = 1.0314 MS(5) = 1.0495: MS(6) = 1.0722: MS(7) = 1.0994: MS(8) = 1.1317: MS(9) = 1.1672 MS(10) = 1.2018: MS(11) = 1.2377: MS(12) = 1.2782: MS(13) = 1.3236 MS(14) = 1.3715: MS(15) = 1.429: MS(16) = 1.51: MS(17) = 1.6036 ' NOTES: MS(16) IS FOR 80 DEG (MAX OB ALLOWED FOR THIN PLATE SHATR) ' ' ** END OF SUB OBMULT ** END SUB SUB PENPRINT (PNTP) STATIC SELECT CASE PNTP CASE 0 PEN1$ = "NO HOLING OF PLATE: Only impact shock & plate distortion damage behind plate" PEN2$ = " due to ductile plate &/or a plate backing layer (Projectile may be damaged)" CASE 1 PEN1$ = "NO HOLING OF PLATE: Impact shock & plate distortion & thrown splinters cause" PEN2$ = " damage behind this brittle plate w/o any backing (Projectile may be damaged)" CASE 2 PEN1$ = "PLATE HOLED AND NORMAL PLUG PUNCHED OUT, BUT INTACT PROJECTILE REJECTED" PEN2$ = " (No significant projectile damage suffered due to impact)" CASE 3 PEN1$ = "PLATE HOLED AND NORMAL PLUG PUNCHED OUT, BUT DAMAGED PROJECTILE REJECTED" PEN2$ = " (If nose breaks up at OB<45 deg, part of nose (<= 33% body weight) penetrates)" CASE 4 PEN1$ = "PARTIAL PENETRATION: Broken-up lower body (= 50% body weight) penetrates, but" PEN2$ = " projectile nose ricochets (Major damage behind plate if filler explodes/burns)" CASE 5 PEN1$ = "PARTIAL PENETRATION: Broken-up nose & upper body (= 50% body weight) penetrate," PEN2$ = " but projectile lower body rejected (Filler rarely has any effect behind plate)" CASE 6 PEN1$ = "COMPLETE PENETRATION ACHIEVED: If Exit Angle > 0, Delta Plug pieces ejected" PEN2$ = " (If projectile is broken up, at least 80% of body weight exits plate back)" END SELECT PRINT PEN1$ PRINT PEN2$ ' ** END OF SUB PENPRINT ** END SUB SUB PENVRVPLGCALC STATIC 'DETERMINE 'PENTYP' & CALC REMAINING PLUG & PROJ VELOCITIES 'FOR PROJ LOWER/MIDDLE BODY PIECES AT HIGH OB BELOW NBL OR FOR ALL SHTRD BASE PIECES, ' TOTAL PROJ WT ALWAYS USED IN NORMAL PLUG HOLE PUNCHING LOGIC. '* VS >= NBL -- COMPLETE PEN * ''HF' = 1 MEANS NO UNSHTRD COMPLETE PEN (OB > 70 DEG) IF ((HF = 1) OR (VS < VLMT)) THEN '* VS < NBL -- HOLING ONLY * IF (OB < 45!) THEN IF ((SHAT = 0) OR ((SHAT = 1) AND (HARD = 2) AND (VS < VHSHAT) AND (VHOL < VHSHAT))) THEN 'UNSHATRD PROJ OR JAP UNCAPPED TYPE 91 AP W/CAP HEAD IN PLACE BELOW 'VHSHAT' (ACTS LIKE UNSHATRD PROJ) IF (BRK = 0) THEN 'PROJ REMAINS IN ONE PIECE OR HAS ONLY NOSE DAMAGE GOTO LTLPROJPEN ELSE '* PROJ ASSUMED HERE TO BE BROKEN IN MIDDLE INTO AT LEAST 2 PIECES ON TOP OF ANY NOSE DAMAGE * PENTP = 5: VR = -1: VDPLUG = VRSHATNS: ''VRSHATNS' USED FOR ALL PARTIAL PEN GOTO ROUNDPLUG: 'EXIT END IF ELSE 'SHATRD PROJ IF (BRK = 0) THEN GOTO LTLPROJPEN: 'NOSE-ONLY SHATR ELSE '* PROJ ASSUMED HERE TO BE BROKEN IN MIDDLE INTO AT LEAST 2 PIECES ON TOP OF ANY NOSE DAMAGE * PENTP = 5: VR = -1: VDPLUG = VRSHATNS: ''VRSHATNS' USED FOR ALL PARTIAL PEN GOTO ROUNDPLUG: 'EXIT END IF END IF ELSE ''OB'>=45 DEG '* BASE/SIDE-FIRST HOLING W/NO DAMAGE, SHTR, OR LOWER/MIDDLE BODY DAMAGE * 'IF PROJ MIDDLE BODY BREAKS AT HIGH OB THEN ONLY LOWER BODY PIECES PEN, ' BUT INCLUDES MOST OR ALL OF EXPLOSIVE FILLER. IF (BRK > 0) THEN '* PROJ ASSUMED HERE TO BE BROKEN IN MIDDLE INTO AT LEAST 2 PIECES ON TOP OF ANY NOSE DAMAGE * PENTP = 4: VDPLUG = VRSHATNS: VR = -1 GOTO ROUNDPLUG: 'EXIT ELSE '* ONLY NOSE DAMAGE OCCURS SO NOTHING PENETRATES PLATE * GOTO LTLPROJPEN END IF END IF '* LTLPROJPEN: 'NONE OR FEW PROJ PIECES GO THRU PLATE '* VR = -1: TOTPLUGWT = NORMPLUGWT: DELTAPLUGWT = 0 IF (NSBRK > 0) THEN PENTP = 3: 'ONLY NOSE (33% OF PROJ BODY WEIGHT OR LESS) PENETRATES AT 'OB'<45 DEG IF (OB >= 45!) THEN VDPLUG = -1: 'NOTHING PENETRATES PLATE ELSE VDPLUG = 0: 'NOSE PIECES PENETRATE PLATE WITH VERY LOW REMAINING VEL END IF ELSE PENTP = 2: 'INTACT PROJ REJECTED/RICOCHETS VDPLUG = -1: 'NOTHING PENETRATES PLATE END IF GOTO ROUNDPLUG: 'EXIT '* ELSE '* '* COMPLETE PEN W/DELTA PLUG * 'DELTA PLUG, IF ANY, RIDES ON PROJ NOSE AT SAME VEL IN SAME DIRECTION. 'PROJ BASE VEL = 'VR' (SHTRD OR NOT) & SHTRD NOSE PIECES VEL IS 'VDPLUG' ''VDPLUG' = 'VR' ONLY IF NO SHATR PENTP = 6 IF (SHAT = 1) THEN '* SHATRD PROJ * 'BASE (OR NOSE PIECES AT OB >= 45 DEG): 'ONLY PEN IF 'VS' >= 'VLSHAT' & SUFFER EXTRA ENERGY LOSS 'THEY DO NOT AFFECT DELTA PLUG VR = VRPR 'NOSE PIECES (OR BASE PORTION ONLY AT OB >= 45 DEG THOUGH DELTAPLUGWT = 0 HERE): VDPLUG = VRSHATNS: IF (VDPLUG < VR) THEN VDPLUG = VR '* ELSE '* '* UNSHATRD PROJ * 'PROJ REMAINING VEL = DELTA PLUG VEL (ONE VEL FOR ALL PROJ PIECES) IF ((OB < 45!) OR ((OB >= 45!) AND (BDYDM = 0))) THEN VR = VRPR: VDPLUG = VR ELSE 'NOSE PIECES AT OB >= 45 DEG W/BODY BREAKAGE: VR = VRPR 'BASE PIECES AT OB >= 45 DEG W/BODY BREAKAGE: VDPLUG = VRSHATNS: IF (VDPLUG < VR) THEN VDPLUG = VR END IF END IF END IF '* ROUNDPLUG: '* VNPLUG = INT(VNPLUG): VDPLUG = INT(VDPLUG): VR = INT(VR): 'USE WHOLE NUMBERS IN COMPARES ' ** END OF SUB PENVRVPLGCALC ** END SUB SUB PLUGCALC STATIC 'CALCULATE WEIGHTS OF EJECTED ARMOR PLUGS 'IRON WEIGHS ABOUT 0.283 LB/CUBIC INCH. FH PLATES ALWAYS FAIL BY PUNCHING A CYLINDRICAL, CONICAL, &/OR ELLIPTICAL PLUG OF ARMOR OUT OF PLATE'S BACK. ' 'PLUGMULT' ENLARGES HOLE IF GREATER THAN 1. SHATR MULTIPLIER OVERRIDES CARTWHEEL MULTIPLIER, IF BOTH APPLY IF (SHAT = 1) THEN PLUGMULT = 1.5: 'SHATTERED VALUE WITH IRREGULAR-SHAPED, ENLARGED HOLE ELSEIF (CART = 1) THEN PLUGMULT = 2: 'EXTREMELY BRITTLE PLATE GIVES WORST CASE CARTWHEEL VALUE FOR ALL IMPACTS (PROJ SHATR OVERRIDES THIS) ELSEIF (CART = 2) THEN PLUGMULT = 1 / COS(OBRAD): IF (PLUGMULT > 2) THEN PLUGMULT = 2: 'BRITTLE PLATE HAS PROBLEMS AT HIGH OBLIQUITY, BUT NOT MANY AT LOW OBLIQUITY ELSE PLUGMULT = 1: 'USE REGULAR PLUG SIZE (NO CHANGES) END IF 'DEFAULT NORMAL PLUG IS ONE-CALIBER-DIAMETER CYLINDER FOR FIRST 67% OF PLATE THICKNESS THEN EXPANDS AS A 90-DEG CONE TO PLATE BACK RNDPLUGWT = .011 * TA * (TA ^ 2 + 4.5 * D * TA + 20.25 * D ^ 2) * PLUGMULT 'NORMAL PLUG IS CYLINDER/CONE PART OF PLUG PUNCHED OUT AT RIGHT ANGLES TO FACE. HOWEVER, WHEN OB > 45 DEG IT BEGINS TO ELONGATE NORMPLUGWT = RNDPLUGWT: IF (OB >= 45!) THEN NORMPLUGWT = NORMPLUGWT / COS(2 * (OBRAD - .7853981)) 'DELTA PLUG IS ADDITIONAL PLATE MATERIAL SCOOPED WHEN PROJ NOSE COMPLETELY PENETRATES & 'EX' > 0 DEG, ELONGATING THE HOLE. DOES NOT EXIST OTHERWISE. DELTAPLUGWT = RNDPLUGWT * ((1 / COS(EXRAD)) - 1) IF ((VS < VLMT) AND (((SHAT = 1) AND (OB >= 45!)) OR (SHAT = 0))) THEN DELTAPLUGWT = 0: 'ONLY COMPLETE NOSE PEN CREATES A DELTA PLUG IF ((TPCAL < THIN) AND (VS >= VLSHAT) AND (VLTRU > VLSHAT)) THEN 'BASE SLAP GREATLY ELONGATES HOLE IN THIN PLATE IF VEL >= 'VLSHAT', WHEN 'VLSHAT' < 'VLTRU' (= HIGH OB) NPWTPR = NORMPLUGWT / COS(OBRAD) IF ((TPCAL < THIN) AND (TPCAL > TRUTHIN)) THEN NPWTPR = (NPWTPR + NORMPLUGWT) / 2: 'SPLIT THE DIFFERENCE IN WEIGHT OF PLUG THROWN END IF 'AVERAGE PROJ BODY LENGTH IS ABOUT 2 CALIBERS (IGNORING TAPERED NOSE PORTION) & THIS GIVES MIN INCREASE IN HOLE LENGTH USED BELOW IF (NPWTPR < (2 * NORMPLUGWT)) THEN NORMPLUGWT = 2 * NORMPLUGWT ELSE NORMPLUGWT = NPWTPR END IF END IF TOTPLUGWT = NORMPLUGWT + DELTAPLUGWT: 'TOTAL PLUG IS ALL MATERIAL THROWN FROM PLATE BY IMPACT ' ** END SUB PLUGCALC ** END SUB SUB PROJMOTIONPRNT STATIC ' PRINT EFFECTS OF IMPACT ON POST-IMPACT PROJECTILE MOTION WBLG$ = "wobbling or tumbling " DFL$ = "change in direction." DMG$ = "damage." IF (OBDF > 45!) THEN WBL1$ = WBLG$: WBL2$ = "due to extreme ": WBL3$ = DFL$ ELSEIF ((OBDF > 30!) AND (NSBRK = 0) AND (BDYDM = 0)) THEN WBL1$ = "has est. 67% chance of wobbling due to ": WBL2$ = DFL$ ELSEIF ((OBDF > 15!) AND (NSBRK = 0) AND (BDYDM = 0)) THEN WBL1$ = "has est. 33% chance of wobbling due to ": WBL2$ = DFL$ ELSEIF ((OBDF > 30!) AND ((NSBRK > 0) OR (BDYDM > 0))) THEN WBL1$ = WBLG$: WBL2$ = "due to ": WBL3$ = DMG$ ELSEIF ((OBDF > 15!) AND ((NSBRK > 0) OR (BDYDM > 0))) THEN WBL1$ = "has est. 67% chance of ": WBL2$ = WBLG$: WBL3$ = "due to ": WBL4$ = DMG$ ELSEIF ((NSBRK > 0) OR (BDYDM > 0)) THEN WBL1$ = "has est. 33% chance of ": WBL2$ = WBLG$: WBL3$ = "due to ": WBL4$ = DMG$ ELSE WBL1$ = "is almost always moving nose-first with little or no wobble." END IF PRINT "Projectile "; WBL1$; WBL2$; WBL3$; WBL4$ ' ** END SUB PROJMOTIONPRNT ** END SUB SUB PROJNATION STATIC PRINT "Select projectile from the following table:": PRINT PRINT "NOTE: Many older guns kept old ammunition after the dates given below. The" PRINT "dates are for projectiles introduced during that time period for any guns.": PRINT PRINT "Projectile types marked by '(*)' are rough estimates based on little data." PRINT "When and if more information is discovered, these values may change." PRINT PRINT SPC(26); "1. UNITED STATES": PRINT SPC(26); "2. GREAT BRITAIN": PRINT SPC(26); "3. GERMANY": PRINT SPC(26); "4. FRANCE" PRINT SPC(26); "5. ITALY": PRINT SPC(26); "6. JAPAN": PRINT SPC(26); "7. AUSTRO-HUNGARY": PRINT PRINT "If the projectile you desire is not made by one of the above nations or": PRINT "it is not made to one of their designs, use FRANCE or ITALY as your selection": PRINT "because both are mostly defaults." IF (NATION > 0) THEN PRINT "CURRENT NATION SELECTION ="; NATION PRINT ' **END SUB PROJNATION ** END SUB SUB PROJQMODS STATIC 'CALCULATE ALL PROJECTILE PENETRATION QUALITY FACTOR MODIFIERS LCDAM = 0: TCAL = TD / D IF ((LTCASE = 2) AND (TCAL > .67)) THEN LCDAM = .5: 'LIGHTCASE BASE-FUZED PROJ LOSE PEN AT NORMAL WHEN EFFECTIVE DAMAGE-CAUSING PLATE THICKNESS > 0.67 CALIBER (BRITISH CPC STANDARD). AFFECTS ALL LIMITS. OPRIMEL = OB: OPRIMED = OB: 'SEPARATE THESE FOR ANY MODIFICATION LOGIC IF (OB > 60!) THEN OPRIMEL = 60!: OPRIMED = 60!: 'LITTLE DATA AT OB > 60 DEG EXIST FOR PROJ USING THIS FORMULA, SO RESTRICT EFFECTS TO OB = 45 DEG AS WORST CASE 'BENDING/COMPRESSION/BREAKAGE DAMAGE EFFECTS ON HBL & NBL, IF USED FOR THIS PROJ LCMOD = LCDAM * (TCAL - .67): 'LIGHTCASE PROJ ONLY EFFECTS AT NORMAL OB POLMOD = 1 + CLD * OPRIMEL - ALD * TCAL * (OPRIMEL ^ BLD) - LCMOD IF (POLMOD > 1!) THEN POLMOD = 1! IF (POLMOD < .1) THEN POLMOD = .1: 'MIN MOD ALLOWED TO PREVENT PROGRAM CRASH ''AED' = -1 MEANS 'POIMOD' FORMULA NOT USED BY THIS PROJ TYPE IF (AED < 0) THEN POIMOD = POLMOD: 'NO-OP 'POIMOD' IF NOT USED FOR THIS PROJ TYPE ELSE 'BENDING/COMPRESSION/BREAKAGE DAMAGE EFFECTS ON EFFECTIVE LIMIT, IF USED FOR THIS PROJ TYPE POIMOD = 1 + CED * OPRIMED - AED * TCAL * (OPRIMED ^ BED) - LCMOD IF (POIMOD > 1!) THEN POIMOD = 1! ELSE IF (POIMOD < .095) THEN POIMOD = .095: 'MIN MOD ALLOWED TO PREVENT PROGAM CRASH END IF END IF ' ** END OF SUB PROJQMODS ** END SUB SUB SCALEFACTOR (BACK) 'SCALING FACTOR CONSTANTS BASED ON UNAFFECTED BACK PERCENTAGE OF ACTUAL PLATE THICKNESS (STEP-FUNCTION APPROX='BACK'='UB') 'THINNER BACK = LARGER SCALING EFFECTS FROM FACE & TRANSITION LAYER SHEARING & BRITTLE FRACTURE FAILURE 'CONSTANTS 'AZ' & 'BZ' FOR COMBINED FACE & TRANSITION LAYERS & 'CZ' FOR SOFT BACK LAYER ''D' IS PROJ DIAMETER ' IF (BACK > 90) THEN AZ = 0: BZ = 1: CZ = 79: 'EXTRAPOLATED VERY-THIN-FACED PLATE (NO REAL PLATE TYPE) ELSEIF (BACK > 75) THEN AZ = 6.65E-07: BZ = 5.35: CZ = 78.5: 'HARVEY & U.S. POST-WWI BETHLEHEM THIN CHILL CLASS 'A' ELSEIF (BACK > 67.5) THEN AZ = .00037: BZ = 3.23: CZ = 77.8: 'BRITISH WWII CA ELSEIF (BACK > 62) THEN AZ = .003: BZ = 2.75: CZ = 77.7: 'STANDARD (GERMAN WWI KC a/A = DEFAULT) ELSEIF (BACK > 52) THEN AZ = .03: BZ = 2.1: CZ = 77: 'GERMAN WWII KC n/A ELSEIF (BACK > 30) THEN AZ = 1!: BZ = 1.25: CZ = 67: 'U.S. WWII THICK CHILL CLASS 'A' ELSE AZ = 10.57: BZ = .80625: CZ = 17.26: 'U.S. PRE-WWI MIDVALE NON-CEMENTED CLASS 'A' END IF ' 'COMPUTE SCALING FACTOR TERM 'SC=(AZ)(D^BZ)+CZ' SC = AZ * (D ^ BZ) + CZ ' '** END OF SUB SCALEFACTOR ** END SUB SUB SCPGPRNT STATIC 'PRINT SECOND EBL/NBL/HBL INFORMATION, IF USER DESIRES CLS : PRINT SPC(12); CALC$ PRINT RESNOTE$ PRINT NBL1$; VELLTRU$; " "; N1$ PRINT NBL2$; VELLSHAT$; " "; N2$: PRINT NBL3$ PRINT NBL4$; VELLSHATMAX$; " "; N3$: PRINT NBL5$ PRINT NBL6$; VELLND$; " "; N4$: PRINT NBL7$ PRINT HBL1$; VELHTRU$; " "; H1$: PRINT HBL2$: PRINT HBL3$ PRINT HBL4$; VELHSHAT$; " "; H2$: PRINT HBL5$ PRINT HBL6$; VELHSHATMAX$; " "; H3$: PRINT HBL7$ PRINT HBL8$; VELHND$; " "; H4$: PRINT HBL9$ '* 'PRINT EFFECTIVE B.L. PRINT EBL$; IF (EFFVEL$ <> "") THEN PRINT EFFVEL$; IF ((VHOL <= 4000) AND (PAND$ <> "")) THEN PRINT PAND$: PRINT SPC(29); END IF IF (HBLTONBL$ <> "") THEN PRINT HBLTONBL$ ELSE PRINT EFFPRINT1$; EFFPRINT2$; IF (NVRFLAG = 1) THEN PRINT OBCRIT: ELSE PRINT END IF '* 'PRINT SPECIAL NOTES ON EFFECTIVE B.L. IF (NOTE1$ <> "") THEN PRINT NOTE1$: PRINT NOTE2$ IF (NOTE3$ <> "") THEN PRINT NOTE3$ IF (NOTE4$ <> "") THEN PRINT NOTE4$ IF ((NOTE5$ <> "") AND ((BEND = 1) OR ((BEND = 0) AND (MINEV >= VHOL)))) THEN PRINT NOTE5$ ' ** END OF SUB SCPGPRNT ** END SUB SUB SETMINEV STATIC ' SORT OUT TRUE MIN EFF VEL IF ((MINEV1 >= 0) AND (MINEV < MINEV1)) THEN MINEV = MINEV1 IF (MINEV < MINEV2) THEN MINEV = MINEV2 IF ((MINEV3 > 0) AND (MINEV < MINEV3)) THEN MINEV = MINEV3 IF (MINEV < MINEV4) THEN MINEV = MINEV4 IF (MINEV < MINEV5) THEN MINEV = MINEV5 ' ** END OF SUB SETMINEV END SUB SUB SETOBMULT STATIC '* PROJ OB MULTIPLIER FOR BOTH SHATRD & UNSHATRD PROJ FROM TABLE INTERPOLATION OR CALCULATION FORMULAE ''INT1' IS M/MS-TABLE INDEX & 'INT2' IS FRACTION OF 5-DEG STEP THAT OB IS ABOVE 'M/MS(INT1)' INT1 = INT(OB / 5): INT2 = (OB - 5 * INT1) / 5 'FIRST, DO UNSHATRD PROJ MULTIPLIER IF (OB < 70!) THEN ''MO' IS FOR ALL UNSHATRD PROJ, EXCEPT HBL WHEN 'VHSHAT' < 'VHTRU' '3-POINT FORWARD-LOOKING INTERPOLATION FORMULA POINT5 = .5: IF (INT1 > 11) THEN POINT5 = 0: 'LINEAR INTERPOLATION IF OB > 60 DEG (POOR DATA) MO = M(INT1) + INT2 * (M(INT1 + 1) - M(INT1)) + POINT5 * INT2 * (INT2 - 1) * (M(INT1 + 2) - 2 * M(INT1 + 1) + M(INT1)) ELSEIF (OB = 70!) THEN 'OB = 70 DEG IS MAX FOR UNSHATRD COMPLETE PEN MO = 8!: 'MAX USABLE 'MO' ELSE MO = 100!: 'ENSURE NO PEN OCCURS AT OB > 70 DEG IF NO SHATR (70.01-80 DEG) END IF ''MSHAT' IS FOR SHATRD PROJ (TWO VALUES DEPENDING ON 'THIN' PLATE THICKNESS THRESHOLD) ' 'THICK PLATE, USE FORMULAE FOR MSHAT MSHATTHKMAX = 5.5264: 'MAX THICK-PLATE SHATRD OB = 75 DEG 'COMPUTE MSHATTHK UP TO 80 DEG FOR THIN PLATE CALC MSHATTHK = 1 / COS(1.061 * OBRAD): 'THICK-PLATE 'MSHAT' USES SLIGHTLY MODIFIED SECANT CURVE FORMULA ' 'THIN PLATE, USE SPECIAL SHATR OB MULT TABLE (PLATE SHATRS, TOO!) MSHATTHINMAX = 1.51: 'MAX THIN-PLATE SHATRD OB = 80 DEG (VALUE FOR INT1 = 17 IS FOR 85 DEG (DUMMY)) IF (OB >= 80!) THEN MSHATTHIN = MSHATTHINMAX ELSE '3-POINT FORWARD-LOOKING INTERPOLATION FORMULA MSHATTHIN = MS(INT1) + INT2 * (MS(INT1 + 1) - MS(INT1)) + .5 * INT2 * (INT2 - 1) * (MS(INT1 + 2) - 2 * MS(INT1 + 1) + MS(INT1)) END IF ' IF (TPCAL < THIN) THEN 'ALLOW PEN UP TO 80 DEG IF NOT FULLY THICK PLATE IF ((TPCAL < THIN) AND (TPCAL > TRUTHIN)) THEN 'STEP DOWN TO THE THIN VALUE IN TWO INTERMEDIATE STEPS FOR ALL 'OB' UP TO 80 DEG. IF (TPCAL > (TRUTHIN + .05)) THEN MSHAT = MSHATTHIN + .625 * ABS(MSHATTHK - MSHATTHIN): 'UPPER MIDDLE STEP ELSE MSHAT = MSHATTHIN + .3 * ABS(MSHATTHK - MSHATTHIN): 'LOWER MIDDLE STEP END IF ELSE MSHAT = MSHATTHIN: 'MIN MSHAT BELOW 'TRUTHIN' END IF ELSE 'THICK PLATE VS SHATRD PROJ MAXIMUM IS AT 75 DEG IF (OB > 75!) THEN MSHAT = 100!: 'KILL PEN IF >75 DEG FOR THICK PLATE ELSEIF (OB = 75!) THEN MSHAT = MSHATTHKMAX ELSE MSHAT = MSHATTHK END IF END IF ' ** END OF SUB SETOBMULT ** END SUB SUB SETVALUE STATIC ' 'ALLOW USER TO CHANGE ARMOR PARAMETERS ' FIXVALUE: BADIN = 0 INPUT "NEW VALUE = ", NWVL$ IF (NWVL$ <> "") THEN NEWVALUE = VAL(NWVL$) SELECT CASE FLAG CASE 0: ''UB' VALUE PRINT "UB is rounded DOWN to nearest whole integer. Minimum UB is 1." IF (NWVL$ = "") THEN PRINT "Using "; OLDVALUE: NEWVALUE = OLDVALUE ELSE IF ((NEWVALUE > 100) OR (NEWVALUE < 1)) THEN BADIN = 1: 'BAD INPUT END IF NEWVALUE = INT(NEWVALUE): 'ROUND DOWN (TRUNCATE) TO INTEGER VALUE CASE 1: ''CMPND' OR 'THNCHL' FLAGS (= '0' OR '1' ONLY) IF (NWVL$ = "") THEN PRINT "Using "; OLDVALUE: NEWVALUE = OLDVALUE ELSE IF ((NEWVALUE <> 0) AND (NEWVALUE <> 1)) THEN BADIN = 1: 'BAD INPUT END IF CASE 2: ''Q' VALUE IF (NWVL$ = "") THEN PRINT "Using "; OLDVALUE: NEWVALUE = OLDVALUE ELSE IF (NEWVALUE < .1) THEN BADIN = 1: 'BAD INPUT END IF CASE 3: ''QDAM' VALUE IF (NWVL$ = "") THEN IF (OLDVALUE <= Q) THEN PRINT "Using "; OLDVALUE: NEWVALUE = OLDVALUE ELSE BADIN = 1: 'BAD INPUT END IF END IF IF (BADIN = 0) THEN IF ((NEWVALUE > Q) OR (NEWVALUE < .1)) THEN BADIN = 1: 'BAD INPUT END IF CASE 4: ''CARTWL', 'THKTHN', & 'SOFTSHAT' HAVE 3 VALUES: '0', '1', OR '2' IF (NWVL$ = "") THEN PRINT "Using "; OLDVALUE: NEWVALUE = OLDVALUE ELSE IF ((NEWVALUE <> 0) AND (NEWVALUE <> 1!) AND (NEWVALUE <> 2!)) THEN BADIN = 1: 'BAD INPUT END IF END IF END SELECT IF (BADIN = 1) THEN GOTO FIXVALUE: 'REDO INPUT OLDVALUE = NEWVALUE: 'GOOD NEW INPUT ' ' ** END OF SUB SETVALUE ** END SUB SUB SHATRDAM STATIC 'SHATRD PROJ DAMAGE LOGIC (REGULAR VS NOSE-ONLY SHATR) 'SHATRD PROJ LOGIC. SEPARATE NOSE-ONLY SHATR FROM REGULAR COMPLETE-BODY SHATR IF (((CRVRL = 1) AND (SHATRES = 0)) OR ((PENFLG > 0) AND (NSSHAT > 0) AND (NSSHAT <> 2)) OR (NSSHAT = 2)) THEN NSBRK = 2: 'ONLY NOSE BREAKAGE IF CURVED-PLATE RULE OR SOFTSHAT PLATE RULE OR UNDER MIN NOSE SHTR VEL FOR STRONGER PROJ ELSEIF ((PENFLG = 0) AND (NSSHAT > 0)) THEN NSBRK = 2: BRK = 2: BDYDM = 2: 'NOSE SHATR WEAKENS PROJ SO THAT IT BREAKS UP IF VEL < HBL ELSE NSBRK = 2: BRK = 1: BDYDM = 2: 'REGULAR COMPLETE BODY SHATR OCCURS END IF ' ** END OF SUB SHATRDAM ** END SUB SUB SHOWORIGARMR STATIC 'DISPLAY ORIGINAL TABULATED ARMOR PARAMETERS ' PRINT " SOFT BACK LAYER THICKNESS 'UB' ALWAYS ROUNDED DOWN TO AN INTEGER VALUE" IF ((ARMOR = 1) OR (ARMOR = 12)) THEN PRINT "*** GRUSON & TC ARMORS ONLY: 'UB' INCREASES AS PLATE THICKNESS INCREASES ***" PRINT "*** CALCULATED DEFAULT 'UB' FOR CURRENT PLATE IS IN 'ORIGINAL ARMOR' DATA ***" END IF PRINT "FLAGS = '0'(CLEAR), '1'(SET), or, for SOFTSHAT, THKTHN, & CARTWL, '2'(ALTERNATE)" PRINT "ORIGINAL ARMOR PARAMETER VALUES:"; TAB(40); "UB ="; UBSV; TAB(51); "Q ="; QSV; TAB(63); "QDAM ="; QDAMSV PRINT "CARTWL FLAG ="; CARTWLSV; TAB(20); "CMPND FLAG ="; CMPNDSV; TAB(40); PRINT "THNCHL FLAG ="; THNCHLSV PRINT "SOFTSHAT FLAG ="; SOFTSHATSV; TAB(20); "THKTHN FLAG ="; THKTHNSV PRINT "CURRENT PARAMETER VALUES:"; TAB(40); "UB ="; UB; TAB(51); "Q ="; Q; TAB(63); "QDAM ="; QDAM PRINT "CARTWL FLAG ="; CARTWL; TAB(20); "CMPND FLAG ="; CMPND; TAB(40); PRINT "THNCHL FLAG ="; THNCHL PRINT "SOFTSHAT FLAG ="; SOFTSHAT; TAB(20); "THKTHN FLAG ="; THKTHN ' ' ** END OF SUB SHOWORIGARMR ** END SUB SUB SPLNTRPRNT STATIC ' ' PRINT INFORMATION ON SPLINTERS THROWN FROM PLATE BACK ON HITS BELOW THE HBL IF (NORMPLUGWT <= .05) THEN IF (BKEFF = 0) THEN IF (CART > 0) THEN FLAKE$ = "Many dangerous splinters thrown from plate back likely due to impact shock." ELSE FLAKE$ = "Few dangerous splinters thrown from plate back due to impact shock." END IF ELSE FLAKE$ = "Backing material stops splinters thrown from plate back due to impact shock." END IF END IF IF (FLAKE$ <> "") THEN PRINT FLAKE$ ' ** END OF SUBROUTINE SPLNTERPRNT ** END SUB SUB THRESHOLDCALC STATIC ' COMPUTE MINIMUM EFFECTIVE-FILLER OR NO-NOSE-DAMAGE VELOCITY THRESHOLD VALUE ' 'ALWAYS USE DAMAGE/NO-DAMAGE BOUNDARY FOR 'EBL' & USE ACTUAL 'VLEX/VHEX' VALUES FOR NOSE DAMAGE CALC ' ''THVAL' IS PROJ CRITICAL DEFLECTION ANGLE CALCULATED PREVIOUSLY (NOSE OR BODY, AS SELECTED) ''THVAL' = DEFLECTION = 'OB' - 'EX' WHEN STRIKING VEL IS AT MIN FOR DAMAGE 'WE MUST FIND THE STRIKING VEL THAT GIVES AN 'EX' FOR GIVEN 'OB' SUCH THAT 'THVAL' IS EXACTLY REACHED 'SHATRD PROJ NEVER USES THIS LOGIC ('VHEXREV' = 'THSPD' FOR NOSE-ONLY SHATTR ONLY) (HOWEVER, SHATR IS INCLUDED IN LOGIC) THSPD = 0: 'INITIALIZE FINAL CRITICAL THRESHOLD VELOCITY 'THSPD' IF (THVAL <= OB) THEN 'PROJECTILE DAMAGE POSSIBLE, SO DO CALCULATION OF THRESHOLD VELOCITY EXTH = OB - THVAL: ''EXTH' = VALUE OF 'EX' WHEN VEL = CRITICAL VEL (MIN 'EX' = 15 IF 'OB' >= 15 & NO SHAT) IF ((SHAT = 1) OR ((EXTH > 15!) AND (OB > 15!))) THEN 'IF 'EXTH' > 15, THEN MINIMUM UNDAMAGED PROJ VEL IS ABOVE 'VLEXREV' ' 'USE ALL OF 'THVAL' FOR COMPUTATION 'COMPUTE 'THSPD' USING INVERSE OF 'EX' VEL RATIO FORMULA IF > 'VLEXREV' 'SNCSMAX' IS DEFLECTION-AT-'VLEXREV' ('MAXDF') FUNCTION FOR (OB - EXMIN) <= 45 DEG (SEE 'EX' CALC LOGIC) 'DIVIDE BY '(1 + OB45)' FIX IS FOR (OB - EXMIN) > 45 DEG (CHANGE IN 'OB45' SAME AS CHANGE AT 45 DEG) TEMP0 = THVAL / 57.29578 TEMP1 = TEMP0 / (1 + OB45) TEMP2 = SIN(TEMP1) * COS(TEMP1): 'CRITICAL BODY OR NOSE DEFLECTION FUNCTION (AS SELECTED) TEMP3 = SNCSMAX / TEMP2 TEMP4 = 2 * TEMP3 - 1 IF (TEMP4 < 0) THEN TEMP4 = 0 THSPD = VLEXREV * TEMP3 / SQR(TEMP4) IF (THSPD < VLEXREV) THEN THSPD = VLEXREV: 'VEL THAT CAUSES DEFLECTION ANGLE 'THVAL' ELSE 'LOGIC FOR THRESHOLD VEL 'THSPD' IF IT IS AT OR UNDER 'VLEXREV' ('EXTH' <= 15) ' OR IF 'OB' <= 15: BOTH USE A LINEAR INCREASE IN 'EX' WITH VEL BETWEEN 'VHOL' & 'VLMT' IF (OB <= 15!) THEN THVUSD = THVAL: 'ALL OF 'THVAL' USED IN LINEAR CALC ('MAXDIFF' = 'OB' & MIN 'EX' = 0) ELSE 'FIND VEL BY SUBTRACTING RATIO OF DIFF BETWEEN 'EX' AT 'VLEXREV' ( = 'MAXDIFF' = 15) & 'EX' AT MIN CRITICAL VEL THVUSD = 15! - EXTH: 'USE ONLY PORTION OF 'THVAL' IN THE UNDER 15 REGION FOR CRITICAL VEL CALC END IF THSPD = VLEXREV - (THVUSD / MAXDIFF) * (VLEXREV - VHEXREV): 'LINEAR INCREASE IN 'EX' WITH VEL FROM HBL TO NBL END IF 'ROUND 'THSPD' TO EXACTLY EQUAL 'VLMT' OR 'VHOL' IF SO ROUNDED ON DISPLAY THCHK = ABS(THSPD - VLMT): IF (THCHK < .5) THEN THSPD = VLMT THCHK = ABS(THSPD - VHOL): IF (THCHK < .5) THEN THSPD = VHOL END IF ' ' ** END OF SUB THRESHOLDCALC ** END SUB