/* Copyright 2013--2018 James E. McClure, Virginia Polytechnic & State University Copyright Equnior ASA This file is part of the Open Porous Media project (OPM). OPM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OPM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OPM. If not, see . */ /* * Multi-relaxation time LBM Model */ #include #include #include #include #include #include #include #include "common/ScaLBL.h" #include "common/Communication.h" #include "common/MPI.h" #include "analysis/Minkowski.h" #include "ProfilerApp.h" class ScaLBL_MRTModel { public: ScaLBL_MRTModel(int RANK, int NP, const Utilities::MPI &COMM); ~ScaLBL_MRTModel(); // functions in they should be run void ReadParams(string filename); void ReadParams(std::shared_ptr db0); void SetDomain(); void ReadInput(); void Create(); void Initialize(); void Run(); void VelocityField(); bool Restart, pBC; int timestep, timestepMax; int ANALYSIS_INTERVAL; int BoundaryCondition; double tau, mu; double Fx, Fy, Fz, flux; double din, dout; double tolerance; int Nx, Ny, Nz, N, Np; int rank, nprocx, nprocy, nprocz, nprocs; double Lx, Ly, Lz; std::shared_ptr Dm; // this domain is for analysis std::shared_ptr Mask; // this domain is for lbm std::shared_ptr ScaLBL_Comm; // input database std::shared_ptr db; std::shared_ptr domain_db; std::shared_ptr mrt_db; std::shared_ptr vis_db; IntArray Map; DoubleArray Distance; int *NeighborList; double *fq; double *Velocity; double *Pressure; //Minkowski Morphology; DoubleArray Velocity_x; DoubleArray Velocity_y; DoubleArray Velocity_z; private: Utilities::MPI comm; // filenames char LocalRankString[8]; char LocalRankFilename[40]; char LocalRestartFile[40]; //int rank,nprocs; void LoadParams(std::shared_ptr db0); };