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

📄 sx02.c

📁 解决很多地下水数值模拟问题
💻 C
字号:
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <conio.h>

    int TRIDAG(int i,int k);
    float H[11],a[11],b[11],c[11],d[11];
    int main()
    {
/*       PRACTICE 02 (D1 IMPLICIT METHOD)*/
    float KM,MU,LAMDA;
    float DX,DT;
/*  float  H[11],a[11],b[11],c[11],d[11];  */
    float TIME;
    int NP,NP01,ndt,mdt;
    int ICOUNT,IPRINT;
    int i;

    KM=20.0;
    MU=0.002;

    NP=11;
/*  NP1=NP+1;*/
    NP01=NP-1;
    ndt=70;
    DX=10.0;
    DT=0.005;
    LAMDA=KM*DT/(MU*DX*DX);
    printf("\nLAMDA=%5.2f\n",LAMDA);

    for(i=1;i<NP01;i++)
    {a[i]=-LAMDA;
     b[i]=1+2*LAMDA;
     c[i]=-LAMDA;
    }

    for(i=0;i<NP;i++)
    {H[i]=16;}

    H[0]=16.0;
    H[NP-1]=16.0;

    printf("\nTime           Head\n\n");

    TIME=0.0;
    ICOUNT=1;
    IPRINT=4;

    for(mdt=0;mdt<ndt;mdt++)
    {
     TIME=TIME+DT;
     H[0]=16.0+TIME*exp(-TIME);
     H[NP-1]=16.0-TIME*exp(-TIME);

     for(i=1;i<NP01;i++)
     {d[i]=H[i];
     }
     d[1]=d[1]+LAMDA*H[0];
     d[NP-2]=d[NP-2]+LAMDA*H[NP-1];
     TRIDAG(1,NP-2);

    if(ICOUNT==IPRINT)
    {
    printf("%5.2f",TIME);
     for(i=0;i<NP;i++)
     {
      printf("%6.2f",H[i]);
     }
    printf("\n");
    ICOUNT=1;
    }
    else
    {
    ICOUNT=ICOUNT+1;
    }
  /*    for(i=1;i<NP01;i++)
    {
     H0[i]=H[i];
     }*/
    }
    return 0;
    }

    int TRIDAG( int IF,int L)
    {
    int ii,i,j;
    float beta[11],gamma[11];
    beta[IF]=b[IF];
    gamma[IF]=d[IF]/beta[IF];
    for(i=IF+1;i<L+1;i++)
    {
     beta[i]=b[i]-a[i]*c[i-1]/beta[i-1];
     gamma[i]=(d[i]-a[i]*gamma[i-1])/beta[i];
     }
     H[L]=gamma[L];
     ii=L-IF;
     for(j=1;j<ii+1;j++)
      {
       i=L-j;
       H[i]=gamma[i]-c[i]*H[i+1]/beta[i];
      }
    return 0;
    }

⌨️ 快捷键说明

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