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

📄 shwrjcalfuction.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	}
	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 >= 1714.2)
		{
			if (x <= 1750) 
				y = -2.2346 * x + 4030.61;
			if (y >= 120 && y <= 200 )  
				;           //null
			else if (x <= 3000)
				y = -0.00038 * pow(x,2) + 2.5881 * x - 3088.37;
			else if (x > 3000 && x <= 10000)
				y = 4.0447 * pow(x,3) - 9.491 * pow(x,2) + 0.686 * x - 2.8194;
			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 >= 1928.6)
		{
			if (x <= 2000) 
				y = -1.12045 * x + 2360.9;
			if (y >= 120 && y <= 200) 
				;           //null
			else if (x <= 6000)
				y = 0.000000040536 * pow(x,3) - 0.0006 * pow(x,2) + 3.005 * x - 3622.07;
			else if (x > 6000 && x < 10000)
				y = -0.0000000025 * pow(x,3) + 0.000057143 * pow(x,2) - 0.4568 * x + 2603.86;
			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 >= 2150)
		{
			if (x <= 2200)      
				y = -1.6 * x + 3640;
			if (y >= 120 && y <= 200)   
				;       //null
			else if (x <= 3287.1)
				y = -0.0002 * pow(x,2) + 1.7792 * x - 2590.53;
			else if (x > 3287.1 && x <= 10000)
				y = 0.0000000020833 * pow(x,3) - 0.000054167 * pow(x,2) + 0.4295 * x + 92.8568;
			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 >= 2450 && x <= 2500)  
			y = 3.6 * x - 8700;
		else if (x > 2500 && x <= 6500)
			y = 0.000000017592 * pow(x,3) - 0.00029 * pow(x,2) + 1.6232 * x - 2192.64;
		else if (x > 6500 && x <= 10000)
			y = 0.0000023176 * pow(x,2) - 0.09 * x + 1464.71;
		else
			y=0;
		if (fabs(wd - 170) <= 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 < 180)           //节流前温度为170
	{
		if (x >= 2900)
		{
			if (x <= 3000)  
				y = -0.8 * x + 2520;
			if (y >= 120 && y <= 200) 
				;          //null
			else if (x <= 6500)
				y = 0.000000028415 * pow(x,3) - 0.00046 * pow(x,2) + 2.5131 * x - 3867.85;
			else if (x > 6500 && x <= 10000)
				y = -0.000000003535 * pow(x,3) + 0.000083692 * pow(x,2) - 0.6817 * x + 2582.79;
			else
				y=0;
		}
		if (fabs(wd - 170) <= 0.001) 
			return(y);
		if (wd > 170)
		{
			wd1 = 170;
			y1 = y;
		}
		else
		{
			wd2 = 170;
			y2 = y;
		}
	}
	if (wd > 160 && wd < 170)     //节流前温度在160和170之间
	{
		y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		return(y);
	}
	if (wd > 170 && wd < 190)            //节流前温度为180
	{
		if (x >= 3930)
		{
			if (x <= 4000)  
				y = -1.1429 * x + 4691.43;
			if (y >= 120 && y <= 200)    
				;         //null
			else if (x <= 6000)
				y = -0.000049312 * pow(x,2) + 0.6076 * x - 1401.98;
			else if (x > 6000 && x <= 10000)
			{
				y = 0.00000000060408 * pow(x,3) - 0.000020416 * pow(x,2) + 0.1796 * x - 1.8806;
				if (y >= 400 && y < 470)  
					;                 //null
				else if (x <= 6750)   
					y = -0.1 * x + 790;
				if (y >= 120 && y <= 200)  
					;                        //null
				else if (x <= 8250)  
					y = -0.000048417 * pow(x,2) + 0.6912 * x - 2204.86;
				if (y >= 200 && y <= 260) 
					;                        //null
				else if (x >= 7750 && x < 8250)
					y = 0.00016 * pow(x,2) - 2.4 * x + 9110;
			}
			else
				y=0;
		}
		if (fabs(wd - 180) <= 0.001)  
			return(y);
		if (wd > 180)
		{
			wd1 = 180;
			y1 = y;
		}
		else
		{
			wd2 = 180;
			y2 = y;
		}
	   }
	   if (wd > 170 && wd < 180)     //节流前温度在170和180之间
	   {
		   y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		   return(y);
	   }
	   if (wd > 180 && wd <= 184)       //节流前温度为184
	   {
		   if (x >= 4800)
		   {
			   if (x <= 5000)   
				   y = -0.4 * x + 2116.67;
			   if (y >= 120 && y <= 200) 
				   ;           //null
			   else if (x <= 6500)  
				   y = -0.000096221 * pow(x,2) + 1.1882 * x - -3264.74;
			   else if (x > 6500 && x <= 10000)
				   y = -0.0000057148 * pow(x,2) + 0.0498 * x + 320.837;
			   else
				   y=0;
		   }
		   if (fabs(wd - 184) <= 0.001) 
			   return(y);
		   wd2 = 170;
		   y2 = y;
	   }
	   if (wd > 180 && wd < 184)     //节流前温度在180和184之间
	   {
		   y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
		   return(y);
	   }
	   return(y);
}



//图6-21 相对密度为0.8天然气在不形成水化物条件下允许达到的膨胀程度
//x--节流前压力,psia
//y--节流后压力,psia
//wd--节流前温度,oF
double  xdmd8(double x, double wd)
{
	double y,y1,y2,wd1,wd2;
	if (wd >= 50 && wd < 60)             //节流前温度为50
	{
		if (x >= 245.4 && x <= 250)
			y = 21.7391 * x - 5234.78;
		else if (x > 250 && x <= 272.7)
			y = 3.2026 * x - 600.66;
		else
			y=0;
		if (fabs(wd - 50) <= 0.001) 
			return(y);
		wd1 = 50;
		y1 = y;
	}
	if (wd > 50 && wd < 70)       //节流前温度为60
	{
		if (x >= 343.8)
		{
			if (x <= 350)  
				y = -8.0645 * x + 2922.58;
            if (y >= 100 && y <= 150) 
				;        //null
			else if (x <= 560)
				y = -0.0048 * pow(x,2) + 6.13075 * x - 1375.92;
			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 >= 466.7)
		{
			if (x <= 475)   
				y = 6.0241 * x - 2711.45;
            if (y >= 100 && y <= 150)  
				;       //null
			else if (x <= 1454.6)
				y = 0.0000016924 * pow(x,3) - 0.0052 * pow(x,2) + 6.1589 * x - 1723.69;
			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 >= 560 && x <= 600)
			y = 5 * x - 2700;
		else if (x > 600 && x <= 4000)
			y = -0.000000000016155 * pow(x,4) + 0.0000001645 * pow(x,3) - 0.0006 * pow(x,2) + 1.968 * x - 675.239;
		else if (x > 4000 && x <= 10000)
			y = 0.000003566 * pow(x,2) - 0.3161 * x + 5321.83;
		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 >= 700)
		{
			if (x <= 737.5)  
				y = -1.3333 * x + 1083.33;
			if (y >= 100 && y <= 150) 
				;       //null
			else if (x <= 1000)
				y = 0.000009534 * pow(x,3) - 0.0278 * pow(x,2) + 28.128 * x - 9179.92;
			else if (x > 1000 && x <= 5000)
				y = 0.0000000024526 * pow(x,3) - 0.00017 * pow(x,2) + 1.4408 * x - 650.53;
			else if (x > 5000 && x <= 10000)
				y = -0.000000002525 * pow(x,3) + 0.000042204 * pow(x,2) - 0.3189 * x + 3489.03;
			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 >= 866.7)
		{
			if (x <= 900)
				y = -3.003 * x + 2803.7;
			if (y >= 100 && y <= 150)
				;       //null
			else if (x <= 5000)
				y = 0.000000027526 * pow(x,3) - 0.00038 * pow(x,2) + 1.8571 * x - 1103.21;
			else if (x > 5000 && x <= 10000)
				y = -0.0000000012324 * pow(x,3) + 0.0000044131 * pow(x,2) + 0.0431 * x + 1918.97;
			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 >= 1068.2)
		{
			if (x <= 1090.9) 
				y = -4.4053 * x + 4905.71;
			if (y >= 100 && y <= 200)
				;      //null
			else if (x <= 3000)
				y = 0.000000041601 * pow(x,3) - 0.0005 * pow(x,2) + 2.1981 * x - 1547.61;
			else if (x > 3000 && x <= 10000)
				y = -0.00000000092593 * pow(x,3) + 0.000014583 * pow(x,2) - 0.0946 * x + 1975.2;
			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 >= 1227.2 && x <= 1272.7)
			y = 3.956 * x - 4734.86;
		else if (x > 1272.7 && x <= 3000)
			y = 0.000000052762 * pow(x,3) - 0.0006 * pow(x,2) + 2.5508 * x - 1997.14;
		else if (x > 3000 && x <= 10000)
			y = 0.000010383 * pow(x,2) - 0.1085 * x + 1933.89;
		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 >= 1363.6)
		{
			if (x <= 1409) 
				y = -1.1013 * x + 1651.76;
			if (y >= 100 && y <= 150) 
				;        //null
			else if (x <= 4000)
				y = 0.000000050328 * pow(x,3) - 0.0006 * pow(x,2) + 2.6911 * x - 2444.28;
			else if (x > 4000 && x <= 10000)
				y = 0.00000000041945 * pow(x,3) - 0.00001025 * pow(x,2) + 0.0594 * x + 1352.43;
			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之间
	{
		

⌨️ 快捷键说明

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