Advertisement
demeshko0

Untitled

Nov 19th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.06 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #define N_dx 100           // rasbienie po X
  5. #define N_times 1000
  6.  
  7.  
  8. class MD {
  9.     std::string s;
  10.     std::fstream f;
  11.     double x_min;
  12.     double x_max;
  13.     double y_min;
  14.     double y_max;
  15.     int index;
  16.     double x[];
  17.     double y[];
  18.     double rho [N_times][N_dx];
  19.  
  20. public:
  21.     void fileopen (std::string);
  22.     int read_head();
  23.     void read_state(int);
  24.     void obr_state(int,int);
  25. };
  26.  
  27.  
  28. void fileopen(std::string& fname){
  29.     f.open(fname);
  30. }
  31.  
  32.  
  33. int MD::read_head ()
  34. {
  35.     int n;
  36.     f>>s;f>>s;
  37.     f>>s;
  38.     f>>s;f>>s;f>>s;f>>s;
  39.     f>>n;                               // number of atoms
  40.     f>>s;f>>s;f>>s;f>>s;f>>s;f>>s;
  41.     f>>x_min;                           // chtenie razmerov
  42.     f>>x_max;                           // chtenie razmerov
  43.     f>>y_min;                           // chtenie razmerov
  44.     f>>y_max;  
  45.     f>>s;f>>s;
  46.     f>>s;f>>s;f>>s;f>>s;f>>s;
  47.     n=n/100;
  48.     return n;
  49. }
  50.  
  51. void MD::read_state (int N){
  52.    
  53.     for (int i=0; i<N; i++){
  54.         f>>index;
  55.         f>>x[index];
  56.         f>>y[index];
  57.     }
  58.  
  59. }
  60.  
  61. void MD::obr_state(int N,int t_index){
  62.     int n;
  63.     n=1000;                // kol-vo dx
  64.     int dn[n];
  65.     int dn_index;
  66.     double X;
  67.     double Y;
  68.     double dx;
  69.     double x_x;
  70.  
  71.      
  72.     dn_index=0;
  73.     X=(x_max-x_min);
  74.     Y=(y_max-y_min);
  75.     dx= X/n;                //
  76.     x_x= x_min + dx;
  77.  
  78.     for (int i=0;i<n;i++){                        // prohod po oblasti
  79.         for (int j=0;j<N;j++){                    // prohod po atomam
  80.             if (x[j]>=(x_x - dx) && x[j]<x_x){
  81.                 dn[i]++;
  82.             }
  83.             x_x+=dx;
  84.         }
  85.         dn_index ++;
  86.         rho[t_index][dn_index]=dn[i]/(Y*dx);
  87.     }
  88. }
  89.  
  90.  
  91. int main()
  92. {
  93.     int time_index;
  94.     int N;                  
  95.     MD Melt;
  96.     std::string Filename = "dump.melt";
  97.     time_index=0;
  98.  
  99.    
  100.     Melt.fileopen(Filename);
  101.     for (int i=0; i<N_times; i++){
  102.         N=Melt.read_head();
  103.         Melt.read_state(N);
  104.         Melt.obr_state(N,time_index);
  105.         time_index++;
  106.     }
  107.     return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement