...
 
Commits (13)
......@@ -2,7 +2,7 @@
build-cmake/
# Exclude generated files
testing/*.mini
test/*.mini
python/parfield/wrapper/pf_from_file.py
python/testtools/wrapper/test_dorie.py
python/testtools/wrapper/test_dorie_pfg.py
......
......@@ -28,7 +28,8 @@ stages:
setup:dune-env: &setup
stage: setup
only:
- web # activate through 'Run pipeline' only.
variables:
- $REBUILD_BASE_IMAGE # must be defined and have non-empty value
tags:
- dind
image: docker:stable
......@@ -86,6 +87,7 @@ build:main:
- CMAKE_FLAGS="$CMAKE_FLAGS"
$DUNECONTROL --only=dorie all
- $DUNECONTROL --only=dorie make build_tests
- $DUNECONTROL --only=dorie make doc
artifacts:
name: "$CI_JOB_NAME"
paths:
......@@ -128,7 +130,7 @@ test:exec_cmds: &test
artifacts:
name: "$CI_JOB_NAME"
paths:
- $CI_PROJECT_DIR/build-cmake/Testing
- $CI_PROJECT_DIR/build-cmake/test
expire_in: 1 day
test:ode:
......@@ -170,6 +172,7 @@ deploy:dockerhub-devel: &deploy
- docker:dind
variables:
DOCKER_DRIVER: overlay2
dependencies: []
before_script:
- $DOCKER_LOGIN
script:
......@@ -187,3 +190,26 @@ deploy:dockerhub-stable:
--build-arg DUNE_ENV_IMAGE=$DUNE_ENV_IMAGE --build-arg PROCNUM=$CPUS_DIND
-t dorie/dorie:$CI_COMMIT_TAG .
- docker push dorie/dorie:$CI_COMMIT_TAG
deploy:sphinx-docs:
stage: deploy
only:
- tags@dorie/dorie
dependencies:
- build:main
before_script:
# install the netfly CLI
- apt-get install -y golang-go golang-glide
- go get -d github.com/netlify/netlifyctl
- cd $HOME/go/src/github.com/netlify/netlifyctl/
- make deps build
- go install
- cd $HOME/go/bin
script:
- ./netlifyctl deploy
-A $NETFLY_DEPLOY_TOKEN
-s $NETFLY_SITE_ID
-P $CI_PROJECT_DIR/build-cmake/doc/html
environment:
name: sphinx-docs
url: https://dorie-doc.netlify.com/
\ No newline at end of file
......@@ -3,6 +3,50 @@
## Unreleased
### Added
* DORiE now depends on [`yaml-cpp`](https://github.com/jbeder/yaml-cpp/), a
library for reading YAML files. The version required is >=5.2.0.
### Changed
* `Simulation` is renamed `RichardsSimulation` and moved to
[richards_simulation.hh](dune/dorie/interface/richards_simulation.hh).
* `RichardsSimulation` now has its own `RichardsSimulationTraits` derived from
`BaseTraits`, which defines all its member types. `BaseTraits` now have
reduced content and are intended to be shared between models/simulations.
## 1.1.1 (2018-08-21)
### Added
* Documentation of Docker images and their usage in the CI/CD pipeline.
### Changed
* Rebuilds of the DUNE environment Docker image are now triggered by setting the
CI variable `REBUILD_BASE_IMAGE` to a non-empty value. Previously, the
builds in stage `setup` where triggered by any manual pipeline run.
* The test system folder was renamed from `testing` to [`test`](test).
### Fixed
* Removed VTK output from `dorie_mass_conservation` executable, which would
cause the corresponding test to fail if the designated output directory did
not exist.
* Removed CI artifacts of `test` stage from `deploy` jobs.
* Correctly estimate the number of row entries in the matrix backend based on
the DG discretization and proper static blocking. This can lead to a
performance improvement for large problems.
* VTK output is now written _before_ the grid is adapted. Previously, the output
displayed the adapted grid and not the one the solution was computed on.
* Grid adaptation is skipped after computing the final solution.
* Path to Pipeline artifacts for `test` stage. The artifacts are now correctly
captured and can be viewed and downloaded from the GitLab web interface.
* Fix a bug in the boundary condition evaluation where an `end()` iterator
was dereferenced without error.
* Re-introduced deployment of the documentation which can now be found online
at https://dorie-doc.netlify.com/.
## 1.1.0 (2018-07-27)
### Added
* DORiE now employs a `SubsamplingVTKWriter` for higher output precision.
Subsampling levels are controlled via the new key `output.subsamplingLevel`.
......
......@@ -49,7 +49,7 @@ add_subdirectory("lib")
add_subdirectory("python")
add_subdirectory("doc")
if(dune-testtools_FOUND)
add_subdirectory("testing")
add_subdirectory("test")
endif()
# finalize the dune project, e.g. generating config.h etc.
......
MIT License
Copyright (c) 2018 Lukas Riedel, Dion Häfner, Ole Klein, Felix Riexinger
Copyright (c) 2018
Dion Häfner,
Ole Klein,
Santiago Ospina De Los Ríos,
Lukas Riedel,
Felix Riexinger
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
......
......@@ -165,7 +165,7 @@ The following software packages are cross-platform, so you should be able to fin
## Documentation
The documentation of the current `master` branch can be found [online](http://dorie-doc.bitballoon.com/).
The documentation of the latest release branch can be found [online](https://dorie-doc.netlify.com/).
The documentation can be built after DORiE has been properly configured (i.e., by calling `dunecontrol`). Note that you might have to re-configure DORiE once after installing it, because some dependencies are installed at configure time (e.g. by `dunecontrol --only=dorie configure`). To build the documentation, just run
......
1.1.0-pre
\ No newline at end of file
1.1.1
\ No newline at end of file
# DORiE Docker Images
DORiE uses [Docker](https://www.docker.com/) images for testing and deploying
applications. These images are publicly available from
[Docker Hub](https://hub.docker.com/). There are two repositories:
* [`dorie/dorie`](https://hub.docker.com/r/dorie/dorie/): The DORiE application.
* [`dorie/dune-env`](https://hub.docker.com/r/dorie/dune-env/): The DUNE
environment image.
`dune-env` is used for compiling DORiE in a 'clean' Ubuntu environment where all
dependencies are already installed. The final DORiE application image is the
DUNE image with DORiE installed.
We differentiate between two base images, one where DUNE is compiled with GCC,
and one where it is compiled with Clang.
## GitLab CI configuration
Both images are updated by the GitLab CI/CD Pipeline defined in
[`.gitlab-ci.yml`](../gitlab-ci.yml).
The `setup` build stage is builds a new DUNE environment image "from scratch".
It is triggered by running a pipeline with the CI variable `REBUILD_BASE_IMAGE`
set to a non-empty value. This is achieved by manually starting the pipeline
from the GitLab web interface ("CI/CD" - "Pipelines" - "Run Pipeline") and
entering the variable as well as an arbitrary value. This should only be
necessary if dependencies or their required versions change.
The `prep` stage updates all APT and DUNE packages in the DUNE environment image
and is run whenever a pipeline includes the deployment of a new application
image.
The `deploy` stage deploys DORiE application images. It compiles DORiE into the
DUNE environment image. This stage is only run if tags are pushed or commits
are pushed to `master`.
\ No newline at end of file
......@@ -4,7 +4,7 @@
#Name of the module
Module: dorie
Version: 1.1.0-pre
Version: 1.1.1
Maintainer: dorieteam@iup.uni-heidelberg.de
#depending on
Depends: dune-pdelab dune-uggrid dune-randomfield
......
......@@ -155,18 +155,23 @@ bool Simulation<Traits>::compute_time_step ()
template<typename Traits>
void Simulation<Traits>::run ()
{
const auto t_start = controller->getTime();
output->write_vtk_output(t_start);
output->write_vtk_output(controller->getTime());
while(controller->doStep()) {
const auto time = controller->getTime();
const auto dt = controller->getDT();
if(!compute_time_step()){
continue;
}
if(adaptivity->adapt_grid(*grid, gv, *gfs, *param, *fboundary, time+dt, *uold, *unew)){ // reset operators if grid changes
operator_setup();
}
output->write_vtk_output(controller->getTime());
if(controller->doStep()
&& adaptivity->adapt_grid(*grid, gv, *gfs, *param, *fboundary,
time+dt, // need "old" boundary condition
*uold, *unew))
{
operator_setup(); // reset operators if grid changes
}
}
}
......
......@@ -19,28 +19,22 @@
namespace Dune{
namespace Dorie{
/// Return the estimation of entries per matrix row for the spatial GridOperator.
/// Return the estimation of entries per matrix row for the spatial GridOperator
/** This supposedly decreases matrix assembly time.
* The values are empirical. The actual matrix statistics can be displayed
* by assembling the IGO Jacobian and calling patternStatistics().
* The values specify the *blocks* per row. DG assembles one block for the
* actual element and one for each of its neighbors.
* \param dim Spatial dimension
* \param geo Geometry type of grid entities
* \return Estimated entries per matrix row
* \return Estimated number of blocks per matrix row
*/
template<typename R = std::size_t>
R estimate_mbe_entries (const int dim, const Dune::GeometryType::BasicType geo)
constexpr R estimate_mbe_entries (const int dim, const Dune::GeometryType::BasicType geo)
{
if(geo==Dune::GeometryType::BasicType::cube){
if(dim==2)
return 5;
else if(dim==3)
return 7;
if (geo==Dune::GeometryType::BasicType::cube){
return 2*dim + 1;
}
else if(geo==Dune::GeometryType::BasicType::simplex){
if(dim==2)
return 13;
else if(dim==3)
return 20;
else if (geo==Dune::GeometryType::BasicType::simplex){
return dim + 2;
}
std::cerr << "Cannot provide MBE entry estimation for given dimension and/or GeometryType!" << std::endl;
return 1;
......
......@@ -272,7 +272,7 @@ namespace Dorie{
{
auto it=bcTimeStamps.begin();
unsigned int n=0;
while(*it<=time && it!=bcTimeStamps.end()){
while(it!=bcTimeStamps.end() && *it<=time){
it++; n++;
}
return n-1;
......
......@@ -263,9 +263,6 @@ public:
*/
double run_test()
{
const auto t_start = this->controller->getTime();
this->output->write_vtk_output(t_start);
double acc{0.0}; // accumulated deviation
double acc_square{0.0}; // accumulated squared deviation
......@@ -301,8 +298,6 @@ public:
std::cout << "wc_new: " << wc_new << std::endl;
std::cout << "integrated flux: " << flux_int << std::endl;
std::cout << "deviation: " << deviation << std::endl;
this->output->write_vtk_output(this->controller->getTime());
}
std::cout << "total deviation: " << acc << std::endl;
......