Commit 6111ba53 authored by Timo Koch's avatar Timo Koch
Browse files

[co2plume] Limit test to 60s. General cleanup.

* Limit automated test time increasing injection rate und reducing TEnd.
* Using the standard grid creator.
* Follow naming conventions.
* Fix indent.
parent 2db362cb
......@@ -3,9 +3,9 @@ add_input_file_links()
add_dumux_test(co2plumeshapeexercise co2plumeshapeexercise co2plumeshapeexercise.cc
python ${dumux_INCLUDE_DIRS}/bin/runtest.py
--script fuzzy
--files ${CMAKE_SOURCE_DIR}/lecture/references/CO2_PlumeShape-reference.vtu
${CMAKE_CURRENT_BINARY_DIR}/CO2_PlumeShape-00018.vtu
--command "${CMAKE_CURRENT_BINARY_DIR}/co2plumeshapeexercise -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/co2plumeshapeexercise.input")
--files ${CMAKE_SOURCE_DIR}/lecture/references/co2plumeshape-reference.vtu
${CMAKE_CURRENT_BINARY_DIR}/co2plumeshape-00003.vtu
--command "${CMAKE_CURRENT_BINARY_DIR}/co2plumeshapeexercise -TimeManager.TEnd 1e7 -TimeManager.EpisodeLength 1e7 -BoundaryConditions.InjectionRate 0.01")
# headers for installation and headercheck
install(FILES
......
[TimeManager]
DtInitial = 250# [s]
TEnd = 2# [s]
DtInitial = 250 # [s]
TEnd = 1e100 # [s] actual end time is controlled by injection rate
EpisodeLength = 1e7 # [s]
[Grid]
UpperRightX = 200. # x-coordinate of the upper-right corner of the grid [m]
UpperRightY = 60. # y-coordinate of the upper-right corner of the grid [m]
NumberOfCellsX = 100 # x-resolution of the grid
NumberOfCellsY = 30 # y-resolution of the grid
UpperRight = 200 60 # upper right corner coordinates [m]
Cells = 100 30 # number of cells in (x,y) directions [-]
[FluidSystem]
NTemperature = 3# [-] number of tabularization entries
......@@ -19,24 +16,23 @@ TemperatureLow = 283.15 # [Pa] low end for tabularization of fluid propertie
TemperatureHigh = 320.15 # [Pa] high end for tabularization of fluid properties
[SpatialParams]
Kh = 1e-13 # [m^2] intrinsic permeability
dipAngle = 0. # [deg] dip angle for the domain
phi = 0.3 # % porosity
Permeability = 1e-13 # [m^2] intrinsic permeability
DipAngle = 0.0 # [deg] dip angle for the domain
Porosity = 0.3 # porosity
[MaterialLaw]
swr = 0.2 # [-] residual wetting phase sat.
snr = 0.2 # [-] residual non-wetting phase sat.
Swr = 0.2 # [-] residual wetting phase sat.
Snr = 0.2 # [-] residual non-wetting phase sat.
Pe = 5e3 # [Pa] capillary entry pressure
Lambda = 2 # [-] Brooks Corey parameter
[SimulationControl]
Name = CO2_PlumeShape# [-] the name of the output files
Name = co2plumeshape # the name of the output files
[InitialConditions]
Temperature = 283.15 # [K] initial temperature of injected CO2
Pressure = 1.5e7 # [Pa] initial pressure
[BoundaryConditions]
massInj_ = 0.001 # [kg/s] mass injection of CO2
Temperature_inj = 313.15 # [K] temperature of injected CO2
InjectionRate = 0.001 # [kg/s] mass injection of CO2
InjectionTemperature = 313.15 # [K] temperature of injected CO2
This diff is collapsed.
......@@ -16,8 +16,8 @@
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
*****************************************************************************/
#ifndef CO2_PLUMESHAPE_SPATIALPARAMETERS_HH_
#define CO2_PLUMESHAPE_SPATIALPARAMETERS_HH_
#ifndef CO2_PLUMESHAPE_SPATIALPARAMETERS_HH
#define CO2_PLUMESHAPE_SPATIALPARAMETERS_HH
#include <dumux/material/spatialparams/implicit.hh>
#include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh>
......@@ -79,7 +79,6 @@ class PlumeShapeSpatialParams : public ImplicitSpatialParams<TypeTag>
};
typedef Dune::FieldVector<CoordScalar,dimWorld> GlobalPosition;
typedef Dune::FieldVector<CoordScalar,dimWorld> Vector;
typedef typename GET_PROP_TYPE(TypeTag, FluxVariables) FluxVariables;
typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables;
......@@ -97,26 +96,24 @@ public:
* \param gv The grid view
*/
PlumeShapeSpatialParams(const GridView &gridView)
: ParentType(gridView),
k_(0)
: ParentType(gridView), k_(0)
{
// layerBottom_ = 22.0;
// intrinsic permeabilities
kh_ = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.Kh);
permeability_ = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.Permeability);
// porosity and permeability
porosity_ = 0.35;
// k_ = 0.;
for (int i=0; i < dim; i++ )
k_[i][i] = kh_; // [m^2]
k_[i][i] = permeability_; // [m^2]
// porosities
porosity_ = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.phi);
porosity_ = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.Porosity);
// residual saturations
materialParams_.setSwr(GET_RUNTIME_PARAM(TypeTag, Scalar, MaterialLaw.swr));
materialParams_.setSnr(GET_RUNTIME_PARAM(TypeTag, Scalar, MaterialLaw.snr));
materialParams_.setSwr(GET_RUNTIME_PARAM(TypeTag, Scalar, MaterialLaw.Swr));
materialParams_.setSnr(GET_RUNTIME_PARAM(TypeTag, Scalar, MaterialLaw.Snr));
// parameters for the Brooks-Corey law
materialParams_.setPe(GET_RUNTIME_PARAM(TypeTag, Scalar, MaterialLaw.Pe));
......@@ -134,13 +131,11 @@ public:
* \param fvElemGeom The current finite volume geometry of the element
* \param scvIdx The index of the sub-control volume
*/
const Dune::FieldMatrix<Scalar, dim, dim> intrinsicPermeability(const Element &element,
const FVElementGeometry &fvElemGeom,
int scvIdx) const
const Dune::FieldMatrix<Scalar, dim, dim>&
intrinsicPermeability(const Element &element,
const FVElementGeometry &fvElemGeom,
int scvIdx) const
{
// const GlobalPosition &pos = fvElemGeom.subContVol[scvIdx].global;
// if (isFineMaterial_(pos))
// return K_;
return k_;
}
......@@ -152,13 +147,10 @@ public:
* \param scvIdx The local index of the sub-control volume where
* the porosity needs to be defined
*/
Scalar porosity(const Element &element,
const FVElementGeometry &fvElemGeom,
int scvIdx) const
const Scalar porosity(const Element &element,
const FVElementGeometry &fvElemGeom,
int scvIdx) const
{
// const GlobalPosition &pos = fvElemGeom.subContVol[scvIdx].global;
// if (isFineMaterial_(pos))
// return finePorosity_;
return porosity_;
}
......@@ -171,12 +163,9 @@ public:
* \param scvIdx The index of the sub-control volume
*/
const MaterialLawParams& materialLawParams(const Element &element,
const FVElementGeometry &fvElemGeom,
int scvIdx) const
const FVElementGeometry &fvElemGeom,
int scvIdx) const
{
// const GlobalPosition &pos = fvElemGeom.subContVol[scvIdx].global;
// if (isFineMaterial_(pos))
// return fineMaterialParams_;
return materialParams_;
}
......@@ -228,16 +217,12 @@ public:
}
private:
Scalar kh_;
Scalar permeability_;
Dune::FieldMatrix<Scalar, dim, dim> k_;
Scalar porosity_;
MaterialLawParams materialParams_;
};
}
} // end namespace Dumux
#endif
......@@ -16,7 +16,7 @@ rate of 0.001~kg CO$_2$/s is injected into an aquifer with an absolute permeabil
Questions you should try to answer:
\begin{itemize}
\item What does the plume shape look like for different setups of $K_h$
\item What does the plume shape look like for different permeabilities $K_h$?
\item What does the plume shape look like for different setups of injected mass rate ($MASS\_INJ$)?
\item Can you find similarities in plume shape among the cases? Which setups look similar?
\item According to what rule do they look similar?
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment