⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shwrjcalfuction.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		}
		else
			y=0;
		if (fabs(wd - 90) <= 0.001) 
			return(y);
		if (wd > 90)
		{
			wd1 = 90;
			y1 = y;
		}	 
		else
		{
			wd2 = 90;
			y2 = y;
		}
	}
	if (wd > 80 && wd < 90)       //节流前温度在80和90之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 90 && wd < 110)      //节流前温度为100
	{
		if (x >= 1350)
		{
			if (x <= 1400) 
				y = -3 * x + 4350;
			if (y >= 150 && y <= 300)  
				;          //null
			else if (x <= 4000)
				y = -0.00023 * pow(x,2) + 1.9254 * x - 1883.82;
			else if (x > 4000 && x <= 10000)
				y = -0.00003161 * pow(x,2) + 0.4352 * x + 991.045;
		}
		else
			y=0;
		if (fabs(wd - 100) <= 0.001)
			return(y);
		if (wd > 100)
		{
			wd1 = 100;
			y1 = y;
		}
		else
		{
			wd2 = 100;
			y2 = y;
		}
	}
	if (wd > 90 && wd < 100)       //节流前温度在90和100之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 100 && wd < 120)      //节流前温度为110
	{
		if (x >= 1642.8 && x <= 1714.3)
			y = 3.4965 * x - 5594.06;
		else if (x > 1714.3 && x <= 4600)
			y = (-0.000000000055089) * pow(x,4) + 0.0000007273 * pow(x,3) - 0.00366 * pow(x,2) + 8.7713 * x - 7070.84;
		else if (x > 4600 && x <= 10000)
			y = -0.000021046 * pow(x,2) + 0.2885 * x + 1128.7;
		else
			y=0;
		if (fabs(wd - 110) <= 0.001)   
			return(y);
		if (wd > 110)
		{
			wd1 = 110;
			y1 = y;
		}
		else
		{
			wd2 = 110;
			y2 = y;
		}
	}
	if (wd > 100 && wd < 110)       //节流前温度在100和110之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 110 && wd < 130)      //节流前温度为120
	{
		if (x >= 1892)
		{
			if (x <= 1892.9) 
				y = -55.554 * x + 105308;
			if (y >= 150 && y <= 200) 
				;          //null
			else if (x <= 3714.2)
				y = -0.0003 * pow(x,2) + 2.4421 * x - 3249.65;
			else if (x > 3714.2 && x <= 6000)
				y = -0.000057651 * pow(x,2) + 0.6969 * x - 293.328;
			else if (x > 6000 && x <= 10000)
				y = -0.000014513 * pow(x,2) + 0.1898 * x + 1196.3;
		}
		else
			y=0;
		if (fabs(wd - 120) <= 0.001) 
			return(y);
		if (wd > 120)
		{
			wd1 = 120;
			y1 = y;
		}
		else
		{
			wd2 = 120;
			y2 = y;
		}
	}
	if (wd > 110 && wd < 120)    //节流前温度在110和120之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 120 && wd < 140)       //节流前温度为130
	{
		if (x >= 2200 && x <= 2250)
			y = 5 * x - 10837.5;
		else if (x > 2250 && x <= 4000)
			y = 0.000000025174 * pow(x,3) - 0.0004 * pow(x,2) + 2.4808 * x - 3235.54;
		else if (x > 4000 && x <= 10000)
			y = -0.0000041667 * pow(x,2) + 0.0000012628 * x + 1766.66;
		else
			y=0;
		if (fabs(wd - 130) <= 0.001)      
			return(y);
		if (wd > 130)
		{
			wd1 = 130;
			y1 = y;
		}
		else
		{
			wd2 = 130;
			y2 = y;
		}
	}
	if (wd > 120 && wd < 130)       //节流前温度在120和130之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 130 && wd < 150)       //节流前温度为140
	{
		if (x >= 2500 && x <= 2600)
			y = 2.5 * x - 6100;
		else if (x > 2600 && x <= 4000)
			y = 0.000000029834 * pow(x,3) - 0.0005 * pow(x,2) + 2.882 * x - 4132.48;
		else if (x > 4000 && x <= 10000)
			y = -0.000010633 * pow(x,2) + 0.1289 * x + 924.328;
		else
			y=0;
		if (fabs(wd - 140) <= 0.001) 
			return(y);
		if (wd > 140)
		{
			wd1 = 140;
			y1 = y;
		}
		else
		{
			wd2 = 140;
			y2 = y;
		}
	}
	if (wd > 130 && wd < 140)       //节流前温度在130和140之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 140 && wd < 160)       //节流前温度为150
	{
		if (x >= 2850 && x <= 3428.6) 
			y = -0.0004 * pow(x,2) + 3.2907 * x - 5913.87;
		else if (x > 3428.6 && x <= 10000) 
			y = -0.0000000010526 * pow(x,3) + 0.0000023307 * pow(x,2) + 0.1422 * x + 256.841;     
		else 
			y=0;
		if (fabs(wd - 150) <= 0.001)
			return(y);
		if (wd > 150)
		{
			wd1 = 150;
			y1 = y;
		}
		else
		{
			wd2 = 150;
			y2 = y;
		}
	}
	if (wd > 140 && wd < 150)     //节流前温度在140和150之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 150 && wd < 170)      //节流前温度为160
	{
		if (x >= 3428.6 && x <= 4000) 
			y = 0.7605 * x - 2421.33;
		else if (x > 4000 && x <= 10000)
			y = -0.000020816 * pow(x,2) + 0.3036 * x - 255.604; 
		else
			y=0;
		if (fabs(wd - 160) <= 0.001) 
			return(y);
		if (wd > 160)
		{
			wd1 = 160;
			y1 = y;
		}
		else
		{
			wd2 = 160;
			y2 = y;
		}
	}
	if (wd > 150 && wd < 160)       //节流前温度在150和160之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 160 && wd <= 170)       //节流前温度为170
	{
		if (x >= 5000 && x <= 5800) 
			y = -0.000375 * pow(x,2) + 4.3625 * x - 12287.5;
		else if (x > 5800 && x <= 8000)
			y = -0.000055583 * pow(x,2) + 0.7671 * x - 2179.07;
		else if (x > 8000 && x <= 8500)
			y = -0.4868 * x + 4307.89;
		else
			y=0;
		if (fabs(wd - 170) <= 0.001) 
			return(y);
		wd2 = 170;
		y2 = y;
	}
	if (wd > 160 && wd < 170)      //节流前温度在160和170之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	return(y);
}


//图6-20 xdmd为0.7天然气在不形成水化物条件下允许达到的膨胀程度
//x--节流前压力,psia
//y--节流后压力,psia
//wd--节流前温度,oF

double  xdmd7(double  x, double wd)
{
	double y,y1,y2,wd1,wd2;
	if (wd >= 40 && wd < 50)           //节流前温度为40
	{
		if (x >= 164.3 && x <= 167.9)
			y = 13.3056 * x - 2066.11;
		else
			y=0;
		if (fabs(wd - 40) <= 0.001) 
			return(y);
		wd1 = 170;
		y1 = y;
	}
	if (wd > 40 && wd < 60)            //节流前温度为50
	{
		if (x >= 290)
		{
			if (x <= 300)
				y = -8 * x + 252;
			if (y >= 120 && y <= 200) 
				;            //null
			else if (x <= 357.1)
				y = -0.04656 * pow(x,2) + 32.4718 * x - 5300.92;
			else
				y=0;
		}
		if (fabs(wd - 50) <= 0.001) 
			return(y);
		if (wd > 50)
		{
			wd1 = 50;
			y1 = y;
		}
		else
		{
			wd2 = 50;
			y2 = y;
		}
	}
	if (wd > 40 && wd < 50)      //节流前温度在40和50之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 50 && wd < 70)        //节流前温度为60
	{
		if (x >= 420)
		{
			if (x <= 440)  
				y = -4 * x + 1880;
			if (y >= 120 && y <= 200)  
				;         //null
			else if (x <= 650)
				y = 3.099 * pow(x,3) - 0.0525 * pow(x,2) + 31.08 * x - 5889.42;
			else
				y=0;
		}
		if (fabs(wd - 60) <= 0.001)   
			return(y);
		if (wd > 60)
		{
			wd1 = 60;
			y1 = y;
		}
		else
		{
			wd2 = 60;
			y2 = y;
		}
	}
	if (wd > 50 && wd < 60)      //节流前温度在50和60之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 60 && wd < 80)       //节流前温度为70
	{
		if (x >= 562.5)
		{
			if (x <= 575)
				y = -6.4 * x + 3800;
			if (y >= 120 && y <= 200) 
				;         //null
			else if (x <= 1450)
				y = 0.0000014162 * pow(x,3) - 0.0046 * pow(x,2) + 6.048 * x - 1971.77;
			else
				y=0;
		}
		if (fabs(wd - 70) <= 0.001) 
			return(y);
		if (wd > 70)
		{
			wd1 = 70;
			y1 = y;
		}
		else
		{
			wd2 = 70;
			y2 = y;
		}
	}
	if (wd > 60 && wd < 70)      //节流前温度在60和70之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 70 && wd < 90)       //节流前温度为80
	{
		if (x >= 700 && x <= 800)
			y = 2.8 * x - 1826.67;
		else if (x > 800 && x <= 1300)
			y = 1.1792 * x - 563.441;
		else if (x > 1300 && x <= 6000)
			y = -0.0000000072432 * pow(x,3) - 0.000055342 * pow(x,2) + 1.31041 * x - 599.739;
		else if (x > 6000 && x <= 10000)
			y = 0.000000019042 * pow(x,3) - 0.00047 * pow(x,2) + 3.4818 * x - 4542.85;
		else
			y=0;
		if (fabs(wd - 80) <= 0.001)    
			return(y);
		if (wd > 80)
		{
			wd1 = 80;
			y1 = y;
		}
		else
		{
			wd2 = 80;
			y2 = y;
		}
	}
	if (wd > 70 && wd < 80)      //节流前温度在70和80之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 80 && wd < 100)     //节流前温度为90
	{
		if (x >= 866.7)
		{
			if (x <= 900)  
				y = -2.4024 * x + 2282.16;
			if (y >= 120 && y <= 200)  
				;       //null
			else if (x <= 5000)
				y = 0.0000000035313 * pow(x,3) - 0.0002 * pow(x,2) + 1.6326 * x - 1058.74;
			else if (x > 5000 && x <= 10000)
				y = 0.00000000092593 * pow(x,3) - 0.000044048 * pow(x,2) + 0.3741 * x + 1835.87;
			else
				y=0;
		}
		if (fabs(wd - 90) <= 0.001)  
			return(y);
		if (wd > 90)
		{
			wd1 = 90;
			y1 = y;
		}
		else
		{
			wd2 = 90;
			y2 = y;
		}
	}
	if (wd > 80 && wd < 90)      //节流前温度在80和90之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 90 && wd < 110 )     //节流前温度为100
	{
		if (x >= 1075)
		{
			if (x <= 1100) 
				y = -3.2 * x + 3640;
			if (y >= 120 && y <= 200)   
				;         //null
			else if (x <= 2000)
				y = 0.000000028656 * pow(x,3) - 0.0004 * pow(x,2) + 2.2257 * x - 1686.88;
			else if (x > 2000 && x <= 10000)
				y = 0.000000001425 * pow(x,3) - 0.000053186 * pow(x,2) + 0.4859 * x + 892.107;
			else
				y=0;
		}
		if (fabs(wd - 100) <= 0.001)  
			return(y);
		if (wd > 100)
		{
			wd1 = 100;
			y1 = y;
		}
		else
		{
			y2 = y;
			wd2 = 100;
		}
	}
	if (wd > 90 && wd < 100 )      //节流前温度在90和100之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 100 && wd < 120)     //节流前温度为110
	{
		if (x >= 1275 && x <= 1300)   
			y = 7.2 * x - 9060;
		else if (x > 1300 && x <= 6000)
			y = 0.000000033447 * pow(x,3) - 0.00049 * pow(x,2) + 2.4212 * x - 2036.03;
		else if (x > 6000 && x <= 10000)
			y = -0.0000066143 * pow(x,2) + 0.0465 * x + 1954.39;
		else
			y=0;
		if (fabs(wd - 110) <= 0.001) 
			return(y);
		if (wd > 110)
		{
			wd1 = 110;
			y1 = y;
		}
		else
		{
			wd2 = 110;
			y2 = y;
		}
	}
	if (wd > 100 && wd < 110)     //节流前温度在100和110之间
	{
		
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 110 && wd < 130)      //节流前温度为120
	{
		if (x >= 1425)
		{
			if (x <= 1500) 
				y = 0.01867 * pow(x,2) - 55.6666 * x + 41620;
			if (y >= 120 && y <= 200)      
				;          //null
			else if (x < 6000)
				y = 0.0000000327 * pow(x,3) - 0.0005 * pow(x,2) + 2.5126 * x - 2467.01;
			else if (x > 6000 && x <= 10000 )
				y = -0.0000102 * pow(x,2) + 0.1132 * x + 1460.22;
			else
				y=0;
		}
		if (fabs(wd - 120) <= 0.001)  
			return(y);
		if (wd > 120)
		{
			wd1 = 120;
			y1 = y;
		}
		else
		{
			wd2 = 120;
			y2 = y;
		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -