private: void calculateFieldE(Rib* rib){ int axis = rib->getAxis(); Side* upSide = rib->getCell(Cell::ur)->getSide((axis+1)%3, Cell::BACKWARD_SIDE); Side* downSide = rib->getCell(Cell::dr)->getSide((axis+1)%3, Cell::BACKWARD_SIDE); Side* rightSide = rib->getCell(Cell::ur)->getSide((axis+2)%3, Cell::BACKWARD_SIDE); Side* leftSide = rib->getCell(Cell::ul)->getSide((axis+2)%3, Cell::BACKWARD_SIDE); double leftE = 1.0 / Constants::c * leftSide->getFlow(5 + (axis+1)%3 ); double rightE = 1.0 / Constants::c * rightSide->getFlow(5 + (axis+1)%3 ); double upE = -1.0 / Constants::c * upSide->getFlow(5 + (axis+2)%3 ); double downE = -1.0 / Constants::c * downSide->getFlow(5 + (axis+2)%3 ); double dE = 0.25 * (leftE + rightE + upE + downE) - rib->getE(); rib->setdE(dE); }
public: double getBorderFlowOnSide(Rib* rib, int sideIndex, int flowIndex){ int vIndex = 0; if(sideIndex == Rib::LEFT_SIDE) vIndex = Rib::RIGHT_SIDE; else if(sideIndex == Rib::RIGHT_SIDE) vIndex = Rib::LEFT_SIDE; else if(sideIndex == Rib::UP_SIDE) vIndex = Rib::DOWN_SIDE; else if(sideIndex == Rib::DOWN_SIDE) vIndex = Rib::UP_SIDE; Side* vside = rib->getSide(vIndex); return vside->getFlow(flowIndex); // return 0; };
public: double getBorderFlowOnSide(Rib* rib, int sideIndex, int flowIndex){ Side* side = rib->getSide(sideIndex); return side->getFlow(flowIndex); };