#include "tug/Boundary.hpp" #include #include #include using namespace Eigen; using namespace tug; int main(int argc, char *argv[]) { constexpr std::size_t row = 5; constexpr std::size_t col = 5; RowMajMat hydHeads = RowMajMat::Constant(row, col, 1); RowMajMat concentrations = RowMajMat::Constant(row, col, 0); Velocities velocities(hydHeads); velocities.setDomain(5, 5); velocities.setPermKX(RowMajMat::Constant(row, col, 3E-7)); velocities.setPermKY(RowMajMat::Constant(row, col, 3E-7)); velocities.setEpsilon(1E-8); Advection advection = Advection(concentrations, velocities); advection.setPorosity(RowMajMat::Constant(row, col, 0.2)); advection.setIterations(3); // 1 hour advection.setTimestep(1.6666e+06); // create boundaries Boundary &bcH = velocities.getBoundaryConditions(); bcH.setBoundarySideConstant(BC_SIDE_LEFT, 10); bcH.setBoundarySideConstant(BC_SIDE_RIGHT, 0); // bcH.setBoundarySideConstant(BC_SIDE_TOP, 1); // bcH.setBoundarySideConstant(BC_SIDE_BOTTOM, 1); // bcH.setInnerBoundary(row / 2, col / 2, 10); Boundary &bcC = advection.getBoundaryConditions(); bcC.setBoundarySideConstant(BC_SIDE_LEFT, 1); bcC.setBoundarySideConstant(BC_SIDE_RIGHT, 0); // bcC.setInnerBoundary(row / 2, col / 2, 1); // bcC.setBoundarySideConstant(BC_SIDE_LEFT, 0); // bcC.setBoundarySideConstant(BC_SIDE_RIGHT, 0); // bcC.setBoundarySideConstant(BC_SIDE_TOP, 0); // bcC.setBoundarySideConstant(BC_SIDE_BOTTOM, 0); advection.run(); std::cout << velocities.getConcentrationMatrix() << std::endl << std::endl; std::cout << velocities.getVelocitiesX() << std::endl << std::endl << velocities.getVelocitiesY() << std::endl << std::endl; std::cout << concentrations << std::endl; }