Commit e9b6a196 authored by Dion Haefner's avatar Dion Haefner
parents 804c7599 13b864a1
#!/bin/sh
LOCAL=$CI_BUILD_REF
git checkout $CI_BUILD_REF_NAME -q
REMOTE=$(git rev-parse $CI_BUILD_REF_NAME@{upstream})
git checkout $LOCAL -q
if [ "$LOCAL" = "$REMOTE" ]; then
echo "Deploying documentation to dorie-docs.bitballoon.com"
echo "{\"access_token\":\"$CI_BITBALLOON_TOKEN\",\"site_id\":\"$CI_BITBALLOON_ID\"}" > .bitballoon
if [[ -z build-cmake/doc/html/index.html ]]; then
echo "ERROR: no index.html in doc folder"
exit 1
fi
if ! command -v gem >/dev/null 2>&1; then
apt-get install ruby-dev -y
fi
if ! command -v bitballoon >/dev/null 2>&1; then
gem install bitballoon
fi
bitballoon deploy build-cmake/doc/html
else
echo "Commit $LOCAL is not the most recent commit on branch $CI_BUILD_REF_NAME ($REMOTE) - skipping deployment"
fi
......@@ -7,20 +7,34 @@ before_script:
- cd /opt/dune
stages:
- main
- build
- deploy
main_job:
build:main:
script:
- ./dune-common/bin/dunecontrol --only=dorie all
- export PATH=/opt/dune/dorie/build-cmake/bin:$PATH
- ARGS="--output-on-failure" ./dune-common/bin/dunecontrol --only=dorie make test
stage: main
- ARGS="--output-on-failure -j 2" ./dune-common/bin/dunecontrol --only=dorie make test
- ./dune-common/bin/dunecontrol --only=dorie make doc
stage: build
artifacts:
name: "$CI_BUILD_NAME"
paths:
- $CI_PROJECT_DIR/build-cmake/doc/html/
expire_in: 1 week
update_dune_job:
build:update_dune:
script:
- ./dune-common/bin/dunecontrol update || true
- ./dune-common/bin/dunecontrol exec "rm -rf build-cmake"
- ./dune-common/bin/dunecontrol all
- export PATH=/opt/dune/dorie/build-cmake/bin:$PATH
- ARGS="--output-on-failure" ./dune-common/bin/dunecontrol --only=dorie make test
stage: main
- ARGS="--output-on-failure -j 2" ./dune-common/bin/dunecontrol --only=dorie make test
stage: build
deploy:docs:
script:
- cd $CI_PROJECT_DIR && bash .deploy_docs
stage: deploy
only:
- master
# Welcome to DORiE!
(__D__UNE-__O__perated __Ri__chards equation solving __E__nvironment)
[![build status](http://shangrila.iup.uni-heidelberg.de:30000/ci/projects/1/status.png?ref=master)](http://shangrila.iup.uni-heidelberg.de:30000/ci/projects/1?ref=master)
![build status](http://shangrila.iup.uni-heidelberg.de:30000/dorie/dorie-new/badges/master/build.svg)
DORiE is a software suite for solving Richard's Equation. The core feature is a C++ PDE-solver powered by [DUNE](https://dune-project.org/). It implements a Discontinous Galerkin (DG) discretization scheme on structured rectangular / cubic and unstructured simplex grids in two and three spatial dimensions, and makes use of advanced features like adaptive grid refinement.
......@@ -169,6 +169,14 @@ The following software packages are cross-platform, so you should be able to fin
# Usage
## Start an interactive Docker session
In case you built DORiE using Docker and want to start an interactive session, e.g. to build the documentation or do some debugging, you can do so by specifying a custom entrypoint for the container:
docker run -i -t --entrypoint=/bin/bash -v <dir>:/sim dorie
This way, an interactive bash session inside the container will be started (instead of directly running DORiE). Note that DUNE and DORiE are located in `/opt/dune`.
## Documentation
The documentation of the current `master` branch can be found [online](http://dorie-docs.gitballoon.com) (password: `richards`).
......
......@@ -206,7 +206,7 @@ adding an empty line, make text **bold** or ``monospaced``.
time step. At minTimestep, the Newton solver is not allowed to calculate more
than this number of iterations. </definition>
<values> int </values>
<suggestion> 10 </suggestion>
<suggestion> 12 </suggestion>
</parameter>
<parameter name="timestepIncreaseFactor">
......@@ -270,7 +270,7 @@ adding an empty line, make text **bold** or ``monospaced``.
<definition> If the ratio between last and current calculation defect exceeds this value,
the linear operator matrix is reassembled to ensure convergence. </definition>
<values> float </values>
<suggestion> 1E-2 </suggestion>
<suggestion> 5E-2 </suggestion>
</parameter>
<parameter name="LineSearchMaxIterations" hidden="true">
......
......@@ -14,8 +14,8 @@ private:
R dt; //!< current time step
int it; //!< current number of allowed iterations for Newton solver
int verbose; //!< verbosity level
const R eps; //!< error margin
const R dtmax, dtmin; //!< time step limits
const R eps; //!< error margin
const R dtinc, dtdec; //!< time step mutliplicators
R tEnd; //!< simulation time limits
const R itmax,itmin; //!< newton iteration limits
......@@ -32,9 +32,9 @@ public:
: time(config.get<R>("time.start"))
, dt(config.get<R>("time.startTimestep"))
, verbose(config.get<int>("output.verbose"))
, eps(1e-5)
, dtmax(config.get<R>("time.maxTimestep"))
, dtmin(config.get<R>("time.minTimestep"))
, eps(dtmin/10.0)
, dtinc(config.get<R>("time.timestepIncreaseFactor"))
, dtdec(config.get<R>("time.timestepDecreaseFactor"))
, tEnd(config.get<R>("time.end"))
......@@ -48,8 +48,8 @@ public:
userInputCheck();
// Check whether first time step needs adjustment
R changeTime = tsc.getNextTimeStamp(time);
if(changeTime>0.0 && changeTime-time < dt){
const R changeTime = tsc.getNextTimeStamp(time);
if(changeTime>0.0 && time+dt >= changeTime){
dt = changeTime-time-eps;
if(verbose>2){
std::cout << "ADAPTING TIME STEP: DT : "
......@@ -106,26 +106,26 @@ public:
if (!exc) // solution was successfully computed
{
// time has advanced after calculation
time+=dt;
time += dt;
if(time>=tEnd) // Simulation has ended. Do nothing
if(time >= tEnd-eps) // Simulation has ended. Do nothing
return true;
dt = std::min(dt*dtinc,dtmax);
changeTime = tsc.getNextTimeStamp(time);
if(changeTime==time+eps){
if(time >= changeTime-eps && time <= changeTime){
// small step to ensure that next time step starts with new BC
time = changeTime;
changeTime = tsc.getNextTimeStamp(time);
}
if(changeTime<0.0 && time+dt>tEnd){
if(changeTime < 0.0 && time+dt > tEnd){
// time step adjustment to tEnd
dt = tEnd-time;
adapt_to_end = true;
}
else if(changeTime>0.0 && time+dt>=changeTime){
else if(changeTime > 0.0 && time+dt >= changeTime){
// time step adjustment to BC Change
dt = changeTime-time-eps;
adapt_to_bc = true;
......
......@@ -4,13 +4,13 @@ configure_file(convergence.mini.in ${CMAKE_CURRENT_LIST_DIR}/convergence.mini)
#dune_add_system_test(TARGET dorie INIFILE convergence.mini SCRIPT test_dorie.py)
configure_file(ode.mini.in ${CMAKE_CURRENT_LIST_DIR}/ode.mini)
dune_add_system_test(TARGET dorie INIFILE ode.mini SCRIPT test_dorie.py)
#dune_add_system_test(TARGET dorie INIFILE ode.mini SCRIPT test_dorie.py)
configure_file(muphi.mini.in ${CMAKE_CURRENT_LIST_DIR}/muphi.mini)
dune_add_system_test(TARGET dorie INIFILE muphi.mini SCRIPT test_dorie.py)
#dune_add_system_test(TARGET dorie INIFILE muphi.mini SCRIPT test_dorie.py)
configure_file(reference.mini.in ${CMAKE_CURRENT_LIST_DIR}/reference.mini)
dune_add_system_test(TARGET dorie INIFILE reference.mini SCRIPT test_dorie.py)
#dune_add_system_test(TARGET dorie INIFILE reference.mini SCRIPT test_dorie.py)
configure_file(correlation.mini.in ${CMAKE_CURRENT_LIST_DIR}/correlation.mini)
#dune_add_system_test(TARGET dorie-pfg INIFILE correlation.mini SCRIPT test_dorie_pfg.py)
Markdown is supported
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