diff --git a/exercises/solution/exercise-basic/injection2pniproblem.hh b/exercises/solution/exercise-basic/injection2pniproblem.hh index 6c45f8d2c1064df24dbef107744b365adbf55855..d0356eb988e0bbd04cd6060cc35af3fba1f59804 100644 --- a/exercises/solution/exercise-basic/injection2pniproblem.hh +++ b/exercises/solution/exercise-basic/injection2pniproblem.hh @@ -140,9 +140,9 @@ public: NumEqVector values(0.0); // if we are inside the injection zone set inflow Neumann boundary conditions - if (time_ < injectionDuration_ - && globalPos[1] < 15 + eps_ && globalPos[1] > 7 - eps_ && globalPos[0] > 0.9*this->gridGeometry().bBoxMax()[0]) + if (injectionActive() && onInjectionBoundary(globalPos)) { + // inject nitrogen. negative values mean injection // units kg/(s*m^2) values[Indices::conti0EqIdx + FluidSystem::N2Idx] = -1e-4; @@ -193,6 +193,18 @@ public: //! set the time for the time dependent boundary conditions (called from main) void setTime(Scalar time) { time_ = time; } + + //! Return true if the injection is currently active + bool injectionActive() const + { return time_ < injectionDuration_; } + + //! Return true if the given position is in the injection boundary region + bool onInjectionBoundary(const GlobalPosition& globalPos) const + { + return globalPos[1] < 15. + eps_ + && globalPos[1] > 7. - eps_ + && globalPos[0] > this->gridGeometry().bBoxMax()[0] - eps_; + } private: static constexpr Scalar eps_ = 1e-6; diff --git a/exercises/solution/exercise-basic/params.input b/exercises/solution/exercise-basic/params.input index 6b1b2d2b4e7818e4ed15c507d863e065f741cd79..c60e5c2d6e6d633ed4811d2473742562ce5282a7 100644 --- a/exercises/solution/exercise-basic/params.input +++ b/exercises/solution/exercise-basic/params.input @@ -3,7 +3,6 @@ DtInitial = 3600 # in seconds TEnd = 3.154e9 # in seconds, i.e ten years [Grid] -LowerLeft = 0 0 UpperRight = 60 40 Cells = 24 16