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

📄 boastview.cpp

📁 石油开发软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
  if(ipmap==1) 
    {fprintf(fw,"THE-OIL-RESERVOIR-PRESSURE-DISTRIBUTION\n");
     for(k=1;k<=kk;k++)
	 {
		 fprintf(fw,"\n k=%d\n",k);
		 for(j=1;j<=jj;j++) {
	 for(i=1;i<=ii;i++)
	  { fprintf(fw,"%8.2f",p[i][j][k]*0.0068948);
	    if(i%10==0) fprintf(fw,"\n");
	  }
	 fprintf(fw,"\n");
		 }
	 }
     fprintf(okp,"PRESSURE-DISTRIBUTION-OF-TIME:  %8.2f\n",eti);
     for(k=1;k<=kk;k++)
        {  
       for(j=1;j<=jj;j++) {
         for(i=1;i<=ii;i++)
          { 
			 fprintf(okp,"%8.2f",p[i][j][k]*0.0068948);
            if(i%10==0) fprintf(okp,"\n");
          }
        fprintf(okp,"\n");
                          }
        }

    }


  if(isomap==1) 
   {fprintf(fw,"THE-OIL-SATURATION-DISTRIBUTION\n");
     for(k=1;k<=kk;k++)
 	 {
		 fprintf(fw,"\n k=%d\n",k);
      for(j=1;j<=jj;j++) {
	 for(i=1;i<=ii;i++)
	  { fprintf(fw,"%8.2f",so[i][j][k]);
	    if(i%10==0) fprintf(fw,"\n");
	  }
	 fprintf(fw,"\n");
       } 
	 }
     fprintf(oko,"OIL-SATURATION-OF-TIME:  %8.2f\n", eti);
     for(k=1;k<=kk;k++)
        { 
       for(j=1;j<=jj;j++) {
         for(i=1;i<=ii;i++)
          {
			 fprintf(oko,"%8.2f",so[i][j][k]);
            if(i%10==0) fprintf(oko,"\n");
          }
         fprintf(oko,"\n");
                          }
        }

   }



  if(iswmap==1) 
   {fprintf(fw,"THE-WATER-SATURATION-DISTRIBUTION\n");
     for(k=1;k<=kk;k++)
 	 {
		 fprintf(fw,"\n k=%d\n",k);
      for(j=1;j<=jj;j++) {
	 for(i=1;i<=ii;i++)
	  { fprintf(fw,"%8.2f",sw[i][j][k]);
	    if(i%10==0) fprintf(fw,"\n");
			 }
	 fprintf(fw,"\n");
       } 
	 }
     fprintf(okw,"WATER-SATURATION-OF-TIME:  %8.2f\n", eti);
     for(k=1;k<=kk;k++)
        { 
       for(j=1;j<=jj;j++) {
         for(i=1;i<=ii;i++)
          { fprintf(okw,"%8.2f",sw[i][j][k]);
            if(i%10==0) fprintf(okw,"\n");
          }
         fprintf(okw,"\n");
                          }
        }
		
    }


  if(isgmap==1)
	{fprintf(fw,"THE-GAS-SATURATION-DISTRIBUTION\n");
	  for(k=1;k<=kk;k++)
	 {
		 fprintf(fw,"\n k=%d\n",k);
		 for(j=1;j<=jj;j++) {
	 for(i=1;i<=ii;i++)
			 { fprintf(fw,"%8.2f",sg[i][j][k]);
				if(i%10==0) fprintf(fw,"\n");
			 }
			fprintf(fw,"\n");
		 }
	 }
  }


  if(ipbmap==1)
	{fprintf(fw,"THE-RESER-BUBBLE0POINT-PRESSURE-DISTRIBUTION\n");
	  for(k=1;k<=kk;k++)
	 {
		 fprintf(fw,"\n k=%d\n",k);
		 for(j=1;j<=jj;j++) {
	 for(i=1;i<=ii;i++)
			 { fprintf(fw,"%8.2f",pbot[i][j][k]*0.0068948);
				if(i%10==0) fprintf(fw,"\n");
			 }
			fprintf(fw,"\n");
		 }
	 }
  }
fprintf(fw,"	       ----------------THE-END-OF-THE-REPORT---------------------\n\n\n\n");

return;
}



		/*-------------------------well dealing-------------*/
void CBOASTView::qrate(float  sat[maxpvt],float  krot[maxpvt],float  krwt[maxpvt],
		   float  krgt[maxpvt],float  pot[maxpvt],
float  muot[maxpvt],float  bot[maxpvt],float  rsot[maxpvt],
float  pwt[maxpvt],float  muwt[maxpvt],float  bwt[maxpvt],float  rswt[maxpvt],
float  pgt[maxpvt],float  mugt[maxpvt],float  bgt[maxpvt])

{
 int   j,k;
 int   iq1,iq2,iq3,lay,iterq;
 float muo=1.,muw=1.,mug=1.,kro=1.,krw=1.,krg=1.;
 float qdenom,alphao,alphaw,alphag;
 float bbo=1.,bbw=1.,bbg=1.,rso=1.,rsw=1.,pp,bpt,totor;
 float sso,ssw,ssg,gmt,fac,gmtb,soln,qt,ppn;
 for(j=1;j<=nvqn;j++)
	{
	 iq1=iqn1[j];
	 iq2=iqn2[j];
	 iq3=iqn3[j];
	 lay=iq3+(layer[j]-1);
    for(k=iq3;k<=lay;k++)
	  {
		pwfc[j][k]=-1.0;
      pp=p[iq1][iq2][k];
		bpt=pbot[iq1][iq2][k];
		muo=intpvt(bpt,vslope,pot,muot,mpot,pp,muo);
		muw=interp(pwt,muwt,mpwt,pp,muw);
		mug=interp(pgt,mugt,mpgt,pp,mug);
		sso=so[iq1][iq2][k];
		ssw=sw[iq1][iq2][k];
		ssg=sg[iq1][iq2][k];
		
		krw=interp(sat,krwt,msat,ssw,krw);
		kro=interp(sat,krot,msat,sso,kro);
		krg=interp(sat,krgt,msat,ssg,krg);
		gmw[j][k]=krw/muw;
		gmo[j][k]=kro/muo;
		gmg[j][k]=krg/mug;
//		if(iq1==16&&iq2==7&&k==4)
//		fprintf(fw,"%5d%5d%10.3f,%10.3f%10.3f\n",j,k,gmo[j][k],muw,sso);
     }
      if(kip[j]<0)  continue;
		if(kip[j]!=1) goto M1190;
		iterq=0;
		qdenom=0.0;
      alphao=0.0;
      alphaw=0.0;
		alphag=0.0;
      lay=iq3+(layer[j]-1);
 M1172:
		iterq=iterq+1;
    for(k=iq3;k<=lay;k++)
     {
		pp=p[iq1][iq2][k];
		bpt=pbot[iq1][iq2][k];
		bbo=intpvt(bpt,bslope,pot,bot,mpot,pp,bbo);
      bbw=interp(pwt,bwt,mpwt,pp,bbw);
      bbg=interp(pgt,bgt,mpgt,pp,bbg);
		rso=intpvt(bpt,rslope,pot,rsot,mpot,pp,rso);
		rsw=interp(pwt,rswt,mpwt,pp,rsw);
		if(iterq!=1) goto M1174;
		qdenom=qdenom+pid[j][k]*gmo[j][k]/bbo;
      gmt=gmo[j][k]+gmw[j][k]+gmg[j][k];
      alphao=gmo[j][k]/gmt+alphao;
		alphaw=gmw[j][k]/gmt+alphaw;
		alphag=gmg[j][k]/gmt+alphag;
		continue;
 M1174:
     if(qvt[j]==0.0) goto M1176;
		totor=qvt[j]*alphao/(alphao+alphaw+alphag);
      goto M1178;
 M1176:
		totor=qvo[j];
 M1178:
      qo[iq1][iq2][k]=totor*5.615*pid[j][k]*gmo[j][k]/(bbo*qdenom);
		if(gmo[j][k]==0)gmo[j][k]=0.000001;
		qw[iq1][iq2][k]=qo[iq1][iq2][k]*gmw[j][k]*bbo/(bbw*gmo[j][k]);
		qg[iq1][iq2][k]=qo[iq1][iq2][k]*(gmg[j][k]*bbo/(bbg*gmo[j][k])+rso)+rsw*qw[iq1][iq2][k];
		}

		if(iterq==1) goto M1172;
		continue;

 M1190:
		lay=iq3+(layer[j]-1);
		iterq=0;
		qdenom=0.;
 M1192:
	  iterq=iterq+1;

	  for(k=iq3;k<=lay;k++)
	  {
		if(iterq!=1) goto M1194;
		qdenom=qdenom+pid[j][k]*(gmo[j][k]+gmw[j][k]+gmg[j][k]);
		continue;
 M1194:
	  if(kip[j]!=2) goto M1196;
		qw[iq1][iq2][k]=qvw[j]*5.615*pid[j][k]*(gmo[j][k]+gmw[j][k]+gmg[j][k])/qdenom;
		continue;
 M1196:
	  qg[iq1][iq2][k]=qvg[j]*1000.*pid[j][k]*(gmo[j][k]+gmw[j][k]+gmg[j][k])/qdenom;
	  }

		if(iterq==1) goto M1192;
	}


	for(j=1;j<=nvqn;j++)
	 {
		iq1=iqn1[j];
		iq2=iqn2[j];
		iq3=iqn3[j];
		if(kip[j]<0) continue;
		lay=iq3+(layer[j]-1);

	 for(k=iq3;k<=lay;k++)
	  {
		pwfc[j][k]=0.0;
		if(pid[j][k]<0.0001) continue;
		pp=p[iq1][iq2][k];
		bpt=pbot[iq1][iq2][k];
		bbo=intpvt(bpt,bslope,pot,bot,mpot,pp,bbo);
		bbw=interp(pwt,bwt,mpwt,pp,bbw);
		bbg=interp(pgt,bgt,mpgt,pp,bbg);
		rso=intpvt(bpt,rslope,pot,rsot,mpot,pp,rso);
		rsw=interp(pwt,rswt,mpwt,pp,rsw);
		fac=pid[j][k]*5.615;
		gmtb=gmo[j][k]/bbo+gmw[j][k]/bbw+gmg[j][k]/bbg;
		soln=rso*qo[iq1][iq2][k]+rsw*qw[iq1][iq2][k];
		qt=qo[iq1][iq2][k]+qw[iq1][iq2][k]+qg[iq1][iq2][k];
		pwfc[j][k]=pp-(qt-soln)/(fac*gmtb);
		}
	 }
					/**** pressure constraint*************/
	for(j=1;j<=nvqn;j++)
	 {
		if(kip[j]>=0) continue;
		iq1=iqn1[j];
		iq2=iqn2[j];
		iq3=iqn3[j];
		lay=iq3+(layer[j]-1);
	 for(k=iq3;k<=lay;k++)
	  {
		ppn=pn[iq1][iq2][k];
		bpt=pbot[iq1][iq2][k];
		bbo=intpvt(bpt,bslope,pot,bot,mpot,ppn,bbo);
		bbw=interp(pwt,bwt,mpwt,ppn,bbw);
		bbg=interp(pgt,bgt,mpgt,ppn,bbg);
		rso=intpvt(bpt,rslope,pot,rsot,mpot,ppn,rso);
		rsw=interp(pwt,rswt,mpwt,ppn,rsw);
					/**** oil producer*************/
		if(kip[j]!=-1) goto M1310;
		qo[iq1][iq2][k]=pid[j][k]*5.615*gmo[j][k]*(ppn-pwf[j][k])/bbo;
		if(ppn<=pwf[j][k]) qo[iq1][iq2][k]=0.0;
		qw[iq1][iq2][k]=qo[iq1][iq2][k]*gmw[j][k]*bbo/(bbw*gmo[j][k]);
		qg[iq1][iq2][k]=qo[iq1][iq2][k]*(gmg[j][k]*bbo/(bbg*gmo[j][k])+rso)+rsw*qw[iq1][iq2][k];
		continue;

					/**** water injector***********/
 M1310:
	  if(kip[j]!=-2) goto M1320;
		qw[iq1][iq2][k]=pid[j][k]*5.615*(gmo[j][k]+gmw[j][k]+gmg[j][k])*(ppn-pwf[j][k])/bbw;
		if(ppn>=pwf[j][k]) qw[iq1][iq2][k]=0.0;
		continue;
					/**** gas injector **********/
 M1320:
	  if(kip[j]!=-3) continue;
		qg[iq1][iq2][k]=pid[j][k]*5.615*(gmo[j][k]+gmw[j][k]+gmg[j][k])*(ppn-pwf[j][k])/bbg;
		if(ppn>=pwf[j][k]) qg[iq1][iq2][k]=0.0;
	  }
	}
return;
}


void CBOASTView::pratei(float  pot[maxpvt],float  bot[maxpvt],float  rsot[maxpvt],
float  pwt[maxpvt],float  bwt[maxpvt],float  rswt[maxpvt],
float  pgt[maxpvt],float  bgt[maxpvt])
{
 int j,k;
 int lay,iq1,iq2,iq3;
 float p56,ppn,bpt,rso=1.,rsw=1.;
 float cpio,cpiw,cpig,cpi,bbo=1.,bbw=1.,bbg=1.;

	for(j=1;j<=nvqn;j++)
    {
      if(kip[j]>=-10) continue;
      iq1=iqn1[j];
		iq2=iqn2[j];
		iq3=iqn3[j];
      lay=iq3+(layer[j]-1);
    for(k=iq3;k<=lay;k++)
	  {
      p56=pid[j][k]*5.615;
		ppn=pn[iq1][iq2][k];
		bpt=pbot[iq1][iq2][k];
		bbo=intpvt(bpt,bslope,pot,bot,mpot,ppn,bbo);
		rso=intpvt(bpt,rslope,pot,rsot,mpot,ppn,rso);
      bbw=interp(pwt,bwt,mpwt,ppn,bbw);
      bbg=interp(pgt,bgt,mpgt,ppn,bbg);
		rsw=interp(pwt,rswt,mpwt,ppn,rsw);
      cpio=gmo[j][k]*p56*(bbo-bbg*rso)/bbo;
      cpiw=gmw[j][k]*p56*(bbw-bbg*rsw)/bbw;
		cpig=gmg[j][k]*p56;
      cpi=cpio+cpiw+cpig;
      b[iq1][iq2][k]=b[iq1][iq2][k]-cpi*pwf[j][k];
      e[iq1][iq2][k]=e[iq1][iq2][k]-cpi;
     }
   }
return;
}


void CBOASTView::prateo(float  pot[maxpvt],float  rsot[maxpvt],
float  pwt[maxpvt],float rswt[maxpvt])

{
 int j,k;
 int lay,iq1,iq2,iq3;
 float pp,ppn,bpt,rson=1.,rso=1.,rswn=1.,rsw=1.,factor;
 float rsoav,rswav;

 for(j=1;j<=nvqn;j++)
 {

		if(kip[j]>=-10) continue;
		iq1=iqn1[j];
		iq2=iqn2[j];
		iq3=iqn3[j];
		lay=iq3+(layer[j]-1);

	for(k=iq3;k<=lay;k++)
	  {
		pp=p[iq1][iq2][k];
		ppn=pn[iq1][iq2][k];
      bpt=pbot[iq1][iq2][k];
      rson=intpvt(bpt,rslope,pot,rsot,mpot,ppn,rson);
      rso=intpvt(bpt,rslope,pot,rsot,mpot,pp,rso);
		rswn=interp(pwt,rswt,mpwt,ppn,rswn);
		rsw=interp(pwt,rswt,mpwt,pp,rsw);
      rsoav=0.5*(rso+rson);
		rswav=0.5*(rsw+rswn);
		factor=pid[j][k]*5.615*(pp-pwf[j][k]);
		if(kip[j]==-13) goto M2053;
      qw[iq1][iq2][k]=gmw[j][k]/bw[iq1][iq2][k]*factor;
		if(kip[j]==-12) { qw[iq1][iq2][k]=(gmo[j][k]+gmw[j][k]+gmg[j][k])/bw[iq1][iq2][k]*factor;
			continue;}
      qo[iq1][iq2][k]=gmo[j][k]/bo[iq1][iq2][k]*factor;
      qg[iq1][iq2][k]=gmg[j][k]/bg[iq1][iq2][k]*factor+rsoav*qo[iq1][iq2][k]+rswav*qw[iq1][iq2][k];
      continue;
 M2053:
      qg[iq1][iq2][k]=(gmo[j][k]+gmw[j][k]+gmg[j][k])/bg[iq1][iq2][k]*factor;
	  }
  }
return;

}


		/*........................................................................sol..............*/

void CBOASTView::solmat(float div1,float d288,float sat[maxpvt],float krot[maxpvt],float krwt[maxpvt],float krgt[maxpvt],float pcowt[maxpvt],
				float pcgot[maxpvt],float pot[maxpvt],float muot[maxpvt],float rsot[maxpvt],float pwt[maxpvt],float muwt[maxpvt],float rswt[maxpvt],
				float pgt[maxpvt],float mugt[maxpvt])
/* float  div1,d288;
float  sat[maxpvt],krot[maxpvt],krwt[maxpvt],krgt[maxpvt],pcowt[maxpvt],pcgot[maxpvt],pot[maxpvt];
float  muot[maxpvt],rsot[maxpvt];
float  pwt[maxpvt],muwt[maxpvt],rswt[maxpvt];
float  pgt[maxpvt],mugt[maxpvt]; */

{

 int   i,j,k;
 float muo4=0.,muw4=0.,mug4=0.,muo5=0.,muw5=0.,mug5=0.,muo6=0.,muw6=0.,mug6=0.;
 float kro1=0.,krw1=0.,krg1=0.,kro2=0.,krw2=0.,krg2=0.,kro3=0.,krw3=0.,krg3=0.;
 float muo1=0.,muw1=0.,mug1=0.,muo2=0.,muw2=0.,mug2=0.,muo3=0.,muw3=0.,mug3=0.;
 float kro4=0.,krw4=0.,krg4=0.,kro5=0.,krw5=0.,krg5=0.,kro6=0.,krw6=0.,krg6=0.;
 float mo1=0.,mw1=0.,mg1=0.,mo2=0.,mw2=0.,mg2=0.,mo3=0.,mw3=0.,mg3=0.;
 float mo4=0.,mw4=0.,mg4=0.,mo5=0.,mw5=0.,mg5=0.,mo6=0.,mw6=0.,mg6=0.;
 float muo=0.,muw=0.,mug=0.;

 float rso1=0.0,rso2=0.0,rso3=0.0,rso4=0.0,rso5=0.0,rso6=0.0;
 float rsw1=0.0,rsw2=0.0,rsw3=0.0,rsw4=0.0,rsw5=0.0,rsw6=0.0;

 float pp=0.,sso=0.,ssw=0.,ssg=0.,rso=0.,rsw=0.,ro=0.,rw=0.,rg=0.;

 float bpt=0.,pcow=0.,pcgo=0.,p1=0.,so1s=0.,sw1s=0.,sg1s=0.,pcow1=0.,pcgo1=0.,ro1=0.,rw1=0.,rg1=0.,fact=0.;
 float gow1=0.,gww1=0.,ggw1=0.,p11=0.,ho1=0.,hw1=0.,hg1=0.,aow=0.,aww=0.,agw=0.,p2=0.,so2=0.,sw2=0.,sg2=0.,pcow2=0.,pcgo2=0.;
 float ro2=0.,rw2=0.,rg2=0.,gow2=0.,gww2=0.,ggw2=0.,p22=0.,ho2=0.,hw2=0.,hg2=0.,aoe=0.,awe=0.,age=0.;
 float p3=0.,so3=0.,sw3=0.,sg3=0.,pcow3=0.,pcgo3=0.,ro3=0.,rw3=0.,rg3=0.,gow3=0.,gww3=0.,ggw3=0.,ho3=0.,hw3=0.,hg3=0.;
 float aos=0.,aws=0.,ags=0.,p33=0.,p4=0.,so4=0.,sw4=0.,sg4=0.,pcow4=0.,pcgo4=0.,ro4=0.,rw4=0.,rg4=0.,gow4=0.,gww4=0.,ggw4=0.;
 float p44=0.,ho4=0.,hw4=0.,hg4=0.,aon=0.,awn=0.,agn=0.,p5=0.,so5=0.,sw5=0.,sg5=0.,pcow5=0.,pcgo5=0.,ro5=0.,rw5=0.,rg5=0.;
 float gow5=0.,gww5=0.,ggw5=0.,p55=0.,ho5=0.,hw5=0.,hg5=0.,aot=0.,awt=0.,agt=0.,p6=0.,so6=0.,sw6=0.,sg6=0.,pcow6=0.,pcgo6=0.,ro6=0.;
 float rw6=0.,rg6=0.,gow6=0.,gww6=0.,ggw6=0.,p66=0.,ho6=0.,hw6=0.,hg6=0.,aob=0.,awb=0.,agb=0.;
 float rso1a=0.,rso2a=0.,rso3a=0.,rso4a=0.,rso5a=0.,rso6a=0.,rsw1a=0.,rsw2a=0.,rsw3a=0.,rsw4a=0.,rsw5a=0.,rsw6a=0.;
 float ao1=0.,ao2=0.,ao3=0.,ao4=0.,ao5=0.,ao6=0.,aw1=0.,aw2=0.,aw3=0.,aw4=0.,aw5=0.,aw6=0.;


for(k=1;k<=kk;k++)
  for(j=1;j<=jj;j++)
	 for(i=1;i<=ii;i++)
	  {
		pp=p[i][j][k];
      bpt=pbot[i][j][k];
      rso=intpvt(bpt,rslope,pot,rsot,mpot,pp,rso);
		muo=intpvt(bpt,vslope,pot,muot,mpot,pp,muo);
		rsw=interp(pwt,rswt,mpwt,pp,rsw);
      muw=interp(pwt,muwt,mpwt,pp,muw);
		mug=interp(pgt,mugt,mpgt,pp,mug);
		sso=so[i][j][k];
      ssw=sw[i][j][k];
      ssg=sg[i][j][k];
      pcow=interp(sat,pcowt,msat,ssw,pcow);
		pcgo=interp(sat,pcgot,msat,ssg,pcgo);

      ro=(rhosco + rso*rhoscg)/bo[i][j][k];
		rw=(rhoscw + rsw*rhoscg)/bw[i][j][k];
		rg=rhoscg/bg[i][j][k];

		if(i==1) goto M115;
      p1=p[i-1][j][k];
		bpt=pbot[i-1][j][k];
      rso1=intpvt(bpt,rslope,pot,rsot,mpot,p1,rso1);
      muo1=intpvt(bpt,vslope,pot,muot,mpot,p1,muo1);
		rsw1=interp(pwt,rswt,mpwt,p1,rsw1);
      muw1=interp(pwt,muwt,mpwt,p1,muw1);
      mug1=interp(pgt,mugt,mpgt,p1,mug1);
		so1s=so[i-1][j][k];
		sw1s=sw[i-1][j][k];
		sg1s=sg[i-1][j][k];
		pcow1=interp(sat,pcowt,msat,sw1s,pcow1);
      pcgo1=interp(sat,pcgot,msat,sg1s,pcgo1);


      ro1=(rhosco + rso1*rhoscg)/bo[i-1][j][k];

⌨️ 快捷键说明

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