UNPKG

@neutrium/pipe

Version:

The pipe module of the Neutrium library

114 lines (100 loc) 9.74 kB
// // ASME/ANSI B36.10/19 Steel and Stainless Steel Pipe // import { Pipe } from './Pipe' import { Quantity } from '@neutrium/quantity'; export class ASME_B36_10_Pipe extends Pipe { // Schedule pipe outer diameter [<DN size>, <NPS size>, <OD in m>] static readonly OD_DATA = [[6, 1/8, 0.0103],[8, 1/4, 0.0137],[10, 3/8, 0.0171],[15, 1/2, 0.0213],[20, 3/4, 0.0267],[25, 1, 0.0334],[32, 1.25, 0.0422],[40, 1.5, 0.0483],[50, 2, 0.0603],[65, 2.5, 0.073],[80, 3, 0.0889],[90, 3.5, 0.1016],[100, 4, 0.1143],[115, 4.5, 0.127],[125, 5, 0.1413],[150, 6, 0.1683],[200, 8, 0.2191],[250, 10, 0.2731],[300, 12, 0.3239],[350, 14, 0.3556],[400, 16, 0.4064],[450, 18, 0.4572],[500, 20, 0.508],[550, 22, 0.5588],[600, 24, 0.6096],[650, 26, 0.6604],[700, 28, 0.7112],[750, 30, 0.762],[800, 32, 0.8128],[850, 34, 0.8636],[900, 36, 0.9144],[1050, 42, 1.0668]]; // Schedule pipe wall thickness data (in m) referenced by DN size static readonly WT_DATA = { "6" : {"5": 0.000889, "10": 0.001245, "30": 0.001448, "40": 0.001727, "80": 0.002413, "STD": 0.001727, "XS": 0.002413, "10S": 0.001245, "40S": 0.001727, "80S": 0.002413}, "8" : {"5": 0.001245, "10": 0.001651, "30": 0.001854, "40": 0.002235, "80": 0.003023, "STD": 0.002235, "XS": 0.003023, "10S": 0.001651, "40S": 0.002235, "80S": 0.003023}, "10": {"5": 0.001245, "10": 0.001651, "30": 0.001854, "40": 0.002311, "80": 0.003200, "STD": 0.002311, "XS": 0.003200, "10S": 0.001651, "40S": 0.002311, "80S": 0.003200}, "15": {"5": 0.001651, "10": 0.002108, "30": 0.002413, "40": 0.002769, "80": 0.003734, "120": 0.004318, "160": 0.004775, "STD": 0.002769, "XS": 0.003734, "XXS": 0.007468, "5S": 0.001651, "10S": 0.002108, "40S": 0.002769, "80S": 0.003734, "160S": 0.004780}, "20": {"5": 0.001651, "10": 0.0021082, "30": 0.002413, "40": 0.0028702, "80": 0.0039116, "160": 0.0055626, "STD": 0.0028702, "XS": 0.0039116, "XXS": 0.0078232, "5S": 0.001651, "10S": 0.0021082, "40S": 0.0028702, "80S": 0.0039116, "160S": 0.00557}, "25": {"5": 0.001651, "10": 0.0027686, "30": 0.0028956, "40": 0.0033782, "80": 0.0045466, "160": 0.00635, "STD": 0.0033782, "XS": 0.0045466, "XXS": 0.0090932, "5S": 0.001651, "10S": 0.0027686, "40S": 0.0033782, "80S": 0.0045466, "160S": 0.00635}, "32": {"5": 0.001651, "10": 0.0027686, "30": 0.0029718, "40": 0.003556, "80": 0.0048514, "160": 0.00635, "STD": 0.003556, "XS": 0.0048514, "XXS": 0.0097028, "5S": 0.001651, "10S": 0.0027686, "40S": 0.003556, "80S": 0.0048514, "160S": 0.00635}, "40": {"5": 0.001651, "10": 0.0027686, "30": 0.003175, "40": 0.003683, "80": 0.00508, "160": 0.0071374, "STD": 0.003683, "XS": 0.00508, "XXS": 0.01016, "5S": 0.001651, "10S": 0.0027686, "40S": 0.003683, "80S": 0.00508, "160S": 0.00714}, "50": {"5": 0.001651, "10": 0.0027686, "30": 0.003175, "40": 0.0039116, "80": 0.0055372, "120": 0.00635, "160": 0.0087376, "STD": 0.0039116, "XS": 0.0055372, "XXS": 0.0110744, "5S": 0.001651, "10S": 0.0027686, "40S": 0.0039116, "80S": 0.0055372, "160S": 0.00874}, "65": {"5": 0.0021082, "10": 0.003048, "30": 0.0047752, "40": 0.0051562, "80": 0.0070104, "120": 0.00762, "160": 0.009525, "STD": 0.0051562, "XS": 0.0070104, "XXS": 0.0140208, "5S": 0.0021082, "10S": 0.003048, "40S": 0.0051562, "80S": 0.0070104, "160S": 0.00953}, "80": {"5": 0.0021082, "10": 0.003048, "30": 0.0047752, "40": 0.0054864, "80": 0.00762, "120": 0.00889, "160": 0.0111252, "STD": 0.0054864, "XS": 0.00762, "XXS": 0.01524, "5S": 0.0021082, "10S": 0.003048, "40S": 0.0054864, "80S": 0.00762, "160S": 0.01113}, "90": {"5": 0.0021082, "10": 0.003048, "30": 0.0047752, "40": 0.0057404, "80": 0.0080772, "STD": 0.0057404, "XS": 0.0080772, "XXS": 0.0161544, "5S": 0.0021082, "10S": 0.003048, "40S": 0.0057404, "80S": 0.0080772}, "100": {"5": 0.0021082, "10": 0.003048, "30": 0.0047752, "40": 0.0060198, "60": 0.0071374, "80": 0.0085598, "120": 0.0110998, "160": 0.0134874, "STD": 0.0060198, "XS": 0.0085598, "XXS": 0.0171196, "5S": 0.0021082, "10S": 0.003048, "40S": 0.0060198, "80S": 0.0085598, "160S": 0.01349}, "115": {"40": 0.0062738, "80": 0.009017}, "125": {"5": 0.0027686, "10": 0.0034036, "40": 0.0065532, "80": 0.009525, "120": 0.0127, "160": 0.015875, "STD": 0.0065532, "XS": 0.009525, "XXS": 0.01905, "5S": 0.0027686, "10S": 0.0034036, "40S": 0.0065532, "80S": 0.009525, "160S": 0.01588}, "150": {"5": 0.0027686, "10": 0.0034036, "40": 0.007112, "80": 0.0109728, "120": 0.0142748, "160": 0.0182626, "STD": 0.007112, "XS": 0.0109728, "XXS": 0.0219456, "5S": 0.0027686, "10S": 0.0034036, "40S": 0.007112, "80S": 0.0109728, "160S": 0.01827}, "200": {"5": 0.0027686, "10": 0.0037592, "20": 0.00635, "30": 0.00635, "40": 0.0081788, "60": 0.0103124, "80": 0.0127, "100": 0.0150876, "120": 0.0182372, "140": 0.0206248, "160": 0.0230124, "STD": 0.0081788, "XS": 0.0127, "XXS": 0.022225, "5S": 0.0027686, "10S": 0.0037592, "40S": 0.0081788, "80S": 0.0127, "160S": 0.02302}, "250": {"5": 0.0034036, "10": 0.004191, "20": 0.00635, "30": 0.0077978, "40": 0.009271, "60": 0.0127, "80": 0.0150622, "100": 0.0182626, "120": 0.0214122, "140": 0.0254, "160": 0.028575, "STD": 0.009271, "XS": 0.0127, "XXS": 0.0254, "5S": 0.0034036, "10S": 0.004191, "40S": 0.009271, "80S": 0.0127, "160S": 0.02858}, "300": {"5": 0.0039624, "10": 0.004572, "20": 0.00635, "30": 0.008382, "40": 0.0103124, "60": 0.0127, "80": 0.0174498, "100": 0.0214376, "120": 0.0254, "140": 0.028575, "160": 0.0333248, "STD": 0.009525, "XS": 0.0127, "XXS": 0.0254, "5S": 0.0039624, "10S": 0.004572, "40S": 0.009525, "80S": 0.0127, "160S": 0.03333}, "350": {"5": 0.0039624, "10": 0.00635, "20": 0.0079248, "30": 0.009525, "40": 0.0110998, "60": 0.0150622, "80": 0.01905, "100": 0.0238252, "120": 0.0277622, "140": 0.03175, "160": 0.0357124, "STD": 0.009525, "XS": 0.0127, "5S": 0.0039624, "10S": 0.0047752, "40S": 0.009525, "80S": 0.0127}, "400": {"5": 0.004191, "10": 0.00635, "20": 0.0079248, "30": 0.009525, "40": 0.0127, "60": 0.0166624, "80": 0.0214122, "100": 0.0261874, "120": 0.0309372, "140": 0.0365252, "160": 0.0404622, "STD": 0.009525, "XS": 0.0127, "5S": 0.004191, "10S": 0.0047752, "40S": 0.009525, "80S": 0.0127}, "450": {"5": 0.004191, "10": 0.00635, "20": 0.0079248, "30": 0.0110998, "40": 0.0142748, "60": 0.01905, "80": 0.0237998, "100": 0.0293624, "120": 0.034925, "140": 0.0396748, "160": 0.0452374, "STD": 0.009525, "XS": 0.0127, "5S": 0.004191, "10S": 0.0047752, "40S": 0.009525, "80S": 0.0127}, "500": {"5": 0.0047752, "10": 0.00635, "20": 0.009525, "30": 0.0127, "40": 0.0150622, "60": 0.0206248, "80": 0.0261874, "100": 0.0325374, "120": 0.0381, "140": 0.04445, "160": 0.0499872, "STD": 0.009525, "XS": 0.0127, "5S": 0.0047752, "10S": 0.0055372, "40S": 0.009525, "80S": 0.0127}, "550": {"10": 0.00635, "20": 0.009525, "30": 0.0127, "60": 0.022225, "80": 0.028575, "100": 0.034925, "120": 0.041275, "140": 0.047625, "160": 0.053975, "STD": 0.009525, "XS": 0.0127, "5S": 0.0047752, "10S": 0.0055372}, "600": {"5": 0.0055372, "10": 0.00635, "20": 0.009525, "30": 0.0142748, "40": 0.0174498, "60": 0.0245872, "80": 0.0309372, "100": 0.0388874, "120": 0.0460248, "140": 0.0523748, "160": 0.0595122, "STD": 0.009525, "XS": 0.0127, "5S": 0.0055372, "10S": 0.00635, "40S": 0.009525, "80S": 0.0127}, "650": {"10": 0.0079248, "20": 0.0127, "STD": 0.009525, "XS": 0.0127}, "700": {"10": 0.0079248, "20": 0.0127, "30": 0.015875, "STD": 0.009525, "XS": 0.0127}, "750": {"10": 0.0079248, "20": 0.0127, "30": 0.015875, "STD": 0.009525, "XS": 0.0127, "40S": 0.009525, "80S": 0.0127}, "800": {"10": 0.0079248, "20": 0.0127, "30": 0.015875, "40": 0.0174752, "STD": 0.009525, "XS": 0.0127}, "850": {"10": 0.0087376, "20": 0.0127, "30": 0.015875, "40": 0.0174752, "STD": 0.009525, "XS": 0.0127}, "900": {"10": 0.0079248, "20": 0.0127, "30": 0.015875, "40": 0.01905, "STD": 0.009525, "XS": 0.0127, "40S": 0.009525, "80S": 0.0127} } public readonly schedule: string; public readonly dn: number; public readonly nps: number; // @param {string} ns - The nominal size of the pipe (NPS vs DN ?) // @param {string} schedule - The pipe schdule constructor(size : string | Quantity, schedule : string) { let sizeQty = new Quantity(size), units = sizeQty.units() || "m", sizeData : any = null, od = null, wt = null; let nomSize : number, nomSizeIndex = 0; if(units == "in") { nomSize = sizeQty.scalar.toNumber(); nomSizeIndex = 1 } else { nomSize = sizeQty.to("mm").scalar.toNumber(); } // Get the DN size and outer diameter for (let i = 0, len = ASME_B36_10_Pipe.OD_DATA.length; i < len; i++) { let element = ASME_B36_10_Pipe.OD_DATA[i]; if(element[nomSizeIndex] == nomSize) { sizeData = element; od = new Quantity(element[2], "m").to(units); break; } } // Check a valid size was provided if(od === null) { throw Error("Invalid pipe size provided"); } // Get the wall thickness let pipeData = ASME_B36_10_Pipe.WT_DATA["" + sizeData[0]]; if(pipeData.hasOwnProperty(schedule)) { wt = new Quantity(pipeData[schedule], "m").to(units); } else { throw Error("Invalid combination of pipe size and schedule provided"); } // od and wt are in metres at this point super(od, wt); // Set additional Schedule pipe info this.schedule = schedule; this.dn = sizeData[0]; this.nps = sizeData[1]; } }