Facebook
From Lousy Iguana, 6 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 276
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <iomanip>
  5.  
  6. using namespace std;
  7. const double eps = 1e-12;
  8. boolosobliwa=false;
  9. class point
  10. {
  11.       public:
  12.              double temp;
  13. int x;
  14. intwarunek;                          
  15. };
  16.  
  17. class element
  18. {
  19.       public:
  20.              point nop1;
  21.              point nop2;                    
  22. };
  23. class grid
  24. {
  25. int points;
  26. int elements;
  27.              point *punkt;
  28.              element * elem;            
  29. };
  30. boolfgauss(int n, double **A, double *&X)
  31. {
  32. inti,j,k;
  33.   double m,s;
  34.   for(i = 0; i < n - 1; i++){
  35.                 for(j = i + 1; j < n; j++){
  36.                 if(fabs(A[i][i]) <eps) return false;
  37. m = -A[j][i] / A[i][i];
  38.                 for(k = i + 1; k <= n; k++) A[j][k] += m * A[i][k];
  39.                 }
  40.   }
  41.         for(i = n - 1; i >= 0; i--){
  42.     s = A[i][n];
  43.     for(j = n - 1; j >= i + 1; j--) s -= A[i][j] * X[j];
  44. if(fabs(A[i][i]) <eps) return false;
  45.     X[i] = s/A[i][i];
  46.   }
  47.   return true;
  48. }
  49. int main()
  50. {
  51.     grid *siatka;
  52.  
  53.     double S=1;
  54.     double k=75;
  55.     double L=10;
  56.     double alpha=10;
  57.     double q=-150;
  58.     double Lelem;
  59.     double tempo=40;
  60. intilosc_elementow=10;
  61. intilosc_punktow;
  62.  
  63. Lelem=L/ilosc_elementow;
  64. ilosc_punktow = ilosc_elementow+1;
  65.  
  66.     double **GlobalH= new double *[ilosc_punktow];
  67.     for(int i=0; i<ilosc_punktow; i++)
  68.     {
  69. GlobalH[i] = new double [ilosc_punktow+1];
  70.     }
  71.  
  72.     for(int i=0; i<ilosc_punktow; i++)
  73.     {
  74.             for(int j=0; j<ilosc_punktow+1; j++)
  75.             {
  76. GlobalH[i][j] = 0;
  77.             }
  78.     }
  79.     element *tabElem=new element [ilosc_elementow];
  80.     point *tabPkt = new point [ilosc_punktow];
  81.  
  82.     for(int i=0; i<ilosc_elementow; i++)
  83. {      
  84. tabElem[i].nop1.x= i;
  85. tabElem[i].nop2.x= i+1;
  86. }
  87.     for(int i=0; i<ilosc_punktow; i++)
  88.     {
  89.             if(i==0)
  90. {
  91. tabElem[i].nop1.warunek=1;  
  92.             }
  93. elseif (i==ilosc_elementow)
  94. tabElem[i].nop2.warunek=2;
  95. else
  96.             {
  97. tabElem[i].nop1.warunek=0;  
  98. tabElem[i].nop2.warunek=0;
  99.             }            
  100.     }
  101.     for(int i=0; i<ilosc_elementow; i++)
  102. {
  103. if(tabElem[i].nop1.warunek==1)        
  104. GlobalH[tabElem[i].nop1.x][ilosc_punktow]=-(q*S);
  105.          /*elseif (tabElem[i].nop2.warunek==2)
  106.          {
  107. GlobalH[tabElem[i].nop2.x][ilosc_punktow+1]= alpha*S*tempo;
  108. GlobalH[tabElem[i].nop2.x][tabElem[i].nop2.x] +=alpha*S;
  109.          }*/
  110. GlobalH[tabElem[i].nop1.x][tabElem[i].nop1.x]+= (S*k)/Lelem;
  111. GlobalH[tabElem[i].nop1.x][tabElem[i].nop2.x]+= -((S*k)/Lelem);
  112. GlobalH[tabElem[i].nop2.x][tabElem[i].nop1.x]+= -((S*k)/Lelem);
  113. GlobalH[tabElem[i].nop2.x][tabElem[i].nop2.x]+= (S*k)/Lelem;
  114.  
  115. }
  116. GlobalH[ilosc_elementow][ilosc_elementow] +=alpha*S;
  117. GlobalH[ilosc_elementow][ilosc_punktow]= alpha*S*tempo;
  118.  
  119.     for(int i=0; i<ilosc_punktow; i++)
  120.     {
  121.             for(int j=0; j< ilosc_punktow+1; j++)
  122. cout<<GlobalH[i][j]<<" ";
  123. cout<<endl;
  124. cout<<endl;
  125.     }
  126.     double *GlobalT = new double [ilosc_punktow];
  127. for(int i=0; i<ilosc_punktow; i++)
  128.     {
  129. GlobalT[i]=0;
  130.     }
  131.     double **Gauss = new double *[ilosc_elementow];
  132.     for(int i=0; i<ilosc_elementow;i++)
  133.     {
  134.             *Gauss= new double [ilosc_elementow+1];
  135. }
  136.  
  137. fgauss(ilosc_punktow,GlobalH,GlobalT);
  138.  
  139.     for(int i=0; i<ilosc_punktow; i++)
  140.     {
  141. cout<<"t"<<i<<" = "<<GlobalT[i]<<endl;;
  142.     }
  143. cout<<endl;
  144. system("PAUSE");
  145. return 0;
  146. }
  147.