Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • lisa_julia.nebel_at_tu-dresden.de/dune-solvers
  • patrick.jaap_at_tu-dresden.de/dune-solvers
  • burchardt_at_igpm.rwth-aachen.de/dune-solvers
  • agnumpde/dune-solvers
4 results
Select Git revision
Show changes
Commits on Source (735)
Showing with 226 additions and 224 deletions
# /
/configure
/Makefile.in
/Makefile
/config.*
/dune-solvers.pc
/depcomp
/ltmain.sh
/dependencies.m4
/stamp-h1
/dune
/am
/libtool
/autom4te.cache
/missing
/aclocal.m4
/install-sh
/compile
/test-driver
# /doc/
/doc/Makefile.in
/doc/Makefile
# /doc/doxygen/
/doc/doxygen/doxygen-tag
/doc/doxygen/doxygen.log
/doc/doxygen/doxyerr.log
/doc/doxygen/html
/doc/doxygen/Makefile.in
/doc/doxygen/Makefile
/doc/doxygen/Doxyfile
/doc/doxygen/Doxyfile.in
# /dune/
/dune/Makefile.in
/dune/Makefile
# /dune/solvers/
/dune/solvers/Makefile.in
/dune/solvers/Makefile
# /dune/solvers/common/
/dune/solvers/common/Makefile.in
/dune/solvers/common/Makefile
# /dune/solvers/iterationsteps/
/dune/solvers/iterationsteps/Makefile.in
/dune/solvers/iterationsteps/Makefile
# /dune/solvers/norms/
/dune/solvers/norms/Makefile.in
/dune/solvers/norms/Makefile
# /dune/solvers/operators/
/dune/solvers/operators/Makefile.in
/dune/solvers/operators/Makefile
# /dune/solvers/solvers/
/dune/solvers/solvers/Makefile.in
/dune/solvers/solvers/Makefile
# /dune/solvers/test/
/dune/solvers/test/genericvectortoolstest
/dune/solvers/test/lowrankoperatortest
/dune/solvers/test/mmgtest
/dune/solvers/test/multigridtest
/dune/solvers/test/nulloperatortest
/dune/solvers/test/quadraticipoptsolvertest
/dune/solvers/test/sumoperatortest
/dune/solvers/test/Makefile.in
/dune/solvers/test/Makefile
/dune/solvers/test/.deps
# /dune/solvers/transferoperators/
/dune/solvers/transferoperators/Makefile.in
/dune/solvers/transferoperators/Makefile
# /m4/
/m4/Makefile.in
/m4/Makefile
# /src/
/src/Makefile.in
/src/Makefile
/src/dune_solvers
/src/.deps
# ignore all build folders
/build*/
# ignore backup files
*~
# ignore Python files
*.pyc
---
# Install external dependencies
# For release-based jobs, we use corresponding images,
# that already contain all core and staging dependencies.
.release_based_job:
before_script:
- duneci-install-module https://gitlab.dune-project.org/fufem/dune-matrix-vector.git
# For branch-based-based jobs, we need to install all dependencies manually.
.branch_base_job:
before_script:
- . /duneci/bin/duneci-init-job
- duneci-install-module https://gitlab.dune-project.org/core/dune-common.git
- duneci-install-module https://gitlab.dune-project.org/core/dune-geometry.git
- duneci-install-module https://gitlab.dune-project.org/core/dune-localfunctions.git
- duneci-install-module https://gitlab.dune-project.org/staging/dune-uggrid.git
- duneci-install-module https://gitlab.dune-project.org/core/dune-grid.git
- duneci-install-module https://gitlab.dune-project.org/core/dune-istl.git
- duneci-install-module https://gitlab.dune-project.org/fufem/dune-matrix-vector.git
# The 2.9 release is the one in Debian 12 ('bookworm', 'stable' at the time of writing)
dune:2.9 debian-11 gcc-10 C++20:
extends: .release_based_job
variables:
DUNECI_BRANCH: releases/2.9
image: registry.dune-project.org/docker/ci/dune:2.9-debian-11-gcc-10-20
script: duneci-standard-test
# The 2.10 release is the one in Debian 13 ('trixie', 'testing' at the time of writing)
# To test against 2.10 we need an image with the corresponding version of the core modules.
# Unfortunately, there is no 2.10 image with a recent enough compiler.
dune:2.10 debian-11 gcc-10 C++20:
extends: .release_based_job
variables:
DUNECI_BRANCH: releases/2.10
image: registry.dune-project.org/docker/ci/dune:2.10-debian-11-gcc-10-20
script: duneci-standard-test
# Also test with the current development branch
dune:git debian-11 clang-13 C++20:
extends: .branch_base_job
# image: registry.dune-project.org/docker/ci/dune:git-debian-11-clang-13-20
image: registry.dune-project.org/docker/ci/debian:11
variables:
DUNECI_TOOLCHAIN: clang-13-20
script: duneci-standard-test
dune:git debian-11 gcc-10 C++20:
extends: .branch_base_job
# image: registry.dune-project.org/docker/ci/dune:git-debian-11-gcc-10-20
image: registry.dune-project.org/docker/ci/debian:11
variables:
DUNECI_TOOLCHAIN: gcc-10-20
script: duneci-standard-test
# Check for spelling mistakes in text
code-spelling-check:
stage: .pre
# Avoid the global 'before_script'
before_script: ""
image: registry.dune-project.org/docker/ci/debian:11
script:
- codespell
--ignore-words-list foo,bar
# Master (will become release 2.11)
- ...
# Release 2.10
- Deprecate the file `tuplevector.hh`. An equivalent file exists in `dune-common`
since 2016. Please use that from now on.
- `UMFPackSolver` accepts each correctly formed blocked matrix. The user has to make sure that the vector types of `x` and `rhs` are compatible to the matrix.
The main advantage is that it is now possible to use `MultiTypeBlockMatrix`.
- A new solver `ProximalNewtonSolver` is added which solves non-smooth minimization problems.
# Release 2.9
- The internal matrix of the`EnergyNorm` can now be accessed by `getMatrix()`.
- The default `BitVectorType` of the class `IterationStep` is now
`Solvers::DefaultBitVector_t<VectorType>` rather than `Dune::BitSetVector`.
This should do the right thing in more situations, while being fully
backward-compatible.
- `codespell` spell checker is now active for automated spell checking in the Gitlab CI.
To exclude false positives add the words to the `--ignore-words-list` in `.gitlab-ci.yml`.
# Release 2.8
- `UMFPackSolver` can now handle matrices and vectors with scalar entries.
- CholmodSolver: Added `errorCode_` member to report errors and warnings during the matrix decomposition
- CholmodSolver: `CholmodSolver` can be used with any blocked matrix/vector type supported by `flatMatrixForEach` and `flatVectorForEach` in dune-istl.
- CholmodSolver: There are now various new methods that allow to factorize the matrix once,
and use the factorization to solve linear systems with several right hand sides.
## Deprecations and removals
- The file `blockgsstep.hh` has been removed after four years of deprecation. Use the replacement
in `blockgssteps.hh` instead.
cmake_minimum_required(VERSION 2.8.6)
if(dune-common_VERSION VERSION_GREATER_EQUAL 2.10.0)
cmake_minimum_required(VERSION 3.16)
else()
cmake_minimum_required(VERSION 3.13)
endif()
project(dune-solvers CXX)
if(NOT (dune-common_DIR OR dune-common_ROOT OR
......@@ -18,10 +22,21 @@ include(DuneMacros)
# start a dune project with information from dune.module
dune_project()
add_subdirectory("m4")
# Optional packages that are only needed for tests:
find_package(SuiteSparse OPTIONAL_COMPONENTS UMFPACK)
include(AddSuiteSparseFlags)
# Create library target and export it as Dune::Solvers
dune_add_library(dunesolvers EXPORT_NAME Solvers LINK_LIBRARIES ${DUNE_LIBS})
dune_register_package_flags(LIBRARIES dunesolvers)
add_subdirectory("dune")
add_subdirectory("doc")
add_subdirectory("cmake/modules")
# finalize the dune project, e.g. generating config.h etc.
finalize_dune_project(GENERATE_CONFIG_H_CMAKE)
if(dune-common_VERSION VERSION_GREATER_EQUAL 2.10.0)
finalize_dune_project()
else()
finalize_dune_project(GENERATE_CONFIG_H_CMAKE)
endif()
# $Id$
# we need the module file to be able to build via dunecontrol
EXTRA_DIST = dune.module \
CMakeLists.txt \
config.h.cmake
SUBDIRS = m4 dune doc cmake
if BUILD_DOCS
SUBDIRS += doc
endif
# don't follow the full GNU-standard
# we need automake 1.9 or newer
AUTOMAKE_OPTIONS = foreign 1.9
# pass most important options when "make distcheck" is used
# dune-geometry is a dependency of dune-grid.
DISTCHECK_CONFIGURE_FLAGS = --with-dune-common=$(DUNE_COMMON_ROOT) --with-dune-geometry=$(DUNE_GEOMETRY_ROOT) --with-dune-grid=$(DUNE_GRID_ROOT) --with-dune-istl=$(DUNE_ISTL_ROOT) --with-dune-localfunctions=$(DUNE_LOCALFUNCTIONS_ROOT) CXX="$(CXX)" CC="$(CC)"
include $(top_srcdir)/am/top-rules
include $(top_srcdir)/am/global-rules
# Generate package configuration files for finding
# installed modules with CMake
include $(top_srcdir)/am/cmake-pkg-config
# ToDo
## Bugs
These issues are not real bugs, but unexpected behaviour that might
lead to serious trouble if you're not aware of.
......@@ -11,8 +9,7 @@ lead to serious trouble if you're not aware of.
block containing the block rows with nonzero diagonal entry
in this case.
* MultigridStep is not robust wrt setup order.
* MultigridStep deletes the ignoreNodes_ when calling preprocess() a second time
## Performance issues
While a suboptimal implementation might be OK, if it is cleaner
......@@ -28,8 +25,6 @@ without any again.
be OK but much cheaper. (Does this have any performance impact on
linear elasticity problems?)
## Design issues
Things that could be improved to make dune-solvers easier to use, understand,
and maintain.
......@@ -42,8 +37,6 @@ and maintain.
store the solution there and make getSol() return this reference
and no copy.
(C: I'd prefer the latter to reduce the number of vector copies).
* Remove deprecated methods MultigridStep::setNumberOfLevels(), setProblem(...,numlevels)
constructors with argument numlevels after next release (2.3)
* Make setting up a MultigridStep easier. E.g. by providing a default
version that is preconfigured with GS smoother and coarse grid solver.
* MultigridStep works differently on the finest and the other
......@@ -60,14 +53,9 @@ and maintain.
Solver Base-classes (Solver, IterativeSolver, LoopSolver atl) and substitute the
q&d version implemented now
## Naming of classes and members
* ignoreNodes_ should be called ignore_/ignoreIndices_/ignoreComponents_
* In some classes the type of the matrix is called 'OperatorType'.
This is old 'dune-fem speak', and should be replaced by 'MatrixType'.
## Missing features
A wish list for features that would be very welcome.
......@@ -75,5 +63,3 @@ A wish list for features that would be very welcome.
* Transfer operator assembler for adaptively refined grids (without refinementtype=copy)
This is already implemented in dune-fufem. It could be moved here if the
dependency on P1NodalBasis is removed.
* An interface to add custom output and termination criteria to the LoopSolver.
SUBDIRS = modules
include $(top_srcdir)/am/global-rules
function(add_dune_ipopt_flags _targets)
if(IPOPT_FOUND)
cmake_parse_arguments(ADD_DUNE_IPOPT_FLAGS "OBJECT" "" "" ${ARGN})
foreach(_target ${_targets})
get_target_property(_props ${_target} COMPILE_FLAGS)
string(REPLACE "_props-NOTFOUND" "" _props "${_props}")
set_target_properties(${_target} PROPERTIES COMPILE_FLAGS
"${_props} ${DUNE_IPOPT_CFLAGS}")
if(NOT ADD_DUNE_IPOPT_FLAGS_OBJECT)
target_link_libraries(${_target} PUBLIC ${IPOPT_LIBRARY})
endif()
endforeach(_target ${_targets})
endif(IPOPT_FOUND)
endfunction(add_dune_ipopt_flags)
set(modules "DuneSolversMacros.cmake")
install(FILES ${modules} DESTINATION ${DUNE_INSTALL_MODULEDIR})
install(FILES
DuneSolversMacros.cmake
FindIPOpt.cmake
AddIPOptFlags.cmake
DESTINATION ${DUNE_INSTALL_MODULEDIR})
# File for module specific CMake tests.
find_package(IPOpt)
include(AddIPOptFlags)
include(FindPackageHandleStandardArgs)
#find_package(PkgConfig REQUIRED)
#pkg_check_modules(IPOPT ipopt)
# some versions of Ipopt need the DL library
find_library(DL_LIBRARY dl)
find_path(IPOPT_INCLUDE_DIR
NAMES "IpNLP.hpp"
PATHS ${IPOPT_ROOT}
PATH_SUFFIXES "include" "include/coin" "include/coin-or"
NO_DEFAULT_PATH
)
find_path(IPOPT_INCLUDE_DIR
NAMES "IpNLP.hpp"
PATH_SUFFIXES "include" "include/coin" "include/coin-or"
)
find_library(IPOPT_LIBRARY
NAMES ipopt
PATHS ${IPOPT_ROOT}
PATH_SUFFIXES "lib"
NO_DEFAULT_PATH
)
find_library(IPOPT_LIBRARY
NAMES ipopt
)
# If you want to want to use other linear solver
find_library(HSL_LIBRARY
NAMES hsl coinhsl
PATHS ${IPOPT_ROOT}
PATH_SUFFIXES "lib"
NO_DEFAULT_PATH
)
find_library(HSL_LIBRARY
NAMES hsl coinhsl
)
find_package_handle_standard_args(hsl DEFAULT_MSG HSL_LIBRARY)
find_package_handle_standard_args(dl DEFAULT_MSG DL_LIBRARY)
find_package_handle_standard_args(IPOpt DEFAULT_MSG IPOPT_INCLUDE_DIR IPOPT_LIBRARY)
if(IPOPT_FOUND)
set(HAVE_IPOPT ENABLE_IPOPT)
set(DUNE_IPOPT_CFLAGS "-I${IPOPT_INCLUDE_DIR} -DENABLE_IPOPT=1 -DHAVE_CSTDDEF=1")
set_property(GLOBAL APPEND PROPERTY ALL_PKG_FLAGS "-I${IPOPT_INCLUDE_DIR}")
set(IPOPT_LIBRARY ${IPOPT_LIBRARY})
if (HSL_FOUND)
set (IPOPT_LIBRARY ${HSL_LIBRARY} ${IPOPT_LIBRARY})
endif(HSL_FOUND)
if (DL_FOUND)
set (IPOPT_LIBRARY ${DL_LIBRARY} ${IPOPT_LIBRARY})
endif(DL_FOUND)
# register all related flags
dune_register_package_flags(COMPILE_DEFINITIONS "ENABLE_IPOPT=1" "HAVE_CSTDDEF=1"
LIBRARIES "${IPOPT_LIBRARY}"
INCLUDE_DIRS "${IPOPT_INCLUDE_DIR}")
endif(IPOPT_FOUND)
MODULES = DuneSolversMacros.cmake
modulesdir = $(datadir)/dune/cmake/modules
dist_modules_DATA = ${MODULES}
include $(top_srcdir)/am/global-rules
EXTRA_DIST = CMakeLists.txt
/* begin solvers
/* begin dune-solvers
put the definitions for config.h specific to
your project here. Everything above will be
overwritten
......@@ -40,6 +40,9 @@
/* Define to the revision of dune-solvers */
#define DUNE_SOLVERS_VERSION_REVISION @DUNE_SOLVERS_VERSION_REVISION@
/* end solvers
/* Define to 1 if ipopt library is found */
#cmakedefine HAVE_IPOPT ENABLE_IPOPT
/* end dune-solvers
Everything below here will be overwritten
*/
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.62])
DUNE_AC_INIT # gets module version from dune.module file
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([dune-solvers.pc.in])
AC_CONFIG_HEADERS([config.h])
# we need no more than the standard DE-stuff
# this module depends on dune-common dune-grid dune-istl dune-localfunctions
# this implies checking for [dune-common], [dune-geometry], [dune-grid], [dune-istl], [dune-localfunctions]
DUNE_CHECK_ALL
# implicitly set the Dune-flags everywhere
AC_SUBST(AM_CPPFLAGS, $DUNE_CPPFLAGS)
AC_SUBST(AM_LDFLAGS, $DUNE_LDFLAGS)
LIBS="$DUNE_LIBS"
AC_CONFIG_FILES([
Makefile
cmake/Makefile
cmake/modules/Makefile
doc/Makefile
doc/doxygen/Makefile
doc/doxygen/Doxyfile
dune/Makefile
dune/solvers/Makefile
dune/solvers/common/Makefile
dune/solvers/iterationsteps/Makefile
dune/solvers/norms/Makefile
dune/solvers/operators/Makefile
dune/solvers/solvers/Makefile
dune/solvers/test/Makefile
dune/solvers/transferoperators/Makefile
m4/Makefile
dune-solvers.pc
])
AC_OUTPUT
# finally print the summary information
DUNE_SUMMARY_ALL
add_subdirectory("doxygen")
install(FILES LOWRANKBRANCH-BACKPORT-CHANGES ${CMAKE_INSTALL_DOCDIR})
\ No newline at end of file
install(FILES LOWRANKBRANCH-BACKPORT-CHANGES DESTINATION ${CMAKE_INSTALL_DOCDIR})
......@@ -21,7 +21,7 @@ CHANGES REQUIRING CODE ADAPTATION
---------------------------------------------------------------------------------------
CHANGES POSSIBLY AFFECTING PERFOMANCE (INCLUDING BUGFIXES)
CHANGES POSSIBLY AFFECTING PERFORMANCE (INCLUDING BUGFIXES)
----------------------------------------------------------
----------------------------------------------------------
......
SUBDIRS = doxygen
CURDIR = doc
BASEDIR = ..
# add list of html files to generate from wml
PAGES=
docdir=$(datadir)/doc/dune-solvers
EXTRA_DIST = CMakeLists.txt LOWRANKBRANCH-BACKPORT-CHANGES
include $(top_srcdir)/am/webstuff
include $(top_srcdir)/am/global-rules
BASEDIR=../..
CURDIR=doc/doxygen
EXTRA_DIST = CMakeLists.txt
include $(top_srcdir)/am/doxygen
include $(top_srcdir)/am/global-rules
......@@ -4,7 +4,8 @@
#Name of the module
Module: dune-solvers
Version: 0.10
Maintainer: sander@mi.fu-berlin.de
#depending on
Depends: dune-common dune-grid dune-istl dune-localfunctions
Version: 2.11-git
Maintainer: oliver.sander@tu-dresden.de
#depending on
Depends: dune-common dune-grid dune-istl dune-localfunctions dune-matrix-vector
Suggests: dune-alugrid
SUBDIRS = solvers
EXTRA_DIST = CMakeLists.txt
include $(top_srcdir)/am/global-rules