Commit 60dbc6c5 authored by Martin Schneider's avatar Martin Schneider
Browse files

Merge branch 'feature/limit-tests-to-one-minute' into 'master'

Feature/limit tests to one minute

Limit the tests in lecture to a maximum of 60 seconds to reduce computational effort for testing.

* [x] Fix fuelcell
* [x] Fix co2plume
* [x] Fix sagd
* [x] Fix convective mixing
* [ ] Fix naplinfiltrationexercise
* [x] Fix remediationscenariosexercise

See merge request !8
parents 0fb20382 7bbda88d
......@@ -25,12 +25,11 @@
#ifndef DUMUX_HETEROGENEOUS_CO2TABLES_HH
#define DUMUX_HETEROGENEOUS_CO2TABLES_HH
#include <cassert>
#include <dumux/material/components/co2tablereader.hh>
namespace Dumux
{
namespace ConvMixCO2Tables
namespace CO2TablesBenchmarkThree
{
// the real work is done by some external program which provides
// ready-to-use tables.
......
......@@ -45,11 +45,7 @@ namespace Properties
NEW_TYPE_TAG(LensOnePTwoCProblem, INHERITS_FROM(BoxOnePTwoC));
// Set the grid type
#if HAVE_UG
SET_TYPE_PROP(LensOnePTwoCProblem, Grid, Dune::UGGrid<2>);
#else
SET_TYPE_PROP(LensOnePTwoCProblem, Grid, Dune::YaspGrid<2>);
#endif
// Set the problem property
SET_TYPE_PROP(LensOnePTwoCProblem, Problem, Dumux::LensOnePTwoCProblem<TypeTag>);
......
......@@ -45,11 +45,7 @@ namespace Properties
NEW_TYPE_TAG(LensTwoPTwoCProblem, INHERITS_FROM(BoxTwoPTwoC, Lens2pSpatialParams));
// Set the grid type
#if HAVE_UG
SET_TYPE_PROP(LensTwoPTwoCProblem, Grid, Dune::UGGrid<2>);
#else
SET_TYPE_PROP(LensTwoPTwoCProblem, Grid, Dune::YaspGrid<2>);
#endif
// Set the problem property
SET_TYPE_PROP(LensTwoPTwoCProblem, Problem, Dumux::LensTwoPTwoCProblem<TypeTag>);
......
......@@ -49,11 +49,7 @@ namespace Properties
NEW_TYPE_TAG(LensTwoPProblem, INHERITS_FROM(BoxTwoP, Lens2pSpatialParams));
// Set the grid type
#if HAVE_UG
SET_TYPE_PROP(LensTwoPProblem, Grid, Dune::UGGrid<2>);
#else
SET_TYPE_PROP(LensTwoPProblem, Grid, Dune::YaspGrid<2>);
#endif
// Set the problem property
SET_TYPE_PROP(LensTwoPProblem, Problem, LensTwoPProblem<TypeTag>);
......@@ -365,8 +361,8 @@ private:
*/
bool isInitial_(const GlobalPosition &globalPos) const
{
return (globalPos[1] > 1.0 && globalPos[1] < 1.25 && globalPos[0] > 1.7
&& globalPos[0] < 2.3);
return (globalPos[1] > 1.0 + eps_ && globalPos[1] < 1.25 - eps_ && globalPos[0] > 1.7 + eps_
&& globalPos[0] < 2.3 - eps_);
}
};
} //end namespace
......
......@@ -45,11 +45,7 @@ namespace Properties
NEW_TYPE_TAG(LensOnePTwoCProblem, INHERITS_FROM(BoxOnePTwoC));
// Set the grid type
#if HAVE_UG
SET_TYPE_PROP(LensOnePTwoCProblem, Grid, Dune::UGGrid<2>);
#else
SET_TYPE_PROP(LensOnePTwoCProblem, Grid, Dune::YaspGrid<2>);
#endif
// Set the problem property
SET_TYPE_PROP(LensOnePTwoCProblem, Problem, Dumux::LensOnePTwoCProblem<TypeTag>);
......
......@@ -47,11 +47,7 @@ namespace Properties
NEW_TYPE_TAG(LensTwoPProblem, INHERITS_FROM(BoxTwoP, Lens2pSpatialParams));
// Set the grid type
#if HAVE_UG
SET_TYPE_PROP(LensTwoPProblem, Grid, Dune::UGGrid<2>);
#else
SET_TYPE_PROP(LensTwoPProblem, Grid, Dune::YaspGrid<2>);
#endif
// Set the problem property
SET_TYPE_PROP(LensTwoPProblem, Problem, LensTwoPProblem<TypeTag>);
......@@ -367,10 +363,10 @@ private:
*/
bool onInlet_(const GlobalPosition &globalPos) const
{
Scalar width = this->bBoxMax()[0] - this->bBoxMin()[0];
Scalar lambda = (this->bBoxMax()[0] - globalPos[0])/width;
return (onUpperBoundary_(globalPos) && (this->bBoxMax()[0]-0.45*width)/width > lambda
&& lambda > (this->bBoxMax()[0]-0.55*width)/width);
const Scalar width = this->bBoxMax()[0] - this->bBoxMin()[0];
const Scalar lambda = (this->bBoxMax()[0] - globalPos[0])/width;
return (onUpperBoundary_(globalPos) && (this->bBoxMax()[0]-0.45*width)/width > lambda + eps_
&& (this->bBoxMax()[0]-0.55*width)/width < lambda - eps_);
}
Scalar eps_;
......
......@@ -5,7 +5,8 @@ add_dumux_test(lens2pexercise2 lens2pexercise2 lens2pexercise2.cc
--script fuzzy
--files ${CMAKE_SOURCE_DIR}/lecture/references/lens-2p-exercise2-reference.vtu
${CMAKE_CURRENT_BINARY_DIR}/lens-2p-00052.vtu
--command "${CMAKE_CURRENT_BINARY_DIR}/lens2pexercise2")
--command "${CMAKE_CURRENT_BINARY_DIR}/lens2pexercise2"
--zeroThreshold {"Sn":0.001})
# headers for installation and headercheck
install(FILES
......
......@@ -48,11 +48,7 @@ namespace Properties
NEW_TYPE_TAG(LensTwoPProblem, INHERITS_FROM(BoxTwoP, Lens2pSpatialParams));
// Set the grid type
#if HAVE_UG
SET_TYPE_PROP(LensTwoPProblem, Grid, Dune::UGGrid<2>);
#else
SET_TYPE_PROP(LensTwoPProblem, Grid, Dune::YaspGrid<2>);
#endif
// Set the problem property
SET_TYPE_PROP(LensTwoPProblem, Problem, LensTwoPProblem<TypeTag>);
......@@ -425,10 +421,10 @@ private:
*/
bool onInlet_(const GlobalPosition &globalPos) const
{
Scalar width = this->bBoxMax()[0] - this->bBoxMin()[0];
Scalar lambda = (this->bBoxMax()[0] - globalPos[0])/width;
return (onUpperBoundary_(globalPos) && (this->bBoxMax()[0]-0.40*width)/width > lambda
&& lambda > (this->bBoxMax()[0]-0.60*width)/width);
const Scalar width = this->bBoxMax()[0] - this->bBoxMin()[0];
const Scalar lambda = (this->bBoxMax()[0] - globalPos[0])/width;
return (onUpperBoundary_(globalPos) && (this->bBoxMax()[0]-0.40*width)/width > lambda + eps_
&& (this->bBoxMax()[0]-0.60*width)/width < lambda - eps_);
}
Scalar eps_;
......
......@@ -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?
......
// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
// vi: set et ts=4 sw=4 sts=4:
/*****************************************************************************
* See the file COPYING for full copying permissions. *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
*****************************************************************************/
/**
* \file
*
* \brief Provides the class with the tabulated values of CO2 for the
* benchmark3 problem
*/
#ifndef DUMUX_BRINEDISPLACEMENT_CO2TABLES_HH
#define DUMUX_BRINEDISPLACEMENT_CO2TABLES_HH
#include <assert.h>
#include <dumux/material/components/co2tablereader.hh>
namespace Dumux
{
namespace Injection
{
// the real work is done by some external program which provides
// ready-to-use tables.
#include "co2values.inc"
}
}
#endif
......@@ -4,8 +4,8 @@ add_dumux_test(columnxyleneexercise columnxyleneexercise columnxyleneexercise.cc
python ${dumux_INCLUDE_DIRS}/bin/runtest.py
--script fuzzy
--files ${CMAKE_SOURCE_DIR}/lecture/references/columnxylol-reference.vtu
${CMAKE_CURRENT_BINARY_DIR}/columnxylol-00039.vtu
--command "${CMAKE_CURRENT_BINARY_DIR}/columnxyleneexercise -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/columnxyleneexercise.input -Grid.File ${CMAKE_CURRENT_SOURCE_DIR}/grids/column.dgf -TimeManager.OutputInterval 100")
${CMAKE_CURRENT_BINARY_DIR}/columnxylol-00008.vtu
--command "${CMAKE_CURRENT_BINARY_DIR}/columnxyleneexercise -Grid.File ${CMAKE_CURRENT_SOURCE_DIR}/grids/column.dgf -TimeManager.OutputInterval 100 -TimeManager.TEnd 600")
# headers for installation and headercheck
install(FILES
......
......@@ -2,8 +2,9 @@
[TimeManager]
DtInitial = 1 # [s]
TEnd = 3600 # [s]
TEnd = 1800 # [s]
OutputInterval = 1
MaxTimeStepSize = 1
[Grid]
File = ./grids/column.dgf
......
......@@ -31,8 +31,6 @@
#include <dumux/porousmediumflow/3p3c/implicit/model.hh>
#include <dumux/porousmediumflow/implicit/problem.hh>
//#include <dumux/common/deprecated.hh>
#include "columnxylenespatialparams.hh"
#define ISOTHERMAL 0
......@@ -60,20 +58,8 @@ SET_TYPE_PROP(ColumnProblem,
// Enable gravity
SET_BOOL_PROP(ColumnProblem, ProblemEnableGravity, true);
// Use forward differences instead of central differences
SET_INT_PROP(ColumnProblem, ImplicitNumericDifferenceMethod, 1);
// Maximum tolerated relative error in the Newton method
SET_SCALAR_PROP(ColumnProblem, NewtonMaxRelativeShift, 1e-4);
// Write newton convergence
SET_BOOL_PROP(ColumnProblem, NewtonWriteConvergence, false);
// Use line search
SET_BOOL_PROP(ColumnProblem, NewtonUseLineSearch, true);
// Set the maximum time step
SET_SCALAR_PROP(ColumnProblem, TimeManagerMaxTimeStepSize, 1.);
}
......@@ -296,39 +282,39 @@ private:
void initial_(PrimaryVariables &values,
const GlobalPosition &globalPos) const
{
Scalar y = globalPos[1];
const Scalar y = globalPos[1];
values[temperatureIdx] = 296.15;
values[pressureIdx] = 1.e5;
if(y > 1.2-eps_){
if(y > 1.2 - eps_){
values[switch2Idx] = 0.112; // almost no contaminant component
values[switch1Idx] = 0.005;
} else if(y < 1.2-0.3){ // extended domain
} else if(y < 1.2-0.3 + eps_){ // extended domain
values[switch2Idx] = 1.e-4; // almost no contaminant component
values[switch1Idx] = 0.005;
} else {
values[switch1Idx] = 0.005;
if((y<=1.2-0.001)&&(y>=1.2-0.0148)) values[switch2Idx] = 0+((1.2-y)/0.0148)*0.112;
if((y<1.2-0.0148)&&(y>=1.2-0.0296)) values[switch2Idx] = 0.112+(((1.2-y)-0.0148)/0.0148)*(0.120-0.112);
if((y<1.2-0.0296)&&(y>=1.2-0.0444)) values[switch2Idx] = 0.120+(((1.2-y)-0.0296)/0.0148)*(0.125-0.120);
if((y<1.2-0.0444)&&(y>=1.2-0.0592)) values[switch2Idx] = 0.125+(((1.2-y)-0.0444)/0.0148)*(0.137-0.125);
if((y<1.2-0.0592)&&(y>=1.2-0.0740)) values[switch2Idx] = 0.137+(((1.2-y)-0.0592)/0.0148)*(0.150-0.137);
if((y<1.2-0.0740)&&(y>=1.2-0.0888)) values[switch2Idx] = 0.150+(((1.2-y)-0.0740)/0.0148)*(0.165-0.150);
if((y<1.2-0.0888)&&(y>=1.2-0.1036)) values[switch2Idx] = 0.165+(((1.2-y)-0.0888)/0.0148)*(0.182-0.165);
if((y<1.2-0.1036)&&(y>=1.2-0.1184)) values[switch2Idx] = 0.182+(((1.2-y)-0.1036)/0.0148)*(0.202-0.182);
if((y<1.2-0.1184)&&(y>=1.2-0.1332)) values[switch2Idx] = 0.202+(((1.2-y)-0.1184)/0.0148)*(0.226-0.202);
if((y<1.2-0.1332)&&(y>=1.2-0.1480)) values[switch2Idx] = 0.226+(((1.2-y)-0.1332)/0.0148)*(0.257-0.226);
if((y<1.2-0.1480)&&(y>=1.2-0.1628)) values[switch2Idx] = 0.257+(((1.2-y)-0.1480)/0.0148)*(0.297-0.257);
if((y<1.2-0.1628)&&(y>=1.2-0.1776)) values[switch2Idx] = 0.297+(((1.2-y)-0.1628)/0.0148)*(0.352-0.297);
if((y<1.2-0.1776)&&(y>=1.2-0.1924)) values[switch2Idx] = 0.352+(((1.2-y)-0.1776)/0.0148)*(0.426-0.352);
if((y<1.2-0.1924)&&(y>=1.2-0.2072)) values[switch2Idx] = 0.426+(((1.2-y)-0.1924)/0.0148)*(0.522-0.426);
if((y<1.2-0.2072)&&(y>=1.2-0.2220)) values[switch2Idx] = 0.522+(((1.2-y)-0.2072)/0.0148)*(0.640-0.522);
if((y<1.2-0.2220)&&(y>=1.2-0.2368)) values[switch2Idx] = 0.640+(((1.2-y)-0.2220)/0.0148)*(0.767-0.640);
if((y<1.2-0.2368)&&(y>=1.2-0.2516)) values[switch2Idx] = 0.767+(((1.2-y)-0.2368)/0.0148)*(0.878-0.767);
if((y<1.2-0.2516)&&(y>=1.2-0.2664)) values[switch2Idx] = 0.878+(((1.2-y)-0.2516)/0.0148)*(0.953-0.878);
if((y<1.2-0.2664)&&(y>=1.2-0.2812)) values[switch2Idx] = 0.953+(((1.2-y)-0.2664)/0.0148)*(0.988-0.953);
if((y<1.2-0.2812)&&(y>=1.2-0.3000)) values[switch2Idx] = 0.988;
if((y<1.2-0.001+eps_)&&(y>1.2-0.0148-eps_)) values[switch2Idx] = 0+((1.2-y)/0.0148)*0.112;
if((y<1.2-0.0148-eps_)&&(y>1.2-0.0296-eps_)) values[switch2Idx] = 0.112+(((1.2-y)-0.0148)/0.0148)*(0.120-0.112);
if((y<1.2-0.0296-eps_)&&(y>1.2-0.0444-eps_)) values[switch2Idx] = 0.120+(((1.2-y)-0.0296)/0.0148)*(0.125-0.120);
if((y<1.2-0.0444-eps_)&&(y>1.2-0.0592-eps_)) values[switch2Idx] = 0.125+(((1.2-y)-0.0444)/0.0148)*(0.137-0.125);
if((y<1.2-0.0592-eps_)&&(y>1.2-0.0740-eps_)) values[switch2Idx] = 0.137+(((1.2-y)-0.0592)/0.0148)*(0.150-0.137);
if((y<1.2-0.0740-eps_)&&(y>1.2-0.0888-eps_)) values[switch2Idx] = 0.150+(((1.2-y)-0.0740)/0.0148)*(0.165-0.150);
if((y<1.2-0.0888-eps_)&&(y>1.2-0.1036-eps_)) values[switch2Idx] = 0.165+(((1.2-y)-0.0888)/0.0148)*(0.182-0.165);
if((y<1.2-0.1036-eps_)&&(y>1.2-0.1184-eps_)) values[switch2Idx] = 0.182+(((1.2-y)-0.1036)/0.0148)*(0.202-0.182);
if((y<1.2-0.1184-eps_)&&(y>1.2-0.1332-eps_)) values[switch2Idx] = 0.202+(((1.2-y)-0.1184)/0.0148)*(0.226-0.202);
if((y<1.2-0.1332-eps_)&&(y>1.2-0.1480-eps_)) values[switch2Idx] = 0.226+(((1.2-y)-0.1332)/0.0148)*(0.257-0.226);
if((y<1.2-0.1480-eps_)&&(y>1.2-0.1628-eps_)) values[switch2Idx] = 0.257+(((1.2-y)-0.1480)/0.0148)*(0.297-0.257);
if((y<1.2-0.1628-eps_)&&(y>1.2-0.1776-eps_)) values[switch2Idx] = 0.297+(((1.2-y)-0.1628)/0.0148)*(0.352-0.297);
if((y<1.2-0.1776-eps_)&&(y>1.2-0.1924-eps_)) values[switch2Idx] = 0.352+(((1.2-y)-0.1776)/0.0148)*(0.426-0.352);
if((y<1.2-0.1924-eps_)&&(y>1.2-0.2072-eps_)) values[switch2Idx] = 0.426+(((1.2-y)-0.1924)/0.0148)*(0.522-0.426);
if((y<1.2-0.2072-eps_)&&(y>1.2-0.2220-eps_)) values[switch2Idx] = 0.522+(((1.2-y)-0.2072)/0.0148)*(0.640-0.522);
if((y<1.2-0.2220-eps_)&&(y>1.2-0.2368-eps_)) values[switch2Idx] = 0.640+(((1.2-y)-0.2220)/0.0148)*(0.767-0.640);
if((y<1.2-0.2368-eps_)&&(y>1.2-0.2516-eps_)) values[switch2Idx] = 0.767+(((1.2-y)-0.2368)/0.0148)*(0.878-0.767);
if((y<1.2-0.2516-eps_)&&(y>1.2-0.2664-eps_)) values[switch2Idx] = 0.878+(((1.2-y)-0.2516)/0.0148)*(0.953-0.878);
if((y<1.2-0.2664-eps_)&&(y>1.2-0.2812-eps_)) values[switch2Idx] = 0.953+(((1.2-y)-0.2664)/0.0148)*(0.988-0.953);
if((y<1.2-0.2812-eps_)&&(y>1.2-0.3000-eps_)) values[switch2Idx] = 0.988;
}
}
......
......@@ -63,18 +63,9 @@ SET_TYPE_PROP(ColumnProblem,
// Enable gravity
SET_BOOL_PROP(ColumnProblem, ProblemEnableGravity, true);
// Use forward differences instead of central differences
SET_INT_PROP(ColumnProblem, ImplicitNumericDifferenceMethod, 1);
// Maximum tolerated relative error in the Newton method
SET_SCALAR_PROP(ColumnProblem, NewtonMaxRelativeShift, 1e-4);
// Write newton convergence
SET_BOOL_PROP(ColumnProblem, NewtonWriteConvergence, false);
// Use line search
SET_BOOL_PROP(ColumnProblem, NewtonUseLineSearch, true);
// Set the maximum time step
SET_SCALAR_PROP(ColumnProblem, TimeManagerMaxTimeStepSize, 1.);
}
......@@ -280,52 +271,9 @@ public:
}
bool shouldWriteRestartFile() const
{
return 0;
}
/*
bool shouldWriteOutput() const
{
return
this->timeManager().timeStepIndex() == 0 ||
this->timeManager().timeStepIndex() == 10 ||
this->timeManager().timeStepIndex() == 20 ||
this->timeManager().timeStepIndex() == 50 ||
this->timeManager().timeStepIndex() == 100 ||
this->timeManager().timeStepIndex() == 200 ||
this->timeManager().timeStepIndex() == 300 ||
this->timeManager().timeStepIndex() == 400 ||
this->timeManager().timeStepIndex() == 500 ||
this->timeManager().timeStepIndex() == 600 ||
this->timeManager().timeStepIndex() == 700 ||
this->timeManager().timeStepIndex() == 800 ||
this->timeManager().timeStepIndex() == 900 ||
this->timeManager().timeStepIndex() == 1000 ||
this->timeManager().timeStepIndex() == 1100 ||
this->timeManager().timeStepIndex() == 1200 ||
this->timeManager().timeStepIndex() == 1300 ||
this->timeManager().timeStepIndex() == 1400 ||
this->timeManager().timeStepIndex() == 1500 ||
this->timeManager().timeStepIndex() == 1600 ||
this->timeManager().timeStepIndex() == 1700 ||
this->timeManager().timeStepIndex() == 1800 ||
this->timeManager().timeStepIndex() == 1900 ||
this->timeManager().timeStepIndex() == 2000 ||
this->timeManager().timeStepIndex() == 2100 ||
this->timeManager().timeStepIndex() == 2200 ||
this->timeManager().timeStepIndex() == 2300 ||
this->timeManager().timeStepIndex() == 2400 ||
this->timeManager().timeStepIndex() == 2500 ||
this->timeManager().timeStepIndex() == 2600 ||
this->timeManager().timeStepIndex() == 2700 ||
this->timeManager().timeStepIndex() == 2800 ||
this->timeManager().timeStepIndex() == 2900 ||
this->timeManager().willBeFinished();
}
*/
{
return 0;
}