📄 lattice.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 + -