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

📄 lattice.h

📁 用monte carlo方法计算化学反应的代码Oxygen Ion Ordering
💻 H
字号:
#ifndef LATTICE_H#define LATTICE_H#include <iostream>#include "material.h"#include "mpi.h"#include "printvector.h"#include <cmath>#include <fstream>#include <iomanip>#define top 0#define bottom 1#define left 2#define right 3#define front 4#define back 5#define req_size 12class Lattice{  friend void decompose(const int &num_procs, vector<int> &dims);  friend void get_cart(const vector<int> &dims, vector<vector<int> > &coords);  friend void find_neighboors(vector< vector<int> > &nbrs,const int &myid,			      const vector< vector<int> > &coords, const vector<int> &dims);  friend void MPE_DECOMP1D(const int &n, const int &numprocs, 			   const int &myid, int &s, int &e);  friend void My_send(const int &destination,const int &size,		      const int &x_len,const int &y_len, const int &z_len,const int &constant_index,		      vector< vector< vector <Material> > > &lat,MPI_Request &req,		      vector<int> &node_send);  friend void My_recv(const int &source,const int &size,		     MPI_Request &req, vector<int> &node_recv);  friend void parse_data(const int &source,const int &size,			const int &x_len,const int &y_len, const int &z_len,			const int &constant_index,			vector< vector< vector <Material> > > &lat,			MPI_Request &req,			vector<int> &node_recv); friend double calc_inner_wall(vector< vector< vector< Material > > > &lat,			       const int &startx, const int &endx,			       const int &starty, const int &endy,			       const int &startz, const int &endz,			       const vector <int> &nbrs, int &calc_E_count); friend void  get_start_and_end(int &startx,int &endx,				const vector< vector<int> > &sxy,				const int &X, const int &x,const int &index); friend void  get_start_and_end_interior(int &startx,int &endx,				const vector< vector<int> > &sxy,				const int &X, const int &x,const int &index); public: Lattice(const int &X,const int &Y,const int &Z, 	  const int &NUM_PROCS, const int &MYID,	  vector<int> Dims);  ~Lattice();  int Init();  void exchange();  void inner_comps();  void outer_comps();  void exterior_walls();  void interior_walls();  void wait();  double get_E_crystal();  void get_W();  void rand_flip(int &index_i, int &index_j, int &index_k, int &proc, int &node);  void set_temperature(const int &t){Temperature = t;};  void adjust_E_crystal(int &index_i, int &index_j, int &index_k, int &proc, int &node); private:  int x,y,z, num_procs,myid;  int num_procs_bad;  int Temperature;  vector<int> dims;  vector< vector<int> > coords, nbrs;  vector< vector< vector <Material> > > lat;  vector< vector< Material> > recv,send;  vector< vector< int > > node_send, node_recv;  Material My_null;  vector< vector<int> > sxy;  vector< vector<double> > w;  MPI_Request request[req_size];  MPI_Status status[req_size];  int calc_E_count;  double E_crystal;  vector<double> offset;  double w_length;};#endif

⌨️ 快捷键说明

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