Exemple #1
0
	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);
	};