Commit 9936351b by Santiago Ospina

`Merge branch '62-gradientfluxadapter-problem' into 101-couple-the-transportsimulation-with-richardssimulation`
parents e58e7707 95d0a970
 ... ... @@ -97,6 +97,22 @@ Executing the Program Analyzing Results ----------------- Fluxes in DORiE =============== Depending on the application for what you want to use DORiE, there might be the case that it is needed something more elaborated than the default fluxes that DORiE provides. Therefore, this section explains how to interpret the default fluxes and the flux reconstruction technique used to solve solute transport problems. Understanding the water flux output ----------------------------------- Firstly, we have to recall that DORiE solves a Discontinuous Galerking finite element problem with *matric head* as unknown. It means that the solution of the *matric head* (and therefore the *water flux*) is continuous only element-wise, or in other words, it is discontinuous on the intersections between elements. On the other hand, the dG method solves *numerical fluxes* on the intersections between elements composed together with a penalty term that increases with respect to the discontinuity of the *matric head*. This ensures that the local solution is conservative while keeps the discontinuity as low as possible. From the description above one can infer that one has to distinguish between *water fluxes* at the interior of each element and at the intersections of all elements (we call these intersections skeleton of the grid). Unfortunately, there is no a standard form to write the skeleton fluxes on formats like VTK and that's the main reason why DORiE only provides the interior fluxes. However, assuming one can write both fluxes into some output format, they are still discontinuous (notice that direct use of discontinuous fluxes are useless for conservative computations since the transported quantities are very likely to get stagnated or over-transported in the nearby of intersections between elements). It means that it is needed some sort of post-processing that ensures that the *water mass* is still locally and globally conserved. Flux reconstruction ------------------- TODO Examples ======== ... ...
 ... ... @@ -152,12 +152,12 @@ int main(int argc, char** argv) sim.run(); break; } case 3:{ Sim> sim(inifile, grid_mapper, helper); sim.set_policy(adapt_policy); sim.run(); break; } // case 3:{ * // Sim> sim(inifile, grid_mapper, helper); // sim.set_policy(adapt_policy); // sim.run(); // break; // } default: DUNE_THROW(Dune::NotImplemented,"Finite Element Order (grid.FEorder) not supported!"); } ... ... @@ -223,24 +223,24 @@ int main(int argc, char** argv) Dune::Dorie::GridCreator> grid_creator(inifile, helper); auto grid_mapper = grid_creator.get_mapper(); switch(FEorder){ case 1:{ Sim> sim(inifile, grid_mapper, helper); sim.set_policy(adapt_policy); sim.run(); break; } case 2:{ Sim> sim(inifile, grid_mapper, helper); sim.set_policy(adapt_policy); sim.run(); break; } case 3:{ Sim> sim(inifile, grid_mapper, helper); sim.set_policy(adapt_policy); sim.run(); break; } // case 1:{ * // Sim> sim(inifile, grid_mapper, helper); // sim.set_policy(adapt_policy); // sim.run(); // break; // } // case 2:{ * // Sim> sim(inifile, grid_mapper, helper); // sim.set_policy(adapt_policy); // sim.run(); // break; // } // case 3:{ * // Sim> sim(inifile, grid_mapper, helper); // sim.set_policy(adapt_policy); // sim.run(); // break; // } default: DUNE_THROW(Dune::NotImplemented,"Finite Element Order (grid.FEorder) not supported!"); } ... ... @@ -262,12 +262,12 @@ int main(int argc, char** argv) sim.run(); break; } case 3:{ Sim> sim(inifile, grid_mapper, helper); sim.set_policy(adapt_policy); sim.run(); break; } // case 3:{ * // Sim> sim(inifile, grid_mapper, helper); // sim.set_policy(adapt_policy); // sim.run(); // break; // } default: DUNE_THROW(Dune::NotImplemented,"Finite Element Order (grid.FEorder) not supported!"); } ... ... @@ -286,11 +286,11 @@ int main(int argc, char** argv) sim.run(); break; } case 3:{ Sim> sim(inifile, grid_mapper, helper); sim.run(); break; } // case 3:{ * // Sim> sim(inifile, grid_mapper, helper); // sim.run(); // break; // } default: DUNE_THROW(Dune::NotImplemented,"Finite Element Order (grid.FEorder) not supported!"); } ... ...
 ... ... @@ -3,13 +3,13 @@ #endif #include #include #include namespace Dune{ namespace Dorie{ template class RichardsSimulation,Geo::cube>,1>>; template class RichardsSimulation,Geo::simplex>,1>>; template class CoupledSimulation,Geo::cube>,1,0>>; template class CoupledSimulation,Geo::simplex>,1,0>>; } // namespace Dorie } // namespace Dune \ No newline at end of file
 ... ... @@ -3,13 +3,13 @@ #endif #include #include #include namespace Dune{ namespace Dorie{ template class RichardsSimulation,Geo::cube>,2>>; template class RichardsSimulation,Geo::simplex>,2>>; template class CoupledSimulation,Geo::cube>,2,0>>; template class CoupledSimulation,Geo::simplex>,2,0>>; } // namespace Dorie } // namespace Dune \ No newline at end of file
 ... ... @@ -3,13 +3,13 @@ #endif #include #include #include namespace Dune{ namespace Dorie{ template class RichardsSimulation,Geo::cube>,3>>; template class RichardsSimulation,Geo::simplex>,3>>; template class CoupledSimulation,Geo::cube>,3,0>>; // template class CoupledSimulation,Geo::simplex>,3,0>>; * } // namespace Dorie } // namespace Dune \ No newline at end of file
 ... ... @@ -3,13 +3,13 @@ #endif #include #include #include namespace Dune{ namespace Dorie{ template class RichardsSimulation,Geo::cube>,1>>; template class RichardsSimulation,Geo::simplex>,1>>; template class CoupledSimulation,Geo::cube>,1,0>>; // template class CoupledSimulation,Geo::simplex>,1,0>>; * } // namespace Dorie } // namespace Dune \ No newline at end of file
 ... ... @@ -3,13 +3,13 @@ #endif #include #include #include namespace Dune{ namespace Dorie{ template class RichardsSimulation,Geo::cube>,2>>; template class RichardsSimulation,Geo::simplex>,2>>; template class CoupledSimulation,Geo::cube>,2,0>>; // template class CoupledSimulation,Geo::simplex>,2,0>>; * } // namespace Dorie } // namespace Dune
 ... ... @@ -3,13 +3,13 @@ #endif #include #include #include namespace Dune{ namespace Dorie{ template class RichardsSimulation,Geo::cube>,3>>; template class RichardsSimulation,Geo::simplex>,3>>; // template class CoupledSimulation,Geo::cube>,3,0>>; * // template class CoupledSimulation,Geo::simplex>,3,0>>; * } // namespace Dorie } // namespace Dune \ No newline at end of file
 ... ... @@ -3,12 +3,12 @@ #endif #include #include #include namespace Dune{ namespace Dorie{ template class RichardsSimulation,Geo::cube>,1>>; template class CoupledSimulation,Geo::cube>,1,0>>; } // namespace Dorie } // namespace Dune \ No newline at end of file
 ... ... @@ -3,12 +3,12 @@ #endif #include #include #include namespace Dune{ namespace Dorie{ template class RichardsSimulation,Geo::cube>,2>>; template class CoupledSimulation,Geo::cube>,2,0>>; } // namespace Dorie } // namespace Dune \ No newline at end of file
 ... ... @@ -3,12 +3,12 @@ #endif #include #include #include namespace Dune{ namespace Dorie{ template class RichardsSimulation,Geo::cube>,3>>; template class CoupledSimulation,Geo::cube>,3,0>>; } // namespace Dorie } // namespace Dune \ No newline at end of file
 ... ... @@ -3,12 +3,12 @@ #endif #include #include #include namespace Dune{ namespace Dorie{ template class RichardsSimulation,Geo::cube>,1>>; template class CoupledSimulation,Geo::cube>,1,0>>; } // namespace Dorie } // namespace Dune \ No newline at end of file
 ... ... @@ -3,12 +3,12 @@ #endif #include #include #include namespace Dune{ namespace Dorie{ template class RichardsSimulation,Geo::cube>,2>>; template class CoupledSimulation,Geo::cube>,2,0>>; } // namespace Dorie } // namespace Dune \ No newline at end of file
 ... ... @@ -3,12 +3,12 @@ #endif #include #include #include namespace Dune{ namespace Dorie{ template class RichardsSimulation,Geo::cube>,3>>; // template class CoupledsSimulation,Geo::cube>,3,0>>; * } // namespace Dorie } // namespace Dune \ No newline at end of file
 ... ... @@ -7,7 +7,7 @@ namespace Dune{ namespace Dorie{ template template struct CoupledSimulationTraits : public BaseTraits { private: ... ...