diff --git a/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh b/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh index e53eebf7a8b1f1b38ff21586344235922b0fa30b..cbc66c5dd7c018580d09a6a111e47d567f03526a 100644 --- a/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh +++ b/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh @@ -199,22 +199,26 @@ public: bboxMin_[1] = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePos); bboxMax_[1] = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, YMax); - refTemperature_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefTemperature); + refVelocity_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefVelocity); refPressure_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefPressure); refMassfrac_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefMassfrac); - vxMax_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, VxMax); - bjSlipVel_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, BeaversJosephSlipVel); + refTemperature_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefTemperature); - sinusVelVar_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusVelVar); - sinusPVar_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusPVar); - sinusTVar_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusTVar); - sinusXVar_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusXVar); + sinusVAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusVelAmplitude); + sinusVPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusVelPeriod); + sinusPAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusPressureAmplitude); + sinusPPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusPressurePeriod); + sinusXAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusConcentrationAmplitude); + sinusXPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusConcentrationPeriod); + sinusTAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusTemperatureAmplitude); + sinusTPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusTemperaturePeriod); + bjSlipVel_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, BeaversJosephSlipVel); + alphaBJ_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, AlphaBJ); xMaterialInterface_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, MaterialInterfaceX); + runUpDistanceX_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Problem, RunUpDistanceX); // first part of the interface without coupling initializationTime_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, InitTime); - - alphaBJ_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, AlphaBJ); } catch (Dumux::ParameterException &e) { std::cerr << e << ". Abort!\n"; @@ -512,17 +516,21 @@ public: const SpatialParams &spatialParams() const { return spatialParams_; } + //! \brief Returns the reference velocity. + const Scalar refVelocity() const + { return refVelocity_ + variation_(sinusVAmplitude_, sinusVPeriod_); } + //! \brief Returns the reference pressure. const Scalar refPressure() const - { return refPressure_ + diurnalVariation_(sinusPVar_); } - - //! \brief Returns the reference temperature. - const Scalar refTemperature() const - { return refTemperature_+ diurnalVariation_(sinusTVar_); } + { return refPressure_ + variation_(sinusPAmplitude_, sinusPPeriod_); } //! \brief Returns the reference mass fraction. const Scalar refMassfrac() const - { return refMassfrac_ + diurnalVariation_(sinusXVar_); } + { return refMassfrac_ + variation_(sinusXAmplitude_, sinusXPeriod_); } + + //! \brief Returns the reference temperature. + const Scalar refTemperature() const + { return refTemperature_+ variation_(sinusTAmplitude_, sinusTPeriod_); } private: /*! @@ -550,7 +558,7 @@ private: //! \brief set the profile of the inflow velocity (horizontal direction) const Scalar xVelocity_(const GlobalPosition &globalPos) const { - const Scalar vmax = vxMax_ + hourlyVariation_(sinusVelVar_); + const Scalar vmax = refVelocity(); // const Scalar relativeHeight = (globalPos[1]-bboxMin_[1])/height_(); // linear profile // return vmax*relativeHeight + bjSlipVel_; // BJ slip velocity is added as sqrt(Kxx) @@ -583,19 +591,9 @@ private: fluidState.setMoleFraction(phaseIdx, phaseCompIdx, massFraction[phaseCompIdx]*M1/massToMoleDenominator); } - - const Scalar diurnalVariation_(const Scalar value) const - { - const Scalar time = this->timeManager().time() + this->timeManager().timeStepSize(); - return sin(2*M_PI*time/86400) * value; - } - - - const Scalar hourlyVariation_(const Scalar value) const - { - const Scalar time = this->timeManager().time(); - return sin(2*M_PI*time/3600) * value; - } + // can be used for the variation of a boundary condition + const Scalar variation_(const Scalar amplitude, const Scalar period) const + { return sin(2*M_PI*this->timeManager().time()/period) * amplitude; } bool onLeftBoundary_(const GlobalPosition &globalPos) const { return globalPos[0] < bboxMin_[0] + eps_; } @@ -626,19 +624,23 @@ private: GlobalPosition bboxMin_; GlobalPosition bboxMax_; + Scalar refVelocity_; Scalar refPressure_; - Scalar refTemperature_; Scalar refMassfrac_; + Scalar refTemperature_; + + Scalar sinusVAmplitude_; + Scalar sinusVPeriod_; + Scalar sinusPAmplitude_; + Scalar sinusPPeriod_; + Scalar sinusXAmplitude_; + Scalar sinusXPeriod_; + Scalar sinusTAmplitude_; + Scalar sinusTPeriod_; - Scalar vxMax_; Scalar bjSlipVel_; Scalar alphaBJ_; - Scalar sinusVelVar_; - Scalar sinusPVar_; - Scalar sinusTVar_; - Scalar sinusXVar_; - Scalar xMaterialInterface_; Scalar runUpDistanceX_; Scalar initializationTime_; diff --git a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.input b/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.input index e23bcbb1a225bc9f37cdb64695ce2e7e60ac9d11..8a994c82d99e0856479d80ca5e9dad8505f52d61 100644 --- a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.input +++ b/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.input @@ -78,10 +78,18 @@ StabilizationAlpha = -1.0 ############################################################# [FreeFlow] ############################################################# +RefVelocity = 3.5 RefPressure = 1e5 +RefMassfrac = 0.008 # 0.01 RefTemperature = 298.15 -RefMassfrac = 0.008 -VxMax = 3.5 +SinusVelAmplitude = 0.0 # 0.1 +SinusVelPeriod = 3600 # in seconds +SinusPressureAmplitude = 0.0 # 0.5 +SinusPressurePeriod = 3600 # in seconds +SinusConcentrationAmplitude = 0.0 # 0.5 +SinusConcentrationPeriod = 3600 # in seconds +SinusTemperatureAmplitude = 0.0 # 0.5 +SinusTemperaturePeriod = 3600 # in seconds BeaversJosephSlipVel = 0.00134 ExponentMTC = 0.0 # 1./6., Mass transfer coefficient for S^MTC UseBoundaryLayerModel = 0 # 0 for no boundary layer model, 1 for Blasius, 2 and 3 for turbulent BL, 9 for constant thickness @@ -89,11 +97,6 @@ BoundaryLayerOffset = 0.0 # for BL model like Blasius, determines a virtual ru ConstThickness = 0.0016 # for a constant BL thickness, use BL model 9 MassTransferModel = 0 # 0 for none, 1 for power law, 2 for Schluender model -SinusVelVar = 0.0 # hourly velocity variation -SinusPVar = 0.0 # diurnal pressure variation -SinusTVar = 0.0 # diurnal temperature variation -SinusXVar = 0.0 # diurnal variation of the vapor concentration (massfraction) - ############################################################# [PorousMedium] ############################################################# diff --git a/test/multidomain/2cnistokes2p2cni/test_references/test_2cnistokes2p2cni_reference.input b/test/multidomain/2cnistokes2p2cni/test_references/test_2cnistokes2p2cni_reference.input index 0f7befcc6fe58cf7ef6b6a9f9940ea6bd863fdab..7d1048ba31e3d91bb6aa89d9b7bd032a4f59ef40 100644 --- a/test/multidomain/2cnistokes2p2cni/test_references/test_2cnistokes2p2cni_reference.input +++ b/test/multidomain/2cnistokes2p2cni/test_references/test_2cnistokes2p2cni_reference.input @@ -78,10 +78,18 @@ StabilizationAlpha = -1.0 ############################################################# [FreeFlow] ############################################################# +RefVelocity = 3.5 RefPressure = 1e5 +RefMassfrac = 0.008 # 0.01 RefTemperature = 298.15 -RefMassfrac = 0.008 -VxMax = 3.5 +SinusVelAmplitude = 0.0 # 0.1 +SinusVelPeriod = 3600 # in seconds +SinusPressureAmplitude = 0.0 # 0.5 +SinusPressurePeriod = 3600 # in seconds +SinusConcentrationAmplitude = 0.0 # 0.5 +SinusConcentrationPeriod = 3600 # in seconds +SinusTemperatureAmplitude = 0.0 # 0.5 +SinusTemperaturePeriod = 3600 # in seconds BeaversJosephSlipVel = 0.00134 ExponentMTC = 0.0 # 1./6., Mass transfer coefficient for S^MTC UseBoundaryLayerModel = 0 # 0 for no boundary layer model, 1 for Blasius, 2 and 3 for turbulent BL, 9 for constant thickness @@ -89,11 +97,6 @@ BoundaryLayerOffset = 0.0 # for BL model like Blasius, determines a virtual ru ConstThickness = 0.0016 # for a constant BL thickness, use BL model 9 MassTransferModel = 0 # 0 for none, 1 for power law, 2 for Schluender model -SinusVelVar = 0.0 # hourly velocity variation -SinusPVar = 0.0 # diurnal pressure variation -SinusTVar = 0.0 # diurnal temperature variation -SinusXVar = 0.0 # diurnal variation of the vapor concentration (massfraction) - ############################################################# [PorousMedium] ############################################################# diff --git a/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh b/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh index cf2f0b581e1f53ba30edcd6e3bdbb3be76e4e098..f5bfe913c96eef04398ec93ae6796c3657d33911 100644 --- a/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh +++ b/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh @@ -202,18 +202,26 @@ public: bboxMin_[1] = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePos); bboxMax_[1] = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, YMax); - refTemperature_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefTemperature); + refVelocity_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefVelocity); refPressure_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefPressure); refMassfrac_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefMassfrac); - vxMax_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, VxMax); - bjSlipVel_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, BeaversJosephSlipVel); - sinusVelVar_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusVelVar); + refTemperature_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefTemperature); + + sinusVAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusVelAmplitude); + sinusVPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusVelPeriod); + sinusPAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusPressureAmplitude); + sinusPPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusPressurePeriod); + sinusXAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusConcentrationAmplitude); + sinusXPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusConcentrationPeriod); + sinusTAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusTemperatureAmplitude); + sinusTPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusTemperaturePeriod); + bjSlipVel_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, BeaversJosephSlipVel); + alphaBJ_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, AlphaBJ); xMaterialInterface_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, MaterialInterfaceX); + runUpDistanceX_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Problem, RunUpDistanceX); // first part of the interface without coupling initializationTime_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, InitTime); - - alphaBJ_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, AlphaBJ); } catch (Dumux::ParameterException &e) { std::cerr << e << ". Abort!\n"; @@ -338,9 +346,9 @@ public: values[velocityXIdx] = xVelocity_(globalPos); values[velocityYIdx] = 0.0; - values[pressureIdx] = refPressure_ + values[pressureIdx] = refPressure() + density*this->gravity()[1]*(globalPos[1] - bboxMin_[1]); - values[massOrMoleFracIdx] = refMassfrac_; + values[massOrMoleFracIdx] = refMassfrac(); } /*! @@ -379,7 +387,7 @@ public: && globalPos[1] > bboxMin_[1] && globalPos[1] < bboxMax_[1]) { // rho*v*X at inflow - values[transportEqIdx] = -xVelocity*density*refMassfrac_; + values[transportEqIdx] = -xVelocity * density * refMassfrac(); } } @@ -512,17 +520,21 @@ public: const SpatialParams &spatialParams() const { return spatialParams_; } + //! \brief Returns the reference velocity. + const Scalar refVelocity() const + { return refVelocity_ + variation_(sinusVAmplitude_, sinusVPeriod_); } + //! \brief Returns the reference pressure. const Scalar refPressure() const - { return refPressure_; } - - //! \brief Returns the reference temperature. - const Scalar refTemperature() const - { return refTemperature_; } + { return refPressure_ + variation_(sinusPAmplitude_, sinusPPeriod_); } //! \brief Returns the reference mass fraction. const Scalar refMassfrac() const - { return refMassfrac_; } + { return refMassfrac_ + variation_(sinusXAmplitude_, sinusXPeriod_); } + + //! \brief Returns the reference temperature. + const Scalar refTemperature() const + { return refTemperature_+ variation_(sinusTAmplitude_, sinusTPeriod_); } private: /*! @@ -541,15 +553,15 @@ private: values[velocityXIdx] = xVelocity_(globalPos); values[velocityYIdx] = 0.; - values[pressureIdx] = refPressure_ + values[pressureIdx] = refPressure() + density*this->gravity()[1]*(globalPos[1] - bboxMin_[1]); - values[massOrMoleFracIdx] = refMassfrac_; + values[massOrMoleFracIdx] = refMassfrac(); } //! \brief set the profile of the inflow velocity (horizontal direction) const Scalar xVelocity_(const GlobalPosition &globalPos) const { - const Scalar vmax = vxMax_ + hourlyVariation_(sinusVelVar_); + const Scalar vmax = refVelocity(); // parabolic profile return 4*vmax*(globalPos[1] - bboxMin_[1])*(bboxMax_[1] - globalPos[1]) @@ -569,7 +581,7 @@ private: void updateFluidStateForBC_(FluidState& fluidState) const { fluidState.setTemperature(refTemperature()); - fluidState.setPressure(phaseIdx, refPressure_); + fluidState.setPressure(phaseIdx, refPressure()); Scalar massFraction[numComponents]; massFraction[transportCompIdx] = refMassfrac(); @@ -585,19 +597,9 @@ private: fluidState.setMoleFraction(phaseIdx, phaseCompIdx, massFraction[phaseCompIdx]*M1/massToMoleDenominator); } - // can be used for the diurnal variation of a boundary condition - const Scalar diurnalVariation_(const Scalar value) const - { - const Scalar time = this->timeManager().time(); - return sin(2*M_PI*time/86400) * value; - } - - // can be used for the hourly variation of a boundary condition - const Scalar hourlyVariation_(const Scalar value) const - { - const Scalar time = this->timeManager().time(); - return sin(2*M_PI*time/3600) * value; - } + // can be used for the variation of a boundary condition + const Scalar variation_(const Scalar amplitude, const Scalar period) const + { return sin(2*M_PI*this->timeManager().time()/period) * amplitude; } bool onLeftBoundary_(const GlobalPosition &globalPos) const { return globalPos[0] < bboxMin_[0] + eps_; } @@ -628,13 +630,21 @@ private: GlobalPosition bboxMin_; GlobalPosition bboxMax_; + Scalar refVelocity_; Scalar refPressure_; - Scalar refTemperature_; Scalar refMassfrac_; + Scalar refTemperature_; + + Scalar sinusVAmplitude_; + Scalar sinusVPeriod_; + Scalar sinusPAmplitude_; + Scalar sinusPPeriod_; + Scalar sinusXAmplitude_; + Scalar sinusXPeriod_; + Scalar sinusTAmplitude_; + Scalar sinusTPeriod_; - Scalar vxMax_; Scalar bjSlipVel_; - Scalar sinusVelVar_; Scalar alphaBJ_; Scalar xMaterialInterface_; diff --git a/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.input b/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.input index c3bf32f3005b39499f2904e752637ee9533153e3..e2befdcdbd1fdda7c5bdce9b4872e195578aab3e 100644 --- a/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.input +++ b/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.input @@ -78,12 +78,19 @@ StabilizationAlpha = -1.0 ############################################################# [FreeFlow] ############################################################# +RefVelocity = 3.5 RefPressure = 1e5 +RefMassfrac = 0.008 # 0.01 RefTemperature = 298.15 -RefMassfrac = 0.008 -VxMax = 3.5 +SinusVelAmplitude = 0.0 # 0.1 +SinusVelPeriod = 3600 # in seconds +SinusPressureAmplitude = 0.0 # 0.5 +SinusPressurePeriod = 3600 # in seconds +SinusConcentrationAmplitude = 0.0 # 0.5 +SinusConcentrationPeriod = 3600 # in seconds +SinusTemperatureAmplitude = 0.0 # 0.5 +SinusTemperaturePeriod = 3600 # in seconds BeaversJosephSlipVel = 0.00134 -SinusVelVar = 0.0 ExponentMTC = 0.0 # 1./6., Mass transfer coefficient for S^MTC UseBoundaryLayerModel = 0 # 0 for no boundary layer model, 1 for Blasius, 2 and 3 for turbulent BL, 9 for constant thickness BoundaryLayerOffset = 0.0 # for BL model like Blasius, determines a virtual run-up distance for the flow diff --git a/test/multidomain/2cstokes2p2c/test_references/test_2cstokes2p2c_reference.input b/test/multidomain/2cstokes2p2c/test_references/test_2cstokes2p2c_reference.input index 63d697d9bb3c81360a5d706b3d8387414f9d24d8..9e0ee3fe87187c92f6c343c00b73fc786bc68932 100644 --- a/test/multidomain/2cstokes2p2c/test_references/test_2cstokes2p2c_reference.input +++ b/test/multidomain/2cstokes2p2c/test_references/test_2cstokes2p2c_reference.input @@ -78,12 +78,19 @@ StabilizationAlpha = -1.0 ############################################################# [FreeFlow] ############################################################# +RefVelocity = 3.5 RefPressure = 1e5 +RefMassfrac = 0.008 # 0.01 RefTemperature = 298.15 -RefMassfrac = 0.008 -VxMax = 3.5 +SinusVelAmplitude = 0.0 # 0.1 +SinusVelPeriod = 3600 # in seconds +SinusPressureAmplitude = 0.0 # 0.5 +SinusPressurePeriod = 3600 # in seconds +SinusConcentrationAmplitude = 0.0 # 0.5 +SinusConcentrationPeriod = 3600 # in seconds +SinusTemperatureAmplitude = 0.0 # 0.5 +SinusTemperaturePeriod = 3600 # in seconds BeaversJosephSlipVel = 0.00134 -SinusVelVar = 0.0 ExponentMTC = 0.0 # 1./6., Mass transfer coefficient for S^MTC UseBoundaryLayerModel = 0 # 0 for no boundary layer model, 1 for Blasius, 2 and 3 for turbulent BL, 9 for constant thickness BoundaryLayerOffset = 0.0 # for BL model like Blasius, determines a virtual run-up distance for the flow