Line data Source code
1 : // Copyright (C) 2023 Helmut Schmidt University 2 : // This file is part of the Mamico project. For conditions of distribution 3 : // and use, please see the copyright notice in Mamico's main folder 4 : 5 : #include "coupling/solvers/LBCouetteSolver.h" 6 : 7 : using State = coupling::interface::PintableMacroSolverState; 8 : 9 16 : std::unique_ptr<State> coupling::solvers::LBCouetteSolverState::operator+(const State& rhs) { 10 16 : const LBCouetteSolverState* other = dynamic_cast<const LBCouetteSolverState*>(&rhs); 11 : 12 : #if (COUPLING_MD_ERROR == COUPLING_MD_YES) 13 16 : if(other == nullptr){ 14 0 : std::cout << "ERROR LBCouetteSolverState operator+ type mismatch" << std::endl; 15 0 : exit(EXIT_FAILURE); 16 : } 17 16 : if(other->_pdf.size() != _pdf.size()){ 18 0 : std::cout << "ERROR LBCouetteSolverState operator+ size mismatch" << std::endl; 19 0 : exit(EXIT_FAILURE); 20 : } 21 : #endif 22 : 23 16 : std::unique_ptr<LBCouetteSolverState> res = std::make_unique<LBCouetteSolverState>(*this); 24 64 : for(std::vector<double>::size_type i=0; i<_pdf.size(); ++i) 25 48 : res->_pdf[i] += other->_pdf[i]; 26 : 27 16 : return res; 28 16 : } 29 : 30 8 : std::unique_ptr<State> coupling::solvers::LBCouetteSolverState::operator-(const State& rhs) { 31 8 : const LBCouetteSolverState* other = dynamic_cast<const LBCouetteSolverState*>(&rhs); 32 : 33 : #if (COUPLING_MD_ERROR == COUPLING_MD_YES) 34 8 : if(other == nullptr){ 35 0 : std::cout << "ERROR LBCouetteSolverState operator- type mismatch" << std::endl; 36 0 : exit(EXIT_FAILURE); 37 : } 38 8 : if(other->_pdf.size() != _pdf.size()){ 39 0 : std::cout << "ERROR LBCouetteSolverState operator- size mismatch" << std::endl; 40 0 : exit(EXIT_FAILURE); 41 : } 42 : #endif 43 : 44 8 : std::unique_ptr<LBCouetteSolverState> res = std::make_unique<LBCouetteSolverState>(*this); 45 32 : for(std::vector<double>::size_type i=0; i<_pdf.size(); ++i) 46 24 : res->_pdf[i] -= other->_pdf[i]; 47 : 48 8 : return res; 49 8 : }