From 5b360f201f7a48e3fe95c7031352d91f9c107029 Mon Sep 17 00:00:00 2001 From: VivienL <vivien.langhans@iws.uni-stuttgart.de> Date: Fri, 7 Mar 2025 09:57:01 +0100 Subject: [PATCH] consistency of TODOs in all files --- exercises/exercise-basic/2pmain.cc | 4 ++-- exercises/exercise-basic/CMakeLists.txt | 2 +- .../exercise-basic/injection2pniproblem.hh | 8 ++++---- exercises/exercise-basic/params.input | 2 +- exercises/exercise-basic/properties2pni.hh | 2 +- .../biominproblem.hh | 8 ++++---- .../biominspatialparams.hh | 4 ++-- .../chemistry/simplebiominreactions.hh | 8 ++++---- .../permeabilitypowerlaw.hh | 4 ++-- .../exercise-biomineralization/params.input | 4 ++-- .../exercise-biomineralization/properties.hh | 4 ++-- .../interface/freeflowsubproblem.hh | 10 +++++----- .../exercise-coupling-ff-pm/interface/main.cc | 4 ++-- .../interface/params.input | 4 ++-- .../interface/porousmediumsubproblem.hh | 2 +- .../interface/properties.hh | 6 +++--- .../models/porousmediumsubproblem.hh | 4 ++-- .../models/properties.hh | 12 +++++------ .../turbulence/freeflowsubproblem.hh | 20 +++++++++---------- .../turbulence/main.cc | 6 +++--- .../turbulence/params.input | 8 ++++---- .../turbulence/properties.hh | 4 ++-- exercises/exercise-fluidsystem/aparams.input | 2 +- exercises/exercise-fractures/README.md | 2 +- .../exercise-fractures/fractureproblem.hh | 2 +- .../fracturespatialparams.hh | 6 +++--- exercises/exercise-fractures/matrixproblem.hh | 8 ++++---- exercises/exercise-fractures/params.input | 4 ++-- exercises/exercise-grids/params.input | 10 +++++----- exercises/exercise-grids/properties.hh | 6 +++--- .../exercise-mainfile/exercise1pamain.cc | 2 +- .../exercise_mainfile_a.input | 2 +- exercises/exercise-mainfile/properties.hh | 4 ++-- exercises/exercise-model/README.md | 2 +- exercises/exercise-model/main.cc | 6 +++--- .../exercise-properties/mylocalresidual.hh | 4 ++-- exercises/exercise-properties/problem.hh | 2 +- exercises/exercise-properties/properties.hh | 4 ++-- exercises/exercise-runtimeparams/params.input | 6 +++--- exercises/exercise-runtimeparams/problem.hh | 10 +++++----- .../biominproblem.hh | 8 ++++---- .../biominspatialparams.hh | 4 ++-- .../chemistry/simplebiominreactions.hh | 7 ++++--- .../permeabilitypowerlaw.hh | 4 ++-- .../exercise-biomineralization/params.input | 4 +++- .../exercise-biomineralization/properties.hh | 4 ++-- .../solution/exercise-grids/params.input | 10 +++++----- .../solution/exercise-grids/properties.hh | 6 +++--- .../exercise1pa_solution_main.cc | 2 +- .../solution/exercise-mainfile/properties.hh | 4 ++-- exercises/solution/exercise-model/main.cc | 4 +++- .../exercise-runtimeparams/params.input | 4 ++-- .../exercise-runtimeparams/problem.hh | 10 +++++----- 53 files changed, 144 insertions(+), 139 deletions(-) diff --git a/exercises/exercise-basic/2pmain.cc b/exercises/exercise-basic/2pmain.cc index 1919f07c..87ccbe2c 100644 --- a/exercises/exercise-basic/2pmain.cc +++ b/exercises/exercise-basic/2pmain.cc @@ -28,7 +28,7 @@ #include <dumux/io/grid/gridmanager_yasp.hh> /*! - * TODO:dumux-course-task 3: + * TODO: dumux-course-task 3: * In 2pnimain.cc include the correct properties headerfile */ // The properties file, where the compile time options are defined @@ -42,7 +42,7 @@ int main(int argc, char** argv) using namespace Dumux; /*! - * TODO:dumux-course-task 3: + * TODO: dumux-course-task 3: * In 2pnimain.cc change the type tag for the new injection problem */ // define the type tag for this problem diff --git a/exercises/exercise-basic/CMakeLists.txt b/exercises/exercise-basic/CMakeLists.txt index 5530e76f..b8ee4271 100644 --- a/exercises/exercise-basic/CMakeLists.txt +++ b/exercises/exercise-basic/CMakeLists.txt @@ -5,7 +5,7 @@ dumux_add_test(NAME exercise_basic_2p SOURCES 2pmain.cc) -# TODO: add the two-phase non-isothermal simulation program +# TODO: dumux-course-task 3: add the two-phase non-isothermal simulation program # add a symlink for each input file diff --git a/exercises/exercise-basic/injection2pniproblem.hh b/exercises/exercise-basic/injection2pniproblem.hh index 51d4e902..0a79b39f 100644 --- a/exercises/exercise-basic/injection2pniproblem.hh +++ b/exercises/exercise-basic/injection2pniproblem.hh @@ -104,7 +104,7 @@ public: bcTypes.setAllNeumann(); /*! - * TODO:dumux-course-task 4: + * TODO: dumux-course-task 4: * Set Dirichlet conditions for the energy equation on the left boundary * and Neumann everywhere else. * Think about: is there anything necessary to do here? @@ -124,7 +124,7 @@ public: return initialAtPos(globalPos); /*! - * TODO:dumux-course-task 4: + * TODO: dumux-course-task 4: * Set Dirichlet conditions for the energy equation on the left boundary. * Think about: is there anything necessary to do here? */ @@ -150,7 +150,7 @@ public: values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0; /*! - * TODO:dumux-course-task 4: + * TODO: dumux-course-task 4: * Set Neumann noflow conditions for the energy equation everywhere else except the left boundary. * Additionally, consider the energy flux at the injection point which is equal to the product of the respective mass flux and the matching enthalpy. Use the function `gasEnthalpy(temperature,pressure)` from the N2 component to access the necessary enthalpy. * hint: use `Indices::energyEqIdx` to access the entry belonging to the energy flux. @@ -191,7 +191,7 @@ public: values[Indices::saturationIdx] = 0.0; /*! - * TODO:dumux-course-task 4: + * TODO: dumux-course-task 4: * Set a temperature gradient of 0.03 K per m beginning at 283 K here. * Hint: you can use aquiferDepth_ and the globalPos similar to the pressure gradient. * Use globalPos[0] and globalPos[1] to implement the high temperature lens with 380 K diff --git a/exercises/exercise-basic/params.input b/exercises/exercise-basic/params.input index 7f69d7b8..63aa4f6b 100644 --- a/exercises/exercise-basic/params.input +++ b/exercises/exercise-basic/params.input @@ -23,7 +23,7 @@ Aquifer.BrooksCoreyLambda = 2.0 Aquifer.Swr = 0.2 Aquifer.Snr = 0.0 -# TODO: these parameters are only used in the nonisothermal model. Uncomment them for that +# TODO: dumux-course-task 4: these parameters are only used in the nonisothermal model. Uncomment them for that #[Component] #SolidDensity = 2700 # solid density of granite #SolidThermalConductivity = 2.8 # solid thermal conducitivity of granite diff --git a/exercises/exercise-basic/properties2pni.hh b/exercises/exercise-basic/properties2pni.hh index fda39f16..e29e4ef7 100644 --- a/exercises/exercise-basic/properties2pni.hh +++ b/exercises/exercise-basic/properties2pni.hh @@ -25,7 +25,7 @@ namespace Dumux::Properties { /*! -* TODO:dumux-course-task 4 +* TODO: dumux-course-task 4: * Inherit from the TwoPNI model instead of TwoP here */ // Create new type tags diff --git a/exercises/exercise-biomineralization/biominproblem.hh b/exercises/exercise-biomineralization/biominproblem.hh index 2dae53af..f14082a6 100644 --- a/exercises/exercise-biomineralization/biominproblem.hh +++ b/exercises/exercise-biomineralization/biominproblem.hh @@ -17,7 +17,7 @@ #include <dumux/common/numeqvector.hh> #include <dumux/porousmediumflow/problem.hh> -// TODO: dumux-course-task 3 +// TODO: dumux-course-task 3: // include chemistry file here namespace Dumux { @@ -51,7 +51,7 @@ class BioMinProblem : public PorousMediumFlowProblem<TypeTag> using Element = typename GridView::template Codim<0>::Entity; using SolutionVector = GetPropType<TypeTag, Properties::SolutionVector>; using SubControlVolume = typename FVElementGeometry::SubControlVolume; - // TODO: dumux-course-task 3 + // TODO: dumux-course-task 3: // set the chemistry TypeTag static constexpr int numComponents = FluidSystem::numComponents; @@ -183,7 +183,7 @@ public: values[conti0EqIdx + CaIdx] = - waterFlux * concCa_ / FluidSystem::molarMass(CaIdx); values[conti0EqIdx + UreaIdx] = - waterFlux * concUrea_ / FluidSystem::molarMass(UreaIdx); } - // TODO: dumux-course-task 5 + // TODO: dumux-course-task 5: // Set CO2 injection below aquitard after the injBioTime return values; @@ -245,7 +245,7 @@ public: { NumEqVector source(0.0); - // TODO: dumux-course-task 3 + // TODO: dumux-course-task 3: // set Chemistry // Chemistry chemistry; // set VolumeVariables diff --git a/exercises/exercise-biomineralization/biominspatialparams.hh b/exercises/exercise-biomineralization/biominspatialparams.hh index af2c97fe..e81beab7 100644 --- a/exercises/exercise-biomineralization/biominspatialparams.hh +++ b/exercises/exercise-biomineralization/biominspatialparams.hh @@ -16,7 +16,7 @@ #include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh> #include <dumux/material/fluidmatrixinteractions/2p/brookscorey.hh> #include <dumux/material/fluidmatrixinteractions/porosityprecipitation.hh> -// TODO: dumux-course-task +// TODO: dumux-course-task 6: // include the new permeability law (power law) instead of Kozeny-Carman #include <dumux/material/fluidmatrixinteractions/permeabilitykozenycarman.hh> @@ -271,7 +271,7 @@ private: bool isFaultZone_(const GlobalPosition &globalPos) const { return globalPos[dimWorld-2] > 2 - eps_ && globalPos[dimWorld-2] < 3 + eps_;} - // TODO: dumux-course-task + // TODO: dumux-course-task 6: // define the power law as the permeability law PermeabilityKozenyCarman<PermeabilityType> permLaw_; PoroLaw poroLaw_; diff --git a/exercises/exercise-biomineralization/chemistry/simplebiominreactions.hh b/exercises/exercise-biomineralization/chemistry/simplebiominreactions.hh index 78d9886b..6970c7e5 100644 --- a/exercises/exercise-biomineralization/chemistry/simplebiominreactions.hh +++ b/exercises/exercise-biomineralization/chemistry/simplebiominreactions.hh @@ -76,24 +76,24 @@ public: using std::max; const Scalar volFracBiofilm = max(volVars.solidVolumeFraction(BiofilmPhaseIdx),0.0); - // TODO: dumux-course-task 2 + // TODO: dumux-course-task 2: // implement mass of biofilm const Scalar massBiofilm = 0.0; const Scalar molalityUrea = moleFracToMolality(volVars.moleFraction(liquidPhaseIdx,UreaIdx), xwCa, volVars.moleFraction(liquidPhaseIdx,CO2Idx)); // [mol_urea/kg_H2O] - // TODO: dumux-course-task 2 + // TODO: dumux-course-task 2: // compute rate of ureolysis by implementing Zub and rurea const Scalar Zub = 0.0; const Scalar rurea = 0.0; - // TODO: dumux-course-task 2 + // TODO: dumux-course-task 2: // compute/set dissolution and precipitation rate of calcite const Scalar rprec = 0.0; // set source terms - // TODO: dumux-course-task 2 + // TODO: dumux-course-task 2: // set the source terms using the reaction rates defined above and signs based on the stoichiometry of the reactions. // Hint: Ammonium occurs in the reaction equation, but is not accounted for in this simplified setup. // Additionally, the consumption of water by the reaction may be neglected, as water is present in excess. diff --git a/exercises/exercise-biomineralization/fluidmatrixinteractions/permeabilitypowerlaw.hh b/exercises/exercise-biomineralization/fluidmatrixinteractions/permeabilitypowerlaw.hh index b6307897..ea8fa71c 100644 --- a/exercises/exercise-biomineralization/fluidmatrixinteractions/permeabilitypowerlaw.hh +++ b/exercises/exercise-biomineralization/fluidmatrixinteractions/permeabilitypowerlaw.hh @@ -39,10 +39,10 @@ public: PermeabilityType evaluatePermeability(PermeabilityType refPerm, Scalar refPoro, Scalar poro) const { using std::pow; - // TODO: dumux-course-task 6 + // TODO: dumux-course-task 6: // read the exponent for the power law from the input file - // TODO: dumux-course-task 6 + // TODO: dumux-course-task 6: // return the updated permeability according to K=K_0*(poro/refPoro)^exponent return refPerm; } diff --git a/exercises/exercise-biomineralization/params.input b/exercises/exercise-biomineralization/params.input index e8a0e917..c782f49b 100644 --- a/exercises/exercise-biomineralization/params.input +++ b/exercises/exercise-biomineralization/params.input @@ -10,7 +10,7 @@ Name = biomin UpperRight = 20 15 # x-/y-coordinates of the upper-right corner of the grid [m] Cells = 20 15 # x-/y-resolution of the grid -# TODO: dumux-course-task 4 +# TODO: dumux-course-task 4: # vary parameters InjBioTime, InitBiofilm, InjVolumeflux, ConcUrea and ConcCa [Initial] InitDensityW = 997 # [kg/m³] initial wetting density @@ -49,5 +49,5 @@ KUrea = 0.355 # [mol/kgH2O] Lauchnor et al. 2014 [Brine] Salinity = 0.1 -#TODO: dumux-course-task 6 +# TODO: dumux-course-task 6: # add the power law's exponent parameter PowerLaw.Exponent = 5.0 diff --git a/exercises/exercise-biomineralization/properties.hh b/exercises/exercise-biomineralization/properties.hh index 187ea5e8..32fb7df4 100644 --- a/exercises/exercise-biomineralization/properties.hh +++ b/exercises/exercise-biomineralization/properties.hh @@ -19,7 +19,7 @@ #include <dumux/porousmediumflow/2pncmin/model.hh> #include <dumux/porousmediumflow/problem.hh> #include <dumux/material/components/simpleco2.hh> //!< Simplified CO2 component based on ideal gas law -// TODO: dumux-course-task 7 +// TODO: dumux-course-task 7: // include the CO2 component and tabulated values from DuMux #include "solidsystems/biominsolidphase.hh" // The biomineralization solid system @@ -52,7 +52,7 @@ struct FluidSystem<TypeTag, TTag::ExerciseBioMin> { private: using Scalar = GetPropType<TypeTag, Properties::Scalar>; - // TODO: dumux-course-task 7 + // TODO: dumux-course-task 7: // use the CO2 component with tabulated values using CO2Impl = Components::SimpleCO2<Scalar>; using H2OType = Components::TabulatedComponent<Components::H2O<Scalar>>; diff --git a/exercises/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh b/exercises/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh index ce45a7e0..f24a4276 100644 --- a/exercises/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh +++ b/exercises/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh @@ -71,7 +71,7 @@ public: const auto& globalPos = scvf.dofPosition(); - // TODO: dumux-course-task 1.A + // TODO: dumux-course-task 1.A: // Change the boundary conditions here as described in the exercise if(onUpperBoundary_(globalPos)) { @@ -89,12 +89,12 @@ public: // coupling interface if(couplingManager().isCoupledEntity(CouplingManager::stokesIdx, scvf)) { - // TODO: dumux-course-task 1.C + // TODO: dumux-course-task 1.C: // set the Beaver-Joseph-Saffman slip condition for the tangential momentum balance equation, // consider orientation of face automatically values.setCouplingNeumann(Indices::conti0EqIdx); values.setCouplingNeumann(Indices::momentumYBalanceIdx); - // TODO: dumux-course-task 1.B + // TODO: dumux-course-task 1.B: // Replace Dirichlet BC with Beavers-Joseph-Saffman slip condition for the tangential momentum balance values.setDirichlet(Indices::velocityXIdx); // assume no slip on interface @@ -111,10 +111,10 @@ public: PrimaryVariables dirichletAtPos(const GlobalPosition& globalPos) const { PrimaryVariables values(0.0); - // TODO: dumux-course-task 1.A + // TODO: dumux-course-task 1.A: // set a no-slip, no-flow condition at the top values[Indices::velocityYIdx] = -1e-6 * globalPos[0] * (this->gridGeometry().bBoxMax()[0] - globalPos[0]); - // TODO: dumux-course-task 1.A + // TODO: dumux-course-task 1.A: // set fixed pressures on the left and right boundary return values; diff --git a/exercises/exercise-coupling-ff-pm/interface/main.cc b/exercises/exercise-coupling-ff-pm/interface/main.cc index ee3a2d96..81c3c568 100644 --- a/exercises/exercise-coupling-ff-pm/interface/main.cc +++ b/exercises/exercise-coupling-ff-pm/interface/main.cc @@ -52,7 +52,7 @@ int main(int argc, char** argv) using FreeflowTypeTag = Properties::TTag::FreeflowOneP; using PorousMediumTypeTag = Properties::TTag::PorousMediumFlowOneP; - //TODO: dumux-course-task 1.C + //TODO: dumux-course-task 1.C: // ******************** comment-out this section for the last exercise **************** // // create two individual grids (from the given grid file or the input file) @@ -168,7 +168,7 @@ int main(int argc, char** argv) StaggeredVtkOutputModule<FreeflowGridVariables, decltype(freeflowSol)> freeflowVtkWriter(*freeflowGridVariables, freeflowSol, freeflowName); GetPropType<FreeflowTypeTag, Properties::IOFields>::initOutputModule(freeflowVtkWriter); - //TODO: dumux-course-task 1.B + //TODO: dumux-course-task 1.B: //****** uncomment the add analytical solution of v_x *****// // freeflowVtkWriter.addField(freeflowProblem->getAnalyticalVelocityX(), "analyticalV_x"); diff --git a/exercises/exercise-coupling-ff-pm/interface/params.input b/exercises/exercise-coupling-ff-pm/interface/params.input index c5e2ac08..e4fe6b57 100644 --- a/exercises/exercise-coupling-ff-pm/interface/params.input +++ b/exercises/exercise-coupling-ff-pm/interface/params.input @@ -1,5 +1,5 @@ -# # TODO: dumux-course-task 1.C: uncomment the following group [Grid] -# # for dune-subgrid +# TODO: dumux-course-task 1.C: uncomment the following group [Grid] +# for dune-subgrid #[Grid] #Positions0 = 0 1 #Positions1 = 0 0.2 0.3 0.65 diff --git a/exercises/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh b/exercises/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh index f30588e7..4bd2d195 100644 --- a/exercises/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh +++ b/exercises/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh @@ -65,7 +65,7 @@ public: { BoundaryTypes values; - // TODO: dumux-course-task 1.A + // TODO: dumux-course-task 1.A: // Set for all boundaries Neumann no-flow and keep the coupling conditions // set Neumann BCs to all boundaries first values.setAllNeumann(); diff --git a/exercises/exercise-coupling-ff-pm/interface/properties.hh b/exercises/exercise-coupling-ff-pm/interface/properties.hh index ffc9b251..2a9f65b7 100644 --- a/exercises/exercise-coupling-ff-pm/interface/properties.hh +++ b/exercises/exercise-coupling-ff-pm/interface/properties.hh @@ -16,7 +16,7 @@ #include <dumux/multidomain/staggeredtraits.hh> #include <dumux/multidomain/boundary/stokesdarcy/couplingmanager.hh> -// TODO: dumux-course-task 1.C +// TODO: dumux-course-task 1.C: //****** uncomment for the last exercise *****// // #include <dumux/io/grid/gridmanager_sub.hh> @@ -86,7 +86,7 @@ struct Grid<TypeTag, TTag::PorousMediumFlowOneP> using Scalar = GetPropType<TypeTag, Properties::Scalar>; using TensorGrid = Dune::YaspGrid<2, Dune::TensorProductCoordinates<Scalar, dim> >; -// TODO: dumux-course-task 1.C +// TODO: dumux-course-task 1.C: //****** comment out for the last exercise *****// // use "normal" grid using type = TensorGrid; @@ -103,7 +103,7 @@ struct Grid<TypeTag, TTag::FreeflowOneP> using Scalar = GetPropType<TypeTag, Properties::Scalar>; using TensorGrid = Dune::YaspGrid<2, Dune::TensorProductCoordinates<Scalar, dim> >; -// TODO: dumux-course-task 1.C +// TODO: dumux-course-task 1.C: //****** comment out for the last exercise *****// // use "normal" grid using type = TensorGrid; diff --git a/exercises/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh b/exercises/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh index d844e1f8..b4051eb7 100644 --- a/exercises/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh +++ b/exercises/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh @@ -335,9 +335,9 @@ public: PrimaryVariables values(0.0); values[pressureIdx] = freeflowPressure; - // TODO: dumux-course-task 2.A + // TODO: dumux-course-task 2.A: // Declare here which phases are present. - // TODO: dumux-course-task 2.C + // TODO: dumux-course-task 2.C: // Change initial condition to 2p system with liquid saturation of 0.1 values[transportCompIdx] = moleFraction_; diff --git a/exercises/exercise-coupling-ff-pm/models/properties.hh b/exercises/exercise-coupling-ff-pm/models/properties.hh index a5c7e032..62622a97 100644 --- a/exercises/exercise-coupling-ff-pm/models/properties.hh +++ b/exercises/exercise-coupling-ff-pm/models/properties.hh @@ -25,10 +25,10 @@ #include <dumux/discretization/cctpfa.hh> #include <dumux/material/fluidmatrixinteractions/diffusivityconstanttortuosity.hh> -// TODO: dumux-course-task 2.A +// TODO: dumux-course-task 2.A: // Include 2pnc model here #include <dumux/porousmediumflow/1pnc/model.hh> -// TODO: dumux-course-task 2.A +// TODO: dumux-course-task 2.A: // Include spatial params for a 2-phase system #include "../1pspatialparams.hh" #include "porousmediumsubproblem.hh" @@ -44,7 +44,7 @@ namespace Dumux::Properties { // Create new type tags namespace TTag { struct FreeflowNC { using InheritsFrom = std::tuple<NavierStokesNC, StaggeredFreeFlowModel>; }; -// TODO: dumux-course-task 2.A +// TODO: dumux-course-task 2.A: // Change the inheritance such that the correct model is used. struct PorousMediumOnePNC { using InheritsFrom = std::tuple<OnePNC, CCTpfaModel>; }; } // end namespace TTag @@ -70,7 +70,7 @@ template<class TypeTag> struct Problem<TypeTag, TTag::FreeflowNC> { using type = Dumux::FreeFlowSubProblem<TypeTag> ; }; // The fluid system -// TODO: dumux-course-task 2.A +// TODO: dumux-course-task 2.A: // Change to property of the `FluidSystem` such that `H2OAir` is used directly. template<class TypeTag> struct FluidSystem<TypeTag, TTag::PorousMediumOnePNC> @@ -108,11 +108,11 @@ template<class TypeTag> struct EffectiveDiffusivityModel<TypeTag, TTag::PorousMediumOnePNC> { using type = DiffusivityConstantTortuosity<GetPropType<TypeTag, Properties::Scalar>>; }; -// TODO: dumux-course-task 2.A +// TODO: dumux-course-task 2.A: // Define new formulation for primary variables here. // Set the spatial parameters type -// TODO: dumux-course-task 2.A +// TODO: dumux-course-task 2.A: // Adapt the spatial params here. template<class TypeTag> struct SpatialParams<TypeTag, TTag::PorousMediumOnePNC> { diff --git a/exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh b/exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh index 6ca887e3..a59f38e8 100644 --- a/exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh +++ b/exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh @@ -18,7 +18,7 @@ #include <dumux/multidomain/boundary/stokesdarcy/couplingdata.hh> #include <dumux/freeflow/turbulencemodel.hh> -// TODO: dumux-course-task 3.A +// TODO: dumux-course-task 3.A: // Include headers for turbulence problem (rans) here. #include <dumux/freeflow/navierstokes/staggered/problem.hh> #include <dumux/freeflow/navierstokes/boundarytypes.hh> @@ -28,7 +28,7 @@ namespace Dumux { * \brief The free-flow sub problem */ template <class TypeTag> -// TODO: dumux-course-task 3.A +// TODO: dumux-course-task 3.A: // Adapt the inheritance of the problem class. class FreeFlowSubProblem : public NavierStokesStaggeredProblem<TypeTag> { @@ -40,7 +40,7 @@ class FreeFlowSubProblem : public NavierStokesStaggeredProblem<TypeTag> using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>; using Indices = typename GetPropType<TypeTag, Properties::ModelTraits>::Indices; using ModelTraits = GetPropType<TypeTag, Properties::ModelTraits>; - // TODO: dumux-course-task 3.A + // TODO: dumux-course-task 3.A: // Change the boundary types to Dumux::RANSBoundaryTypes<ModelTraits, ModelTraits::numEq()> using BoundaryTypes = Dumux::NavierStokesBoundaryTypes<GetPropType<TypeTag, Properties::ModelTraits>::numEq()>; using FVGridGeometry = GetPropType<TypeTag, Properties::GridGeometry>; @@ -109,7 +109,7 @@ public: BoundaryTypes values; const auto& globalPos = scvf.center(); - // TODO: dumux-course-task 3.A + // TODO: dumux-course-task 3.A: // set boundary conditions for the turbulence model primary variables k and \omega everywhere (outflow on right boundary, otherwise dirichlet) if (onLeftBoundary_(globalPos)) @@ -120,7 +120,7 @@ public: values.setDirichlet(Indices::energyEqIdx); } - // TODO: dumux-course-task 3.A + // TODO: dumux-course-task 3.A: // set wall conditions for the turbulence model at the walls (values.setWall()) corresponding to the upper and lower boundary if (onLowerBoundary_(globalPos)) { @@ -133,7 +133,7 @@ public: if (onUpperBoundary_(globalPos)) { - // TODO: dumux-course-task 3.B + // TODO: dumux-course-task 3.B: // Replace all conditions here with symmetric BCs. values.setDirichlet(Indices::velocityXIdx); values.setDirichlet(Indices::velocityYIdx); @@ -172,9 +172,9 @@ public: const auto globalPos = scvf.ipGlobal(); PrimaryVariables values(initialAtPos(globalPos)); - // TODO: dumux-course-task 3.A + // TODO: dumux-course-task 3.A: // Add dirichlet conditions setting TKE and Dissipation to zero on the upper and lower walls. - // TODO: dumux-course-task 3.B + // TODO: dumux-course-task 3.B: // Remove the condition `onUpperBoundary_(globalPos)` here. // if (onUpperBoundary_(globalPos) || onLowerBoundary_(globalPos)) // { @@ -288,12 +288,12 @@ public: values[Indices::velocityXIdx] = refVelocity(); values[Indices::temperatureIdx] = refTemperature(); - // TODO: dumux-course-task 3.A + // TODO: dumux-course-task 3.A: // Set initial conditions for the TKE and the Dissipation. Values calculated in the constructor // values[Indices::turbulentKineticEnergyIdx] = TODO??; // values[Indices::dissipationIdx] = TODO??; - // TODO: dumux-course-task 3.B + // TODO: dumux-course-task 3.B: // Remove the condition `onUpperBoundary_(globalPos)` here. if(onUpperBoundary_(globalPos) || onLowerBoundary_(globalPos)) values[Indices::velocityXIdx] = 0.0; diff --git a/exercises/exercise-coupling-ff-pm/turbulence/main.cc b/exercises/exercise-coupling-ff-pm/turbulence/main.cc index e42f71b5..68714797 100644 --- a/exercises/exercise-coupling-ff-pm/turbulence/main.cc +++ b/exercises/exercise-coupling-ff-pm/turbulence/main.cc @@ -122,10 +122,10 @@ int main(int argc, char** argv) couplingManager->init(freeflowProblem, porousMediumProblem, sol); - // TODO: dumux-course-task 3.A + // TODO: dumux-course-task 3.A: // Update static wall properties - // TODO: dumux-course-task 3.A + // TODO: dumux-course-task 3.A: // Update dynamic wall properties // the grid variables @@ -180,7 +180,7 @@ int main(int argc, char** argv) // make the new solution the old solution solOld = sol; - // TODO: dumux-course-task 3.A + // TODO: dumux-course-task 3.A: // Update dynamic wall properties // post time step treatment of PorousMedium problem diff --git a/exercises/exercise-coupling-ff-pm/turbulence/params.input b/exercises/exercise-coupling-ff-pm/turbulence/params.input index c9d26a57..9545f0e9 100644 --- a/exercises/exercise-coupling-ff-pm/turbulence/params.input +++ b/exercises/exercise-coupling-ff-pm/turbulence/params.input @@ -5,13 +5,13 @@ TEnd = 864000 # [s] (6 days) [Freeflow.Grid] Positions0 = 0.0 0.25 -# TODO: dumux-course-task 3.B - use only half of FF domain height +# TODO: dumux-course-task 3.B: use only half of FF domain height Positions1 = 0.25 0.5 -# TODO: dumux-course-task 3.C - refine towards interface +# TODO: dumux-course-task 3.C: refine towards interface Grading0 = 1.0 Grading1 = 1.0 Cells0 = 15 -# TODO: dumux-course-task 3.B - use only half of FF domain height and adapt cell number +# TODO: dumux-course-task 3.B: use only half of FF domain height and adapt cell number Cells1 = 20 Verbosity = true @@ -20,7 +20,7 @@ Positions0 = 0.0 0.25 Positions1 = 0.0 0.25 Cells0 = 15 Cells1 = 10 -# TODO: dumux-course-task 3.C - refine towards interface +# TODO: dumux-course-task 3.C: refine towards interface Grading0 = 1.0 Grading1 = 1.0 Verbosity = true diff --git a/exercises/exercise-coupling-ff-pm/turbulence/properties.hh b/exercises/exercise-coupling-ff-pm/turbulence/properties.hh index 67d3e762..196ea9fe 100644 --- a/exercises/exercise-coupling-ff-pm/turbulence/properties.hh +++ b/exercises/exercise-coupling-ff-pm/turbulence/properties.hh @@ -28,7 +28,7 @@ // Free-flow domain #include <dumux/discretization/staggered/freeflow/properties.hh> -// TODO: dumux-course-task 3.A +// TODO: dumux-course-task 3.A: // Include headers for compositional k-\omega SST turbulence model here. #include <dumux/freeflow/compositional/navierstokesncmodel.hh> @@ -39,7 +39,7 @@ namespace Dumux::Properties { // Create new type tags namespace TTag { struct PorousMediumFlowModel { using InheritsFrom = std::tuple<TwoPTwoCNI, CCTpfaModel>; }; -// TODO: dumux-course-task 3.A +// TODO: dumux-course-task 3.A: // Change the entry in the `FreeflowModel` definition accordingly. struct FreeflowModel { using InheritsFrom = std::tuple<NavierStokesNCNI, StaggeredFreeFlowModel>; }; } // end namespace TTag diff --git a/exercises/exercise-fluidsystem/aparams.input b/exercises/exercise-fluidsystem/aparams.input index 775a986e..49f15941 100644 --- a/exercises/exercise-fluidsystem/aparams.input +++ b/exercises/exercise-fluidsystem/aparams.input @@ -20,5 +20,5 @@ UpperRight = 60 60 # x-/y-coordinates of the upper-right corner of the grid [m] Cells = 60 60 # x-/y-resolution of the grid [Output] -# TODO Task 2.2: Set the plot density to true +# TODO: dumux-course-task 2.2: set the plot density to true PlotDensity = false # plot density over pressure for your component diff --git a/exercises/exercise-fractures/README.md b/exercises/exercise-fractures/README.md index 0c8fc1b8..b5daac4d 100644 --- a/exercises/exercise-fractures/README.md +++ b/exercises/exercise-fractures/README.md @@ -157,7 +157,7 @@ BoundaryTypes interiorBoundaryTypes(const Element& element, const SubControlVolu // the interior boundary conditions to Dirichlet. // IMPORTANT: Note that you will never be asked to set any values at the interior boundaries! // This simply chooses a different interface condition! - // TODO dumux-course-task C + // TODO: dumux-course-task B: // Change coupling conditions! values.setAllDirichlet(); diff --git a/exercises/exercise-fractures/fractureproblem.hh b/exercises/exercise-fractures/fractureproblem.hh index b93f56b5..02f8c2f1 100644 --- a/exercises/exercise-fractures/fractureproblem.hh +++ b/exercises/exercise-fractures/fractureproblem.hh @@ -78,7 +78,7 @@ public: // However, there is one fracture reaching the top boundary. For this // fracture tip we set Dirichlet Bcs as in the matrix domain - // TODO dumux-course-task A + // TODO: dumux-course-task A: // Change boundary conditions if (globalPos[1] > this->gridGeometry().bBoxMax()[1] - 1e-6) values.setAllDirichlet(); diff --git a/exercises/exercise-fractures/fracturespatialparams.hh b/exercises/exercise-fractures/fracturespatialparams.hh index 1f7518f9..9c8a99ad 100644 --- a/exercises/exercise-fractures/fracturespatialparams.hh +++ b/exercises/exercise-fractures/fracturespatialparams.hh @@ -73,7 +73,7 @@ public: const SubControlVolume& scv, const ElementSolution& elemSol) const { - // TODO dumux-course-task B/C + // TODO: dumux-course-task B/C: // Change fracture properties return permeability_; } @@ -84,7 +84,7 @@ public: const SubControlVolume& scv, const ElementSolution& elemSol) const { - // TODO dumux-course-task B/C + // TODO: dumux-course-task B/C: // Change fracture properties return porosity_; } @@ -101,7 +101,7 @@ public: const SubControlVolume& scv, const ElementSolution& elemSol) const { - // TODO dumux-course-task B/C + // TODO: dumux-course-task B/C: // Change fracture properties return makeFluidMatrixInteraction(pcKrSwCurve_); } diff --git a/exercises/exercise-fractures/matrixproblem.hh b/exercises/exercise-fractures/matrixproblem.hh index a52381a7..9fd252c7 100644 --- a/exercises/exercise-fractures/matrixproblem.hh +++ b/exercises/exercise-fractures/matrixproblem.hh @@ -79,7 +79,7 @@ public: // we consider buoancy-driven upwards migration of nitrogen and set // Dirichlet BCs on the top and bottom boundary - // TODO dumux-course-task A + // TODO: dumux-course-task A: // Change boundary conditions and Dirichlet values! values.setAllNeumann(); if (globalPos[1] < 1e-6 || globalPos[1] > this->gridGeometry().bBoxMax()[1] - 1e-6) @@ -107,11 +107,11 @@ public: // the interior boundary conditions to Dirichlet. // IMPORTANT: Note that you will never be asked to set any values at the interior boundaries! // This simply chooses a different interface condition! - // TODO dumux-course-task B + // TODO: dumux-course-task B: // Change coupling conditions! values.setAllDirichlet(); - // TODO dumux-course-task additional task + // TODO: dumux-course-task additional task: // Set interior boundary condition depending on the domain marker of the fracture domain elements! return values; @@ -124,7 +124,7 @@ public: auto values = initialAtPos(globalPos); // nitrogen is in contact with the domain on the center half of the lower boundary - // TODO dumux-course-task A + // TODO: dumux-course-task A: // Change boundary conditions and Dirichlet values! if (globalPos[1] < 1e-6 && globalPos[0] > 25.0 && globalPos[0] < 75.0) values[saturationIdx] = boundarySaturation_; diff --git a/exercises/exercise-fractures/params.input b/exercises/exercise-fractures/params.input index 588e2294..612baec1 100644 --- a/exercises/exercise-fractures/params.input +++ b/exercises/exercise-fractures/params.input @@ -4,7 +4,7 @@ DtInitial = 10 # [s] MaxTimeStepSize = 2500 # [s] [Problem] -# TODO dumux-course-task A: switch off gravity +# TODO: dumux-course-task A: switch off gravity EnableGravity = true [Grid] @@ -29,7 +29,7 @@ SpatialParams.Permeability = 1e-7 SpatialParams.PermeabilityBarrier = 1e-16 SpatialParams.Porosity = 0.85 SpatialParams.PorosityBarrier = 0.05 -# TODO: set the VGAlpha parameter e.g. to 1e.5 and examine the nitrogen saturation in the fracture tips (then reset to 1e-1 again) +# TODO: dumux-course-task: set the VGAlpha parameter e.g. to 1e.5 and examine the nitrogen saturation in the fracture tips (then reset to 1e-1 again) SpatialParams.VanGenuchtenAlpha = 1e-1 SpatialParams.VanGenuchtenN = 2 SpatialParams.Swr = 0.0 diff --git a/exercises/exercise-grids/params.input b/exercises/exercise-grids/params.input index dbba7056..9fc6242a 100644 --- a/exercises/exercise-grids/params.input +++ b/exercises/exercise-grids/params.input @@ -5,11 +5,11 @@ TEnd = 3.154e9 # in seconds, i.e ten years [Grid] UpperRight = 60 40 Cells = 24 16 -# TODO: Task 1: Globally refine your grid -# TODO: Task 2: Develop grid input parameters that can be split into zones -# TODO: Task 3: Using the zoning and grading parameters, redevelop your grid to optimize your refinement in the areas that matter. -# TODO: Task 4: Run your simulation with the provided structured grid file ./grids/grid_structured.msh -# TODO: Task 5: Run your simulation with the provided unstructured grid file ./grids/grid_unstructured.msh +# TODO: dumux-course-task 1: Globally refine your grid +# TODO: dumux-course-task 2: Develop grid input parameters that can be split into zones +# TODO: dumux-course-task 3: Using the zoning and grading parameters, redevelop your grid to optimize your refinement in the areas that matter. +# TODO: dumux-course-task 4: Run your simulation with the provided structured grid file ./grids/grid_structured.msh +# TODO: dumux-course-task 5: Run your simulation with the provided unstructured grid file ./grids/grid_unstructured.msh [Problem] Name = grid_exercise diff --git a/exercises/exercise-grids/properties.hh b/exercises/exercise-grids/properties.hh index 1a2879ba..f5458147 100644 --- a/exercises/exercise-grids/properties.hh +++ b/exercises/exercise-grids/properties.hh @@ -35,13 +35,13 @@ struct Injection2pCC { using InheritsFrom = std::tuple<Injection2p, CCTpfaModel> // Set the grid type template<class TypeTag> struct Grid<TypeTag, TTag::Injection2p> { using type = Dune::YaspGrid<2>; }; -// TODO: dumux-course-task 2 +// TODO: dumux-course-task 2: //Replace the above Grid Property definition with a more flexible grid (Use Dune::TensorProductCoordinates) -// TODO: dumux-course-task 4 +// TODO: dumux-course-task 4: // Replace the above Grid Property definition to read in a external structured grid via a .msh file (Use Dune::ALUGrid and Dune:cube) -// TODO: dumux-course-task 5 +// TODO: dumux-course-task 5: // Replace the above Grid Property definition to read in a external unstructured grid via a .msh file (Use Dune::ALUGrid and Dune::simplex) // Set the problem property diff --git a/exercises/exercise-mainfile/exercise1pamain.cc b/exercises/exercise-mainfile/exercise1pamain.cc index a019e2e1..637f8470 100644 --- a/exercises/exercise-mainfile/exercise1pamain.cc +++ b/exercises/exercise-mainfile/exercise1pamain.cc @@ -87,7 +87,7 @@ int main(int argc, char** argv) Dune::Timer timer; - // TODO: dumux-course-task 3 + // TODO: dumux-course-task 3: // Change the differentiation method to analytic by changing from DiffMethod::numeric to DiffMethod::analytic // the assembler for stationary problems diff --git a/exercises/exercise-mainfile/exercise_mainfile_a.input b/exercises/exercise-mainfile/exercise_mainfile_a.input index 9dadca19..48ede646 100644 --- a/exercises/exercise-mainfile/exercise_mainfile_a.input +++ b/exercises/exercise-mainfile/exercise_mainfile_a.input @@ -15,5 +15,5 @@ PermeabilityLens = 1e-12 # [m^2] [Assembly.NumericDifference] PriVarMagnitude = 1e5 -# TODO: Task 3: Change BaseEpsilon to a smaller value 1e-15 +# TODO: dumux-course-task 3: Change BaseEpsilon to a smaller value 1e-15 BaseEpsilon = 1e-10 diff --git a/exercises/exercise-mainfile/properties.hh b/exercises/exercise-mainfile/properties.hh index 44ee606c..96260115 100644 --- a/exercises/exercise-mainfile/properties.hh +++ b/exercises/exercise-mainfile/properties.hh @@ -24,7 +24,7 @@ #include <dumux/discretization/box.hh> #include <dumux/porousmediumflow/1p/model.hh> -// TODO: dumux-course-task 3 +// TODO: dumux-course-task 3: // uncomment the incompressiblelocalresidual which is a specialization of the standard immiscible localresidual for one phase incompressible cases and provides an analytic jacobian. // #include <dumux/porousmediumflow/1p/incompressiblelocalresidual.hh> @@ -66,7 +66,7 @@ public: using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >; }; -// TODO: dumux-course-task 3 +// TODO: dumux-course-task 3: // set the OneP Incompressible local residual for the OnePIncompressible type tag. This provides an analytic jacobian to be used for the analytic solution. Change that by setting: // template<class TypeTag> // struct LocalResidual<TypeTag, TTag::OnePIncompressible> { using type = OnePIncompressibleLocalResidual<TypeTag>; }; diff --git a/exercises/exercise-model/README.md b/exercises/exercise-model/README.md index f5cffc19..f643edf0 100644 --- a/exercises/exercise-model/README.md +++ b/exercises/exercise-model/README.md @@ -85,7 +85,7 @@ namespace Dumux::Properties::TTag { struct NonlinearDiffusionTest { - // TODO: Set new model by replacing ModelTypeTag + // TODO: dumux-course-task 3.1: Set new model by replacing ModelTypeTag using InheritsFrom = std::tuple</*ModelTypeTag,*/BoxModel>; // Further property definitions diff --git a/exercises/exercise-model/main.cc b/exercises/exercise-model/main.cc index ee698d91..01ee6c57 100644 --- a/exercises/exercise-model/main.cc +++ b/exercises/exercise-model/main.cc @@ -29,7 +29,7 @@ #include <dumux/nonlinear/newtonsolver.hh> #include <dumux/assembly/fvassembler.hh> -// TODO Task 3.1: Include the header model.hh +// TODO: dumux-course-task 3.1: include the header model.hh /*! * \ingroup NonlinearDiffusion @@ -79,7 +79,7 @@ namespace Dumux::Properties::TTag { struct NonlinearDiffusionTest { - // TODO Task 3.1: We need to set our model by replacing ModelTypeTag + // TODO: dumux-course-task 3.1: we need to set our model by replacing ModelTypeTag using InheritsFrom = std::tuple</*ModelTypeTag,*/BoxModel>; using Scalar = double; @@ -138,7 +138,7 @@ int main(int argc, char** argv) // the problem for the boundary conditions, a solution vector and a grid variables instance. auto gridGeometry = std::make_shared<GridGeometry>(gridManager.grid().leafGridView()); - // TODO Task 3.2: Uncomment when the model is implemented + // TODO: dumux-course-task 3.2: uncomment when the model is implemented // using Scalar = GetPropType<TypeTag, Properties::Scalar>; // using Problem = GetPropType<TypeTag, Properties::Problem>; // using SolutionVector = GetPropType<TypeTag, Properties::SolutionVector>; diff --git a/exercises/exercise-properties/mylocalresidual.hh b/exercises/exercise-properties/mylocalresidual.hh index b2d98dbe..2ff017f1 100644 --- a/exercises/exercise-properties/mylocalresidual.hh +++ b/exercises/exercise-properties/mylocalresidual.hh @@ -59,7 +59,7 @@ public: * \note The volVars can be different to allow computing * the implicit euler time derivative here */ - // TODO: dumux-course-task 3 + // TODO: dumux-course-task 3: // Eliminate density from the storage term NumEqVector computeStorage(const Problem& problem, const SubControlVolume& scv, @@ -95,7 +95,7 @@ public: * \param scvf The sub control volume face to compute the flux on * \param elemFluxVarsCache The cache related to flux computation */ - // TODO: dumux-course-task + // TODO: dumux-course-task 3: // Eliminate the density from the flux term NumEqVector computeFlux(const Problem& problem, const Element& element, diff --git a/exercises/exercise-properties/problem.hh b/exercises/exercise-properties/problem.hh index 8d42a979..bfd13896 100644 --- a/exercises/exercise-properties/problem.hh +++ b/exercises/exercise-properties/problem.hh @@ -107,7 +107,7 @@ public: */ NumEqVector neumannAtPos(const GlobalPosition &globalPos) const { -// TODO: reformulate the neumann boundary condition's values in terms of volume instead of mass injected per meter and second +// TODO: dumux-course-task 3: reformulate the neumann boundary condition's values in terms of volume instead of mass injected per meter and second NumEqVector values(0.0); if (onInlet_(globalPos)) values[contiDNAPLEqIdx] = -0.04; // kg / (m * s) diff --git a/exercises/exercise-properties/properties.hh b/exercises/exercise-properties/properties.hh index c31cca06..c99d71ef 100644 --- a/exercises/exercise-properties/properties.hh +++ b/exercises/exercise-properties/properties.hh @@ -28,7 +28,7 @@ #include "spatialparams.hh" #include "problem.hh" -// TODO: dumux-course-task 3 +// TODO: dumux-course-task 3: // Include the local residual header namespace Dumux::Properties { @@ -47,7 +47,7 @@ struct Grid<TypeTag, TTag::TwoPIncompressible> { using type = Dune::YaspGrid<2>; template<class TypeTag> struct Problem<TypeTag, TTag::TwoPIncompressible> { using type = TwoPTestProblem<TypeTag>; }; -// TODO: dumux-course-task 3 +// TODO: dumux-course-task 3: // Use MyLocalResidual as LocalResidual diff --git a/exercises/exercise-runtimeparams/params.input b/exercises/exercise-runtimeparams/params.input index 184e347b..0efe314f 100644 --- a/exercises/exercise-runtimeparams/params.input +++ b/exercises/exercise-runtimeparams/params.input @@ -11,12 +11,12 @@ Name = runtimeparams_exercise OnlyPlotMaterialLaws = true AquiferDepth = 2700.0 # m InjectionDuration = 2.628e6 # in seconds, i.e. one month -# TODO: Task 2: Create a parameter called "TotalAreaSpecificInflow" -# TODO: Task 3: Run the case with and without a provided value in the input file for "TotalAreaSpecificInflow" +# TODO: dumux-course-task 2: Create a parameter called "TotalAreaSpecificInflow" +# TODO: dumux-course-task 3: Run the case with and without a provided value in the input file for "TotalAreaSpecificInflow" [SpatialParams] PermeabilityAquitard = 1e-15 # m^2 -# TODO: Task 1: Change the Aquitard's Entry Pressure +# TODO: dumux-course-task 1: Change the Aquitard's Entry Pressure Aquitard.BrooksCoreyPcEntry = 4.5e4 # Pa Aquitard.BrooksCoreyLambda = 2.0 Aquitard.Swr = 0.2 diff --git a/exercises/exercise-runtimeparams/problem.hh b/exercises/exercise-runtimeparams/problem.hh index a9c46e82..96cd16ed 100644 --- a/exercises/exercise-runtimeparams/problem.hh +++ b/exercises/exercise-runtimeparams/problem.hh @@ -79,13 +79,13 @@ public: aquiferDepth_ = getParam<Scalar>("Problem.AquiferDepth"); // the duration of the injection, units: second injectionDuration_ = getParamFromGroup<Scalar>("Problem","InjectionDuration"); - // TODO: dumux-course-task 2 + // TODO: dumux-course-task 2: // Set a variable "TotalAreaSpecificInflow" to read in a value from the parameter tree via the input file - // TODO: dumux-course-task 3 + // TODO: dumux-course-task 3: // Set a default value for the above parameter. - // TODO: dumux-course-task 4 + // TODO: dumux-course-task 4: // Provide output describing where the parameter value comes from using parameter bool functions. } @@ -147,7 +147,7 @@ public: { // inject nitrogen. negative values mean injection // units kg/(s*m^2) - // TODO: dumux-course-task 2 + // TODO: dumux-course-task 2: // Incorporate "totalAreaSpecificInflow_" into the injection boundary condition values[Indices::conti0EqIdx + FluidSystem::N2Idx]= -1e-4; values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0; @@ -202,7 +202,7 @@ private: std::string name_; //! Problem name Scalar aquiferDepth_; //! Depth of the aquifer in m Scalar injectionDuration_; //! Duration of the injection in seconds - // TODO: dumux-course-task 2 + // TODO: dumux-course-task 2: // Set a variable "totalAreaSpecificInflow_" to read in a value from the parameter tree via the input file Scalar time_; }; diff --git a/exercises/solution/exercise-biomineralization/biominproblem.hh b/exercises/solution/exercise-biomineralization/biominproblem.hh index 077c6714..af976143 100644 --- a/exercises/solution/exercise-biomineralization/biominproblem.hh +++ b/exercises/solution/exercise-biomineralization/biominproblem.hh @@ -17,7 +17,7 @@ #include <dumux/common/numeqvector.hh> #include <dumux/porousmediumflow/problem.hh> -// TODO: dumux-course-task +// TODO: dumux-course-task 3: // include chemistry file here #include "chemistry/simplebiominreactions.hh" // chemical reactions @@ -53,7 +53,7 @@ class BioMinProblem : public PorousMediumFlowProblem<TypeTag> using Element = typename GridView::template Codim<0>::Entity; using SolutionVector = GetPropType<TypeTag, Properties::SolutionVector>; using SubControlVolume = typename FVElementGeometry::SubControlVolume; - // TODO: dumux-course-task + // TODO: dumux-course-task 3: // set the chemistry TypeTag using Chemistry = typename Dumux::SimpleBiominReactions<NumEqVector, VolumeVariables>; @@ -186,7 +186,7 @@ public: values[conti0EqIdx + CaIdx] = - waterFlux * concCa_ / FluidSystem::molarMass(CaIdx); values[conti0EqIdx + UreaIdx] = - waterFlux * concUrea_ / FluidSystem::molarMass(UreaIdx); } - // TODO: dumux-course-task + // TODO: dumux-course-task 5: // Set CO2 injection below aquitard after the injBioTime if(globalPos[0] < eps_ && globalPos[1] > 2.0 + eps_ @@ -255,7 +255,7 @@ public: { NumEqVector source(0.0); - // TODO: dumux-course-task + // TODO: dumux-course-task 3: // set Chemistry Chemistry chemistry; // set VolumeVariables diff --git a/exercises/solution/exercise-biomineralization/biominspatialparams.hh b/exercises/solution/exercise-biomineralization/biominspatialparams.hh index fccd6cb7..519b7381 100644 --- a/exercises/solution/exercise-biomineralization/biominspatialparams.hh +++ b/exercises/solution/exercise-biomineralization/biominspatialparams.hh @@ -16,7 +16,7 @@ #include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh> #include <dumux/material/fluidmatrixinteractions/2p/brookscorey.hh> #include <dumux/material/fluidmatrixinteractions/porosityprecipitation.hh> -// TODO: dumux-course-task +// TODO: dumux-course-task 6: // include the new permeability law (power law) instead of Kozeny-Carman #include "fluidmatrixinteractions/permeabilitypowerlaw.hh" //the power-law porosity-permeability relation @@ -271,7 +271,7 @@ private: bool isFaultZone_(const GlobalPosition &globalPos) const { return globalPos[dimWorld-2] > 2 - eps_ && globalPos[dimWorld-2] < 3 + eps_;} - // TODO: dumux-course-task + // TODO: dumux-course-task 6: // define the power law as the permeability law PermeabilityPowerLaw<PermeabilityType> permLaw_; PoroLaw poroLaw_; diff --git a/exercises/solution/exercise-biomineralization/chemistry/simplebiominreactions.hh b/exercises/solution/exercise-biomineralization/chemistry/simplebiominreactions.hh index c13d1f4c..3c86581a 100644 --- a/exercises/solution/exercise-biomineralization/chemistry/simplebiominreactions.hh +++ b/exercises/solution/exercise-biomineralization/chemistry/simplebiominreactions.hh @@ -78,7 +78,7 @@ public: const Scalar volFracBiofilm = max(volVars.solidVolumeFraction(BiofilmPhaseIdx),0.0); - // TODO: dumux-course-task + // TODO: dumux-course-task 2: // implement mass of biofilm const Scalar massBiofilm = densityBiofilm * volFracBiofilm; @@ -86,16 +86,17 @@ public: xwCa, volVars.moleFraction(liquidPhaseIdx,CO2Idx)); // [mol_urea/kg_H2O] - // TODO: dumux-course-task + // TODO: dumux-course-task 2: // compute rate of ureolysis by implementing Z_urease,biofilm and r_urea const Scalar Zub = kub_ * massBiofilm; // [kg urease/m³] const Scalar rurea = kUrease_ * Zub * molalityUrea / (kUrea_ + molalityUrea); // [mol/m³s] + // TODO: dumux-course-task 2: // compute/set dissolution and precipitation rate of calcite const Scalar rprec = rurea; // set source terms - // TODO: dumux-course-task + // TODO: dumux-course-task 2: // set the source terms using the reaction rates defined above and signs based on the stoichiometry of the reactions. // Hint: Ammonium occurs in the reaction equation, but is not accounted for in this simplified setup. // Additionally, the consumption of water by the reaction may be neglected, as water is present in excess. diff --git a/exercises/solution/exercise-biomineralization/fluidmatrixinteractions/permeabilitypowerlaw.hh b/exercises/solution/exercise-biomineralization/fluidmatrixinteractions/permeabilitypowerlaw.hh index 9f9a6ff1..a955a5a1 100644 --- a/exercises/solution/exercise-biomineralization/fluidmatrixinteractions/permeabilitypowerlaw.hh +++ b/exercises/solution/exercise-biomineralization/fluidmatrixinteractions/permeabilitypowerlaw.hh @@ -39,11 +39,11 @@ public: PermeabilityType evaluatePermeability(PermeabilityType refPerm, Scalar refPoro, Scalar poro) const { using std::pow; - // TODO: dumux-course-task + // TODO: dumux-course-task 6: // read the exponent for the power law from the input file const Scalar exponent = getParam<Scalar>("PowerLaw.Exponent", 5.0); - // TODO: dumux-course-task + // TODO: dumux-course-task 6: // return the updated permeability according to K=K_0*(poro/refPoro)^exponent return refPerm * pow(poro/refPoro, exponent); } diff --git a/exercises/solution/exercise-biomineralization/params.input b/exercises/solution/exercise-biomineralization/params.input index fe429486..585c4102 100644 --- a/exercises/solution/exercise-biomineralization/params.input +++ b/exercises/solution/exercise-biomineralization/params.input @@ -10,6 +10,8 @@ Name = biomin UpperRight = 20 15 # x-/y-coordinates of the upper-right corner of the grid [m] Cells = 20 15 # x-/y-resolution of the grid +# TODO: dumux-course-task 4: +# vary parameters InjBioTime, InitBiofilm, InjVolumeflux, ConcUrea and ConcCa [Initial] InitDensityW = 997 # [kg/m³] initial wetting density InitPressure = 1e5 # [Pa] initial pressure @@ -46,7 +48,7 @@ KUrea = 0.355 # [mol/kgH2O] Lauchnor et al. 2014 [Brine] Salinity = 0.1 -#TODO: dumux-course-task +# TODO: dumux-course-task 6: # add the power law's exponent parameter PowerLaw.Exponent = 5 [PowerLaw] Exponent = 5.0 diff --git a/exercises/solution/exercise-biomineralization/properties.hh b/exercises/solution/exercise-biomineralization/properties.hh index c2341178..25f3b4ac 100644 --- a/exercises/solution/exercise-biomineralization/properties.hh +++ b/exercises/solution/exercise-biomineralization/properties.hh @@ -18,7 +18,7 @@ #include <dumux/discretization/cctpfa.hh> #include <dumux/porousmediumflow/2pncmin/model.hh> #include <dumux/porousmediumflow/problem.hh> -// TODO: dumux-course-task +// TODO: dumux-course-task 7: // include the CO2 component and tabulated values from DuMux #include <dumux/material/components/co2.hh> //!< CO2 component for use with tabulated values #include <dumux/material/components/defaultco2table.hh> //! Provides the precalculated tabulated values of CO2 density and enthalpy. @@ -55,7 +55,7 @@ struct FluidSystem<TypeTag, TTag::ExerciseBioMin> { private: using Scalar = GetPropType<TypeTag, Properties::Scalar>; - // TODO: dumux-course-task + // TODO: dumux-course-task 7: // use the CO2 component with tabulated values using CO2Impl = Components::CO2<Scalar, GeneratedCO2Tables::CO2Tables>; using H2OType = Components::TabulatedComponent<Components::H2O<Scalar>>; diff --git a/exercises/solution/exercise-grids/params.input b/exercises/solution/exercise-grids/params.input index 04d20959..dcb9ce63 100644 --- a/exercises/solution/exercise-grids/params.input +++ b/exercises/solution/exercise-grids/params.input @@ -6,10 +6,10 @@ TEnd = 3.154e9 # in seconds, i.e ten years # UpperRight = 60 40 # Cells = 24 16 -# TODO: Task 1: Globally refine your grid +# TODO: dumux-course-task 1: Globally refine your grid # Refinement = 2 -# TODO: Task 2: Develop even grid input parameters that can be split into zones +# TODO: dumux-course-task 2: Develop even grid input parameters that can be split into zones # Positions0 = 0 60 # Positions1 = 0 40 # Cells0 = 24 @@ -17,7 +17,7 @@ TEnd = 3.154e9 # in seconds, i.e ten years # Grading0 = 1.0 # Grading1 = 1.0 -# TODO: Task 3: Using the zoning and grading parameters, redevelop your grid to optimize your refinement in the areas that matter. +# TODO: dumux-course-task 3: Using the zoning and grading parameters, redevelop your grid to optimize your refinement in the areas that matter. Positions0 = 0 40 60 Positions1 = 0 25 30 35 40 Cells0 = 10 14 @@ -25,11 +25,11 @@ Cells1 = 10 6 6 1 Grading0 = 1.0 -1.25 Grading1 = 1.0 -1.2 1.2 1.0 -# TODO: Task 4: Run your simulation the provided structured grid file ./grids/grid_structured.msh +# TODO: dumux-course-task 4: Run your simulation the provided structured grid file ./grids/grid_structured.msh # File = ./grids/grid_structured.msh # File = ./grids/grid_structured.dgf -# TODO: Task 5: Run your simulation the provided structured grid file ./grids/grid_unstructured.msh +# TODO: dumux-course-task 5: Run your simulation the provided structured grid file ./grids/grid_unstructured.msh #File = ./grids/grid_unstructured.msh [Problem] diff --git a/exercises/solution/exercise-grids/properties.hh b/exercises/solution/exercise-grids/properties.hh index 01568c1a..8e19ef08 100644 --- a/exercises/solution/exercise-grids/properties.hh +++ b/exercises/solution/exercise-grids/properties.hh @@ -34,15 +34,15 @@ struct Injection2pCC { using InheritsFrom = std::tuple<Injection2p, CCTpfaModel> //Set the grid type // template<class TypeTag> // struct Grid<TypeTag, TTag::Injection2p> { using type = Dune::YaspGrid<2>; }; -// TODO: Task 2: Replace the above Grid Property definition with a more flexible grid (Use Dune::TensorProductCoordinates) +// TODO: dumux-course-task 2: Replace the above Grid Property definition with a more flexible grid (Use Dune::TensorProductCoordinates) template<class TypeTag> struct Grid<TypeTag, TTag::Injection2p> { using type = Dune::YaspGrid<2, Dune::TensorProductCoordinates<double, 2> >; }; -// TODO: Task 4: Replace the above Grid Property definition to read in a external structured grid via a .msh file (Use Dune::ALUGrid and Dune:cube) +// TODO: dumux-course-task 4: Replace the above Grid Property definition to read in a external structured grid via a .msh file (Use Dune::ALUGrid and Dune:cube) // template<class TypeTag> // struct Grid<TypeTag, TTag::Injection2p> { using type = Dune::ALUGrid<2, 2, Dune::cube, Dune::nonconforming>; }; -// TODO: Task 5: Replace the above Grid Property definition to read in a external unstructured grid via a .msh file (Use Dune::ALUGrid and Dune::simplex) +// TODO: dumux-course-task 5: Replace the above Grid Property definition to read in a external unstructured grid via a .msh file (Use Dune::ALUGrid and Dune::simplex) // template<class TypeTag> // struct Grid<TypeTag, TTag::Injection2p> { using type = Dune::ALUGrid<2, 2, Dune::simplex, Dune::nonconforming>; }; diff --git a/exercises/solution/exercise-mainfile/exercise1pa_solution_main.cc b/exercises/solution/exercise-mainfile/exercise1pa_solution_main.cc index ed2d260e..4f2c169a 100644 --- a/exercises/solution/exercise-mainfile/exercise1pa_solution_main.cc +++ b/exercises/solution/exercise-mainfile/exercise1pa_solution_main.cc @@ -87,7 +87,7 @@ int main(int argc, char** argv) Dune::Timer timer; - // TODO: dumux-course-task 3 + // TODO: dumux-course-task 3: // Change the differentiation method to analytic by changing from DiffMethod::numeric to DiffMethod::analytic // the assembler for stationary problems diff --git a/exercises/solution/exercise-mainfile/properties.hh b/exercises/solution/exercise-mainfile/properties.hh index b1421bf1..29dd8a96 100644 --- a/exercises/solution/exercise-mainfile/properties.hh +++ b/exercises/solution/exercise-mainfile/properties.hh @@ -24,7 +24,7 @@ #include <dumux/discretization/box.hh> #include <dumux/porousmediumflow/1p/model.hh> -// TODO: dumux-course-task 3 +// TODO: dumux-course-task 3: // uncomment the incompressiblelocalresidual which is a specialization of the standard immisible localresidual for one phase incompressible cases and provides an analytic jacobian. #include <dumux/porousmediumflow/1p/incompressiblelocalresidual.hh> @@ -66,7 +66,7 @@ public: using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >; }; -// TODO: dumux-course-task 3 +// TODO: dumux-course-task 3: // set the OneP Incompressible local residual for the OnePIncompressible type tag. This provides an analytic jacobian to be used for the analytic solution. Change that by setting: template<class TypeTag> struct LocalResidual<TypeTag, TTag::OnePIncompressible> { using type = OnePIncompressibleLocalResidual<TypeTag>; }; diff --git a/exercises/solution/exercise-model/main.cc b/exercises/solution/exercise-model/main.cc index c8083859..4b847217 100644 --- a/exercises/solution/exercise-model/main.cc +++ b/exercises/solution/exercise-model/main.cc @@ -29,6 +29,7 @@ #include <dumux/nonlinear/newtonsolver.hh> #include <dumux/assembly/fvassembler.hh> +// TODO: dumux-course-task 3.1: include the header model.hh #include "model.hh" /*! @@ -79,7 +80,7 @@ namespace Dumux::Properties::TTag { struct NonlinearDiffusionTest { - // TODO: We need to set our model by replacing ModelTypeTag + // TODO: dumux-course-task 3.1: We need to set our model by replacing ModelTypeTag using InheritsFrom = std::tuple<NonlinearDiffusionModel, BoxModel>; using Scalar = double; @@ -138,6 +139,7 @@ int main(int argc, char** argv) // the problem for the boundary conditions, a solution vector and a grid variables instance. auto gridGeometry = std::make_shared<GridGeometry>(gridManager.grid().leafGridView()); + // TODO: dumux-course-task 3.2: uncomment when the model is implemented using Scalar = GetPropType<TypeTag, Properties::Scalar>; using Problem = GetPropType<TypeTag, Properties::Problem>; using SolutionVector = GetPropType<TypeTag, Properties::SolutionVector>; diff --git a/exercises/solution/exercise-runtimeparams/params.input b/exercises/solution/exercise-runtimeparams/params.input index 4e356277..f4a8792b 100644 --- a/exercises/solution/exercise-runtimeparams/params.input +++ b/exercises/solution/exercise-runtimeparams/params.input @@ -11,12 +11,12 @@ Name = runtimeparams_exercise OnlyPlotMaterialLaws = true AquiferDepth = 2700.0 # m InjectionDuration = 2.628e6 # in seconds, i.e. one month -# TODO: Task 2: Create a parameter called "TotalAreaSpecificInflow" +# TODO: dumux-course-task 2: Create a parameter called "TotalAreaSpecificInflow" TotalAreaSpecificInflow = -1e-4 # kg/(s m^2) [SpatialParams] PermeabilityAquitard = 1e-15 # m^2 -# TODO: Task 1: Change the Aquitard's Entry Pressure +# TODO: dumux-course-task 1: Change the Aquitard's Entry Pressure Aquitard.BrooksCoreyPcEntry = 4.5e3 # Pa Aquitard.BrooksCoreyLambda = 2.0 Aquitard.Swr = 0.2 diff --git a/exercises/solution/exercise-runtimeparams/problem.hh b/exercises/solution/exercise-runtimeparams/problem.hh index a32cada9..d8f1e4bd 100644 --- a/exercises/solution/exercise-runtimeparams/problem.hh +++ b/exercises/solution/exercise-runtimeparams/problem.hh @@ -79,13 +79,13 @@ public: aquiferDepth_ = getParam<Scalar>("Problem.AquiferDepth"); // the duration of the injection, units: second injectionDuration_ = getParamFromGroup<Scalar>("Problem","InjectionDuration"); - // TODO: dumux-course-task 2 + // TODO: dumux-course-task 2: // Set a variable "TotalAreaSpecificInflow" to read in a value from the parameter tree via the input file totalAreaSpecificInflow_ = getParam<Scalar>("Problem.TotalAreaSpecificInflow"); - // TODO: dumux-course-task 3 + // TODO: dumux-course-task 3: // Set a default value for the above parameter. // totalAreaSpecificInflow_ = getParam<Scalar>("Problem.TotalAreaSpecificInflow", -1e-4); - // TODO: dumux-course-task 4 + // TODO: dumux-course-task 4: // Provide output describing where the parameter value comes from using parameter bool functions. // if (hasParamInGroup("Problem","TotalAreaSpecificInflow")) // std::cout << "Parameter value is read from the input file." << std::endl; @@ -151,7 +151,7 @@ public: { // inject nitrogen. negative values mean injection // units kg/(s*m^2) - // TODO: dumux-course-task 2 + // TODO: dumux-course-task 2: // Incorporate "totalAreaSpecificInflow_" into the injection boundary condition values[Indices::conti0EqIdx + FluidSystem::N2Idx] = totalAreaSpecificInflow_; values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0; @@ -206,7 +206,7 @@ private: std::string name_; //! Problem name Scalar aquiferDepth_; //! Depth of the aquifer in m Scalar injectionDuration_; //! Duration of the injection in seconds - // TODO: dumux-course-task 2 + // TODO: dumux-course-task 2: // Set a variable "totalAreaSpecificInflow_" to read in a value from the parameter tree via the input file Scalar totalAreaSpecificInflow_; //! Rate of the Injection in kg/(s m^2) Scalar time_; -- GitLab