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

📄 串行源程序.txt

📁 串行运算的原代码,单机实现计算,程序写的很不错,
💻 TXT
📖 第 1 页 / 共 3 页
字号:
{int i,j,k,i1,j1,k1;
  float e=E1,x1,y1,z1;
	for(j=0;j<=Y;j++)
     for(k=1;k<=Z2;k++)
        {ex2[X2][j][k]=0;
         ey2[X2][j][k]=0;
         ez2[X2][j][k]=0;}
    for(i=0;i<=X2-1;i++)
     for(j=1;j<=Y-1;j++)
      for(k=0;k<=Z2-1;k++)
       {if (i==0)
           {j1=j-1;
            k1=k+1;
            x1=hz2[i][j][k]-hz2[i][j1][k]+hy2[i][j][k1]-hy2[i][j][k];
	         ex2[i][j][k]=ex2[i][j][k]+dt/(e*dr)*x1;
	         ey2[0][j][k]=0;
            ez2[0][j][k]=0;}
        else {i1=i-1;
              j1=j-1;
              k1=k+1;
              x1=hz2[i][j][k]-hz2[i][j1][k]+hy2[i][j][k1]-hy2[i][j][k];
	           ex2[i][j][k]=ex2[i][j][k]+dt/(e*dr)*x1;
	           y1=hx2[i][j][k]-hx2[i][j][k1]+hz2[i1][j][k]-hz2[i][j][k];
              ey2[i][j][k]=ey2[i][j][k]+dt/(e*dr)*y1;
	           z1=hy2[i][j][k]-hy2[i1][j][k]+hx2[i][j1][k]-hx2[i][j][k];
              ez2[i][j][k]=ez2[i][j][k]+dt/(e*dr)*z1;}      }
}



 void murx(int g)
  { int gg,m,j,k;
    float w1,w2,w3,w4,w5;
    gg=abs(g-1);
    if (g==0) m=0;
    else m=5;
    for(j=0;j<=Y;j++)
     for(k=0;k<=Z1;k++)
      {xey[j][k][m+4]=ey1[gg][j][k];
       xez[j][k][m+4]=ez1[gg][j][k];}
    for(j=1;j<=Y-1;j++)
     for(k=1;k<=Z1-1;k++)
      {w1=xey[j][k][m+4]+xey[j][k][m+1];
       w2=xey[j][k][m+2]+xey[j][k][m];
       w3=xey[j+1][k][m+2]-4*xey[j][k][m]-4*xey[j][k][m+2];
       w4=xey[j-1][k][m+2]+xey[j+1][k][m]+xey[j-1][k][m];
       w5=xey[j][k+1][m+2]+xey[j][k-1][m+2]+xey[j][k+1][m]+xey[j][k-1][m];
       ey1[g][j][k]=-xey[j][k][m+3]+A*w1+B*w2+C*(w3+w4+w5); }
    for(j=1;j<=Y-1;j++)
     for(k=1;k<=Z1-1;k++)
      {w1=xez[j][k][m+4]+xez[j][k][m+1];
       w2=xez[j][k][m+2]+xez[j][k][m];
       w3=xez[j+1][k][m+2]-4*xez[j][k][m]-4*xez[j][k][m+2];
       w4=xez[j-1][k][m+2]+xez[j+1][k][m]+xez[j-1][k][m];
       w5=xez[j][k+1][m+2]+xez[j][k-1][m+2]+xez[j][k+1][m]+xez[j][k-1][m];
       ez1[g][j][k]=-xez[j][k][m+3]+A*w1+B*w2+C*(w3+w4+w5); }
    for(j=0;j<=Y;j++)
     for(k=0;k<=Z1;k++)
      {xey[j][k][m+1]=xey[j][k][m];
       xey[j][k][m]=ey1[g][j][k];
       xey[j][k][m+3]=xey[j][k][m+2];
       xey[j][k][m+2]=xey[j][k][m+4];
       xez[j][k][m+1]=xez[j][k][m];
       xez[j][k][m]=ez1[g][j][k];
       xez[j][k][m+3]=xez[j][k][m+2];
       xez[j][k][m+2]=xez[j][k][m+4];}
   }

    void mury1(int g)
  { int gg,m,i,k;
    float w1,w2,w3,w4,w5;
    gg=abs(g-1);
    if (g==0) m=0;
    else m=5;
    for (i=0;i<=X1;i++)
     for (k=0;k<=Z1;k++)
      { yexb[i][k][m+4]=ex1[i][gg][k];
        yezb[i][k][m+4]=ez1[i][gg][k]; }
    for (i=1;i<=X1-1;i++)
     for (k=1;k<=Z1-1;k++)
      { w1=yexb[i][k][m+4]+yexb[i][k][m+1];
        w2=yexb[i][k][m+2]+yexb[i][k][m];
        w3=yexb[i+1][k][m+2]-4*yexb[i][k][m]-4*yexb[i][k][m+2];
        w4=yexb[i-1][k][m+2]+yexb[i+1][k][m]+yexb[i-1][k][m];
        w5=yexb[i][k+1][m+2]+yexb[i][k-1][m]+yexb[i][k+1][m]+yexb[i][k-1][m+2];
        ex1[i][g][k]=-yexb[i][k][m+3]+A*w1+B*w2+C*(w3+w4+w5); }
    for (i=1;i<=X1-1;i++)
     for (k=1;k<=Z1-1;k++)
      { w1=yezb[i][k][m+4]+yezb[i][k][m+1];
        w2=yezb[i][k][m+2]+yezb[i][k][m];
        w3=yezb[i+1][k][m+2]-4*yezb[i][k][m]-4*yezb[i][k][m+2];
        w4=yezb[i-1][k][m+2]+yezb[i+1][k][m]+yezb[i-1][k][m];
        w5=yezb[i][k+1][m+2]+yezb[i][k-1][m]+yezb[i][k+1][m]+yezb[i][k-1][m+2];
        if ((i==30 || i==50) && k<=35) ez1[i][g][k]=0;
        else ez1[i][g][k]=-yezb[i][k][m+3]+A*w1+B*w2+C*(w3+w4+w5); }
    for (i=0;i<=X1;i++)
     for (k=0;k<=Z1;k++)
      {yexb[i][k][m+1]=yexb[i][k][m];
       yezb[i][k][m+1]=yezb[i][k][m];
       yexb[i][k][m]=ex1[i][g][k];
       yezb[i][k][m]=ez1[i][g][k];
       yexb[i][k][m+3]=yexb[i][k][m+2];
       yexb[i][k][m+2]=yexb[i][k][m+4];
       yezb[i][k][m+3]=yezb[i][k][m+2];
       yezb[i][k][m+2]=yezb[i][k][m+4];}
  }

      void mury2(int g)
  { int gg,m,i,k,k1;
    float w1,w2,w3,w4,w5;
    gg=abs(g-1);
    if (g==0) m=0;
    else m=5;
    for(i=0;i<=X2;i++)
     {yexs[i][0][m+4]=yexb[i+30][1][m+4];
      yezs[i][0][m+4]=yexb[i+30][1][m+4];}
    for (i=0;i<=X2;i++)
     for (k=0;k<=Z2;k++)
      { yexs[i][k+1][m+4]=ex2[i][gg][k];
        yezs[i][k+1][m+4]=ez2[i][gg][k];}
    for (i=1;i<=X2-1;i++)
     for (k=0;k<=Z2-1;k++)
      { k1=k+1;
        w1=yexs[i][k1][m+4]+yexs[i][k1][m+1];
        w2=yexs[i][k1][m+2]+yexs[i][k1][m];
        w3=yexs[i+1][k1][m+2]-4*yexs[i][k1][m]-4*yexs[i][k1][m+2];
        w4=yexs[i-1][k1][m+2]+yexs[i+1][k1][m]+yexs[i-1][k1][m];
        w5=yexs[i][k1+1][m+2]+yexs[i][k1-1][m]+yexs[i][k1+1][m]+yexs[i][k1-1][m+2];
        ex2[i][g][k]=-yexs[i][k1][m+3]+A*w1+B*w2+C*(w3+w4+w5); }
    for (i=1;i<=X2-1;i++)
     for (k=0;k<=Z2-1;k++)
      { k1=k+1;
        w1=yezs[i][k1][m+4]+yezs[i][k1][m+1];
        w2=yezs[i][k1][m+2]+yezs[i][k1][m];
        w3=yezs[i+1][k1][m+2]-4*yezs[i][k1][m]-4*yezs[i][k1][m+2];
        w4=yezs[i-1][k1][m+2]+yezs[i+1][k1][m]+yezs[i-1][k1][m];
        w5=yezs[i][k1+1][m+2]+yezs[i][k1-1][m]+yezs[i][k1+1][m]+yezs[i][k1-1][m+2];
        ez2[i][g][k]=-yezs[i][k1][m+3]+A*w1+B*w2+C*(w3+w4+w5); }
    for (i=0;i<=X2;i++)
     for (k=0;k<=Z2+1;k++)
      {yexs[i][k][m+1]=yexs[i][k][m];
       yezs[i][k][m+1]=yezs[i][k][m];
       yexs[i][k][m+3]=yexs[i][k][m+2];
       yexs[i][k][m+2]=yexs[i][k][m+4];
       yezs[i][k][m+3]=yezs[i][k][m+2];
       yezs[i][k][m+2]=yezs[i][k][m+4];}
    for (i=0;i<=X2;i++)
     for (k=0;k<=Z2;k++)
       { k1=k+1;
         yexs[i][k1][m]=ex2[i][g][k];
         yezs[i][k1][m]=ez2[i][g][k];}
    for (i=0;i<=X2;i++)
      { yexs[i][0][m]=ex1[i+30][g][1];
        yezs[i][0][m]=ez1[i+30][g][1];}
    for(i=0;i<=X2;i++)
      { ex1[i+30][g][0]=yexs[i][1][m];
        ez1[i+30][g][0]=yezs[i][1][m];
        yexb[i+30][0][m]=yexs[i][1][m];
        yezb[i+30][0][m]=yexs[i][1][m];}
  }

  void murz(int g,int xs,int xf,int yf)
  { int gg,m,tx,i,j,i1;
    float w1,w2,w3,w4,w5,tempx,tempy;
    gg=abs(g-1);
    if (g==Z1) m=0;
    else m=5;
    if (xf==X2-1) tx=31;
    else if(xs==51) tx=2;
    else tx=0;
    for(j=0;j<=Y;j++)
     for(i=xs-1;i<=xf+1;i++)
       { i1=i+tx;
         if(xf==X2-1){zex[i1][j][m+4]=ex2[i][j][gg];
                      zey[i1][j][m+4]=ey2[i][j][gg];}
         else {zex[i1][j][m+4]=ex1[i][j][gg];
               zey[i1][j][m+4]=ey1[i][j][gg];} }
    for (i=xs;i<=xf;i++)
     for (j=1;j<=yf;j++)
      {i1=i+tx;
       w1=zex[i1][j][m+4]+zex[i1][j][m+1];
       w2=zex[i1][j][m+2]+zex[i1][j][m];
       w3=zex[i1+1][j][m+2]-4*zex[i1][j][m]-4*zex[i1][j][m+2];
       w4=zex[i1-1][j][m+2]+zex[i1+1][j][m]+zex[i1-1][j][m];
       w5=zex[i1][j+1][m+2]+zex[i1][j-1][m+2]+zex[i1][j+1][m]+zex[i1][j-1][m];
       tempx=-zex[i1][j][m+3]+A*w1+B*w2+C*(w3+w4+w5);
       if(xf==X2-1) ex2[i][j][g]=tempx;
       else ex1[i][j][g]=tempx; }
    for (i=xs;i<=xf;i++)
     for (j=1;j<=yf;j++)
      {i1=i+tx;
       w1=zey[i1][j][m+4]+zey[i1][j][m+1];
       w2=zey[i1][j][m+2]+zey[i1][j][m];
       w3=zey[i1+1][j][m+2]-4*zey[i1][j][m]-4*zey[i1][j][m+2];
       w4=zey[i1-1][j][m+2]+zey[i1+1][j][m]+zey[i1-1][j][m];
       w5=zey[i1][j+1][m+2]+zey[i1][j-1][m+2]+zey[i1][j+1][m]+zey[i1][j-1][m];
       tempy=-zey[i1][j][m+3]+A*w1+B*w2+C*(w3+w4+w5);
       if(xf==X2-1) ey2[i][j][g]=tempy;
       else ey1[i][j][g]=tempy; }
    for (j=0;j<=Y;j++)
     for (i=xs-1;i<=xf+1;i++)
       {i1=i+tx;
        zex[i1][j][m+1]=zex[i1][j][m];
        zey[i1][j][m+1]=zey[i1][j][m];
        if(xf==X2-1) { zex[i1][j][m]=ex2[i][j][Z2];
                       zey[i1][j][m]=ey2[i][j][Z2];}
        else {zex[i1][j][m]=ex1[i][j][g];
              zey[i1][j][m]=ey1[i][j][g]; }
        zex[i1][j][m+3]=zex[i1][j][m+2];
        zex[i1][j][m+2]=zex[i1][j][m+4];
        zey[i1][j][m+3]=zey[i1][j][m+2];
        zey[i1][j][m+2]=zey[i1][j][m+4]; }

  }

void liaoy(int xx,int zz)
 { int m,m0,tx,tx0,nl,nl0,ml,ml0,lm,l,i,j,i1,i2;
   float r,temp,tempy1[Y+1],tempy2[Y+1];
   if (xx==0) {m=0;tx0=0;}
   else {m=7;tx0=15;}
   if (zz==0) {m0=0;tx=0;}
   else {m0=7;tx=15;}
   for (j=0;j<=Y;j++)
    {ez1[xx][j][zz]=0;
     nl=m;
     for(l=1;l<=7;l++)
      {r=0;
       lm=2*l;
       for(ml=0;ml<=lm;ml++)
        {ml0=ml+tx;
         r=r+tt[l][ml]*yez1[j][ml0][nl];}
       temp=pow(-1,l+1)*c7[l]*r;
       ez1[xx][j][zz]=ez1[xx][j][zz]+temp;
       nl++;} }
   for (j=0;j<=Y;j++)
    {ex1[xx][j][zz]=0;
     nl=m0;
     for(l=1;l<=7;l++)
      {r=0;
       lm=2*l;
       for(ml=0;ml<=lm;ml++)
        {ml0=ml+tx0;
         r=r+tt[l][ml]*yex2[j][ml0][nl];}
       temp=pow(-1,l+1)*c7[l]*r;
       ex1[xx][j][zz]=ex1[xx][j][zz]+temp;
       nl++;} }
   for (j=0;j<=Y;j++)
    {tempy1[j]=0;
     nl=m;
     for(l=1;l<=7;l++)
      {r=0;
       lm=2*l;
       for(ml=0;ml<=lm;ml++)
        {ml0=ml+tx;
         r=r+tt[l][ml]*yey1[j][ml0][nl];}
       temp=pow(-1,l+1)*c7[l]*r;
       tempy1[j]=tempy1[j]+temp;
       nl++; }  }
   for (j=0;j<=Y;j++)
    {tempy2[j]=0;
     nl=m0;
     for(l=1;l<=7;l++)
      {r=0;
       lm=2*l;
       for(ml=0;ml<=lm;ml++)
        {ml0=ml+tx0;
         r=r+tt[l][ml]*yey2[j][ml0][nl];}
       temp=pow(-1,l+1)*c7[l]*r;
       tempy2[j]=tempy2[j]+temp;
       nl++; }  }
   for(j=0;j<=Y;j++)
     {ey1[xx][j][zz]=(tempy1[j]+tempy2[j])/2; }
   for(j=0;j<=Y;j++)
    for(i=0;i<=14;i++)
     for(nl=6;nl>=1;nl--)
     { i1=i+tx;
       nl0=nl+m;
       yey1[j][i1][nl0]=yey1[j][i1][nl0-1];
       yez1[j][i1][nl0]=yez1[j][i1][nl0-1]; }
   for(j=0;j<=Y;j++)
    for(i=0;i<=14;i++)
     for(nl=6;nl>=1;nl--)
     { i1=i+tx0;
       nl0=nl+m0;
       yey2[j][i1][nl0]=yey2[j][i1][nl0-1];
       yex2[j][i1][nl0]=yex2[j][i1][nl0-1]; }
   for(j=0;j<=Y;j++)
    for(i=0;i<=14;i++)
    { i1=i+tx;
      if(zz==0) i2=zz+i;
      else i2=zz-i;
      yey1[j][i1][m]=ey1[xx][j][i2];
      yez1[j][i1][m]=ez1[xx][j][i2];}
   for(j=0;j<=Y;j++)
    for(i=0;i<=14;i++)
    { i1=i+tx0;
      if(xx==0) i2=xx+i;
      else i2=xx-i;
      yey2[j][i1][m0]=ey1[i2][j][zz];
      yex2[j][i1][m0]=ex1[i2][j][zz]; }
 }

 void liaoz(int xx,int yy)
 { int m,m0,tx,tx0,nl,nl0,ml,ml0,lm,l,i,k,i1,i2;
   float r,temp,tempz1[Z1+1],tempz2[Z1+1];
   if (xx==0) {m=0;tx0=0;}
   else {m=7;tx0=15;}
   if (yy==0) {m0=0;tx=0;}
   else {m0=7;tx=15;}
   for (k=0;k<=Z1;k++)
    {ey1[xx][yy][k]=0;
     nl=m;
     for(l=1;l<=7;l++)
      {r=0;
       lm=2*l;
       for(ml=0;ml<=lm;ml++)
        {ml0=ml+tx;
         r=r+tt[l][ml]*zey1[k][ml0][nl];}
       temp=pow(-1,l+1)*c7[l]*r;
       ey1[xx][yy][k]=ey1[xx][yy][k]+temp;
       nl++;} }
   for (k=0;k<=Z1;k++)
    {ex1[xx][yy][k]=0;
     nl=m0;
     for(l=1;l<=7;l++)
      {r=0;
       lm=2*l;
       for(ml=0;ml<=lm;ml++)
        {ml0=ml+tx0;
         r=r+tt[l][ml]*zex2[k][ml0][nl];}
       temp=pow(-1,l+1)*c7[l]*r;
       ex1[xx][yy][k]=ex1[xx][yy][k]+temp;
       nl++;} }
   for (k=0;k<=Z1;k++)
    {tempz1[k]=0;
     nl=m;
     for(l=1;l<=7;l++)
      {r=0;
       lm=2*l;
       for(ml=0;ml<=lm;ml++)
        {ml0=ml+tx;
         r=r+tt[l][ml]*zez1[k][ml0][nl];}
       temp=pow(-1,l+1)*c7[l]*r;
       tempz1[k]=tempz1[k]+temp;
       nl++; }  }
   for (k=0;k<=Z1;k++)
    {tempz2[k]=0;
     nl=m0;
     for(l=1;l<=7;l++)
      {r=0;
       lm=2*l;
       for(ml=0;ml<=lm;ml++)
        {ml0=ml+tx0;
         r=r+tt[l][ml]*zez2[k][ml0][nl];}
       temp=pow(-1,l+1)*c7[l]*r;
       tempz2[k]=tempz2[k]+temp;
       nl++; }  }
   for(k=0;k<=Z1;k++)
     {ez1[xx][yy][k]=(tempz1[k]+tempz2[k])/2; }
   for(k=0;k<=Z1;k++)
    for(i=0;i<=14;i++)
     for(nl=6;nl>=1;nl--)
     { i1=i+tx;
       nl0=nl+m;
       zey1[k][i1][nl0]=zey1[k][i1][nl0-1];
       zez1[k][i1][nl0]=zez1[k][i1][nl0-1]; }
   for(k=0;k<=Z1;k++)

⌨️ 快捷键说明

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