mirror of
https://github.com/triqs/dft_tools
synced 2024-11-18 12:03:50 +01:00
First draft of the triqs application skeleton
This commit is contained in:
parent
dcce274810
commit
2b76c51f12
45
.clang-format
Normal file
45
.clang-format
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
BasedOnStyle: LLVM
|
||||||
|
|
||||||
|
AccessModifierOffset: 0
|
||||||
|
AlignAfterOpenBracket: Align
|
||||||
|
AlignConsecutiveAssignments: true
|
||||||
|
AlignConsecutiveDeclarations: false
|
||||||
|
AlignEscapedNewlinesLeft: false
|
||||||
|
AlignOperands: false
|
||||||
|
AlignTrailingComments: true
|
||||||
|
AllowAllParametersOfDeclarationOnNextLine: false
|
||||||
|
AllowShortBlocksOnASingleLine: true
|
||||||
|
AllowShortCaseLabelsOnASingleLine: true
|
||||||
|
AllowShortFunctionsOnASingleLine: All
|
||||||
|
AllowShortIfStatementsOnASingleLine: true
|
||||||
|
AllowShortLoopsOnASingleLine: true
|
||||||
|
AlwaysBreakBeforeMultilineStrings: true
|
||||||
|
AlwaysBreakTemplateDeclarations: false
|
||||||
|
BinPackArguments: true
|
||||||
|
BinPackParameters: true
|
||||||
|
BreakBeforeBinaryOperators: NonAssignment
|
||||||
|
BreakBeforeBraces: Attach
|
||||||
|
BreakBeforeTernaryOperators: false
|
||||||
|
BreakConstructorInitializersBeforeComma: false
|
||||||
|
BreakStringLiterals: false
|
||||||
|
ColumnLimit: 150
|
||||||
|
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||||
|
ConstructorInitializerIndentWidth: 3
|
||||||
|
ContinuationIndentWidth: 3
|
||||||
|
Cpp11BracedListStyle: true
|
||||||
|
DerivePointerBinding : false
|
||||||
|
IndentCaseLabels: true
|
||||||
|
IndentWidth: 2
|
||||||
|
Language: Cpp
|
||||||
|
MaxEmptyLinesToKeep: 1
|
||||||
|
NamespaceIndentation : All
|
||||||
|
PointerAlignment: Right
|
||||||
|
ReflowComments: false
|
||||||
|
SortIncludes: false
|
||||||
|
SpaceAfterControlStatementKeyword: true
|
||||||
|
SpaceBeforeAssignmentOperators: true
|
||||||
|
SpaceInEmptyParentheses: false
|
||||||
|
SpacesInParentheses: false
|
||||||
|
Standard: Cpp11
|
||||||
|
TabWidth: 2
|
||||||
|
UseTab: Never
|
1
.clang-tidy
Normal file
1
.clang-tidy
Normal file
@ -0,0 +1 @@
|
|||||||
|
Checks: '-*,modernize-*,cppcoreguidelines-*'
|
51
.travis.yml
Normal file
51
.travis.yml
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
language: cpp
|
||||||
|
sudo: required
|
||||||
|
dist: trusty
|
||||||
|
|
||||||
|
compiler:
|
||||||
|
- gcc
|
||||||
|
# - clang
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- sudo add-apt-repository 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-5.0 main' -y
|
||||||
|
- wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
|
||||||
|
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
|
||||||
|
- sudo apt-get update
|
||||||
|
- sudo apt-get install -y --allow-unauthenticated g++-7 clang-5.0
|
||||||
|
- export LIBRARY_PATH=/usr/lib/llvm-5.0/lib:$LIBRARY_PATH
|
||||||
|
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7
|
||||||
|
- sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-5.0 60 --slave /usr/bin/clang++ clang++ /usr/bin/clang++-5.0
|
||||||
|
- sudo apt-get install -y --allow-unauthenticated libboost-all-dev cmake git libgfortran3 gfortran openmpi-bin openmpi-common openmpi-doc libopenmpi-dev libblas-dev liblapack-dev libfftw3-dev libgmp-dev hdf5-tools libhdf5-serial-dev python-h5py python-dev python-numpy python-scipy python-jinja2 python-virtualenv python-matplotlib python-tornado python-zmq python-mpi4py python-mako clang-format-5.0 libclang-5.0-dev python-clang-5.0 python-sphinx libjs-mathjax valgrind libnfft3-dev
|
||||||
|
|
||||||
|
install: true
|
||||||
|
|
||||||
|
script:
|
||||||
|
# ===== Set up Cpp2Py
|
||||||
|
- git clone https://github.com/triqs/cpp2py
|
||||||
|
- mkdir cpp2py/build && cd cpp2py/build
|
||||||
|
- git checkout master
|
||||||
|
- cmake .. -DCMAKE_CXX_COMPILER=/usr/bin/${CXX} -DPYTHON_INTERPRETER=/usr/bin/python -DCMAKE_INSTALL_PREFIX=$TRAVIS_BUILD_DIR/root_install
|
||||||
|
- make -j8 install
|
||||||
|
- cd $TRAVIS_BUILD_DIR
|
||||||
|
- source root_install/share/cpp2pyvars.sh
|
||||||
|
# ===== Set up TRIQS
|
||||||
|
- git clone https://github.com/TRIQS/triqs --branch unstable
|
||||||
|
- mkdir triqs/build && cd triqs/build
|
||||||
|
- git checkout unstable
|
||||||
|
- cmake .. -DCMAKE_CXX_COMPILER=/usr/bin/${CXX} -DBuild_Tests=OFF -DCMAKE_INSTALL_PREFIX=$TRAVIS_BUILD_DIR/root_install -DCMAKE_BUILD_TYPE=Debug
|
||||||
|
- make -j8 install
|
||||||
|
- cd $TRAVIS_BUILD_DIR
|
||||||
|
- source root_install/share/triqsvars.sh
|
||||||
|
# ===== Set up CTINT and Test using fsanitize=address
|
||||||
|
- mkdir build && cd build
|
||||||
|
- cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=/usr/bin/${CXX} -DGTAU_IS_COMPLEX=ON -DINTERACTION_IS_COMPLEX=ON -DCMAKE_CXX_FLAGS='-fsanitize=address -fno-omit-frame-pointer -fuse-ld=gold -Wno-register -Wno-macro-redefined'
|
||||||
|
- make -j8
|
||||||
|
- export ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-5.0/bin/llvm-symbolizer
|
||||||
|
- export ASAN_OPTIONS=symbolize=1:detect_leaks=0
|
||||||
|
- export CTEST_OUTPUT_ON_FAILURE=1
|
||||||
|
- cd test/c++ && ctest
|
||||||
|
- if [ "$CXX" = g++ ]; then export LD_PRELOAD=/usr/lib/gcc/x86_64-linux-gnu/7/libasan.so; elif [ "$CXX" = clang++ ]; then export LD_PRELOAD=/usr/lib/llvm-5.0/lib/clang/5.0.1/lib/linux/libclang_rt.asan-x86_64.so; fi
|
||||||
|
- cd ../python && ctest
|
||||||
|
- cd ../../
|
||||||
|
- unset LD_PRELOAD
|
60
CMakeLists.txt
Normal file
60
CMakeLists.txt
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
# Version number
|
||||||
|
set (APP4TRIQS_VERSION "1.5")
|
||||||
|
|
||||||
|
# Start configuration
|
||||||
|
cmake_minimum_required(VERSION 2.8)
|
||||||
|
project(app4triqs CXX)
|
||||||
|
|
||||||
|
# Default to Release build type
|
||||||
|
if(NOT CMAKE_BUILD_TYPE)
|
||||||
|
set(CMAKE_BUILD_TYPE Release CACHE STRING "Type of build" FORCE)
|
||||||
|
endif()
|
||||||
|
message( STATUS "-------- BUILD-TYPE: ${CMAKE_BUILD_TYPE} -------------")
|
||||||
|
|
||||||
|
# Use shared libraries
|
||||||
|
set(BUILD_SHARED_LIBS ON)
|
||||||
|
|
||||||
|
# Load TRIQS and Cpp2Py
|
||||||
|
find_package(TRIQS 1.5 EXACT REQUIRED)
|
||||||
|
find_package(Cpp2Py 1.5 EXACT REQUIRED)
|
||||||
|
|
||||||
|
# We will need the FindNNFT of triqs, so we adjust CMake Module Path to find it
|
||||||
|
list(APPEND CMAKE_MODULE_PATH ${TRIQS_ROOT}/share/cmake)
|
||||||
|
|
||||||
|
# Default Install directory to TRIQS_ROOT if not given. Checks an absolute name is given.
|
||||||
|
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR (NOT IS_ABSOLUTE ${CMAKE_INSTALL_PREFIX}))
|
||||||
|
message(STATUS " No install prefix given (or invalid). Defaulting to TRIQS_ROOT")
|
||||||
|
set(CMAKE_INSTALL_PREFIX ${TRIQS_ROOT} CACHE PATH "default install path" FORCE)
|
||||||
|
endif()
|
||||||
|
message(STATUS "-------- CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX} -------------")
|
||||||
|
|
||||||
|
# Macro defined in TRIQS which picks the hash of repo.
|
||||||
|
triqs_get_git_hash_of_source_dir(APP4TRIQS_GIT_HASH)
|
||||||
|
message(STATUS "Git hash: ${APP4TRIQS_GIT_HASH}")
|
||||||
|
|
||||||
|
# Common to all targets (c++, python, tests).
|
||||||
|
include_directories(c++)
|
||||||
|
|
||||||
|
# Set up the rpath for compiled executable
|
||||||
|
triqs_set_rpath_for_all_targets()
|
||||||
|
|
||||||
|
add_subdirectory(c++/app4triqs)
|
||||||
|
if(${TRIQS_WITH_PYTHON_SUPPORT})
|
||||||
|
add_subdirectory(python/app4triqs)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Tests
|
||||||
|
enable_testing()
|
||||||
|
add_subdirectory(test)
|
||||||
|
|
||||||
|
# Additional configuration files
|
||||||
|
add_subdirectory(share)
|
||||||
|
|
||||||
|
option(Build_Documentation "Build documentation" OFF)
|
||||||
|
if(${Build_Documentation})
|
||||||
|
if(NOT ${TRIQS_WITH_DOCUMENTATION})
|
||||||
|
message("Error: TRIQS library has not been compiled with its documentation")
|
||||||
|
else()
|
||||||
|
add_subdirectory(doc)
|
||||||
|
endif()
|
||||||
|
endif()
|
10
Dockerfile
Normal file
10
Dockerfile
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# See ../triqs/packaging for other options
|
||||||
|
FROM flatironinstitute/triqs:master-ubuntu-clang
|
||||||
|
|
||||||
|
COPY . ${SRC}/app4triqs
|
||||||
|
WORKDIR ${BUILD}/app4triqs
|
||||||
|
RUN chown build .
|
||||||
|
USER build
|
||||||
|
RUN cmake ${SRC}/app4triqs -DTRIQS_ROOT=${INSTALL} && make -j2 && make test
|
||||||
|
USER root
|
||||||
|
RUN make install
|
113
Jenkinsfile
vendored
Normal file
113
Jenkinsfile
vendored
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
def app4triqsBranch = env.CHANGE_TARGET ?: env.BRANCH_NAME
|
||||||
|
def app4triqsProject = '/TRIQS/app4triqs/' + app4triqsBranch.replaceAll('/', '%2F')
|
||||||
|
|
||||||
|
properties([
|
||||||
|
disableConcurrentBuilds(),
|
||||||
|
buildDiscarder(logRotator(numToKeepStr: '10', daysToKeepStr: '30')),
|
||||||
|
pipelineTriggers([
|
||||||
|
upstream(
|
||||||
|
threshold: 'SUCCESS',
|
||||||
|
upstreamProjects: app4triqsProject
|
||||||
|
)
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
def platforms = [:]
|
||||||
|
|
||||||
|
def dockerPlatforms = ["ubuntu-clang", "ubuntu-gcc", "centos-gcc"]
|
||||||
|
for (int i = 0; i < dockerPlatforms.size(); i++) {
|
||||||
|
def platform = dockerPlatforms[i]
|
||||||
|
platforms[platform] = { -> stage(platform) {
|
||||||
|
timeout(time: 1, unit: 'HOURS') {
|
||||||
|
node('docker') {
|
||||||
|
checkout scm
|
||||||
|
/* construct a Dockerfile for this base */
|
||||||
|
sh """
|
||||||
|
( echo "FROM flatironinstitute/app4triqs:${app4triqsBranch}-${env.STAGE_NAME}" ; sed '0,/^FROM /d' Dockerfile ) > Dockerfile.jenkins
|
||||||
|
mv -f Dockerfile.jenkins Dockerfile
|
||||||
|
"""
|
||||||
|
/* build and tag */
|
||||||
|
def img = docker.build("flatironinstitute/app4triqs:${env.BRANCH_NAME}-${env.STAGE_NAME}")
|
||||||
|
/* but we don't need the tag so clean it up (alternatively, could refacter to run in container) */
|
||||||
|
sh "docker rmi ${img.imageName()}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} }
|
||||||
|
}
|
||||||
|
|
||||||
|
def osxPlatforms = [
|
||||||
|
["gcc", ['CC=gcc-7', 'CXX=g++-7']],
|
||||||
|
["clang", ['CC=/usr/local/opt/llvm/bin/clang', 'CXX=/usr/local/opt/llvm/bin/clang++', 'CXXFLAGS=-I/usr/local/opt/llvm/include', 'LDFLAGS=-L/usr/local/opt/llvm/lib']]
|
||||||
|
]
|
||||||
|
for (int i = 0; i < osxPlatforms.size(); i++) {
|
||||||
|
def platformEnv = osxPlatforms[i]
|
||||||
|
def platform = platformEnv[0]
|
||||||
|
platforms["osx-$platform"] = { -> stage("osx-$platform") {
|
||||||
|
timeout(time: 1, unit: 'HOURS') {
|
||||||
|
node('osx && triqs') {
|
||||||
|
def srcDir = pwd()
|
||||||
|
def tmpDir = pwd(tmp:true)
|
||||||
|
def buildDir = "$tmpDir/build"
|
||||||
|
def installDir = "$tmpDir/install"
|
||||||
|
|
||||||
|
dir(installDir) {
|
||||||
|
deleteDir()
|
||||||
|
}
|
||||||
|
|
||||||
|
copyArtifacts(projectName: app4triqsProject, selector: upstream(fallbackToLastSuccessful: true), filter: "osx-${platform}.zip")
|
||||||
|
unzip(zipFile: "osx-${platform}.zip", dir: installDir)
|
||||||
|
/* fixup zip-stripped permissions (JENKINS-13128) */
|
||||||
|
sh "chmod +x $installDir/bin/*"
|
||||||
|
|
||||||
|
checkout scm
|
||||||
|
|
||||||
|
dir(buildDir) { withEnv(platformEnv[1]+[
|
||||||
|
"PATH=$installDir/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin",
|
||||||
|
"CPATH=$installDir/include",
|
||||||
|
"LIBRARY_PATH=$installDir/lib",
|
||||||
|
"CMAKE_PREFIX_PATH=$installDir/share/cmake"]) {
|
||||||
|
deleteDir()
|
||||||
|
sh "cmake $srcDir -DTRIQS_ROOT=$installDir"
|
||||||
|
sh "make -j2"
|
||||||
|
try {
|
||||||
|
sh "make test"
|
||||||
|
} catch (exc) {
|
||||||
|
archiveArtifacts(artifacts: 'Testing/Temporary/LastTest.log')
|
||||||
|
throw exc
|
||||||
|
}
|
||||||
|
sh "make install"
|
||||||
|
} }
|
||||||
|
// zip(zipFile: "osx-${platform}.zip", archive: true, dir: installDir)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} }
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
parallel platforms
|
||||||
|
} catch (err) {
|
||||||
|
emailext(
|
||||||
|
subject: "\$PROJECT_NAME - Build # \$BUILD_NUMBER - FAILED",
|
||||||
|
body: """\$PROJECT_NAME - Build # \$BUILD_NUMBER - FAILED
|
||||||
|
|
||||||
|
$err
|
||||||
|
|
||||||
|
Check console output at \$BUILD_URL to view full results.
|
||||||
|
|
||||||
|
Building \$BRANCH_NAME for \$CAUSE
|
||||||
|
\$JOB_DESCRIPTION
|
||||||
|
|
||||||
|
Chages:
|
||||||
|
\$CHANGES
|
||||||
|
|
||||||
|
End of build log:
|
||||||
|
\${BUILD_LOG,maxLines=60}
|
||||||
|
""",
|
||||||
|
to: 'nils.wentzell@gmail.com, dsimon@flatironinstitute.org',
|
||||||
|
recipientProviders: [
|
||||||
|
[$class: 'DevelopersRecipientProvider'],
|
||||||
|
],
|
||||||
|
replyTo: '$DEFAULT_REPLYTO'
|
||||||
|
)
|
||||||
|
throw err
|
||||||
|
}
|
19
c++/app4triqs/CMakeLists.txt
Normal file
19
c++/app4triqs/CMakeLists.txt
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
file(GLOB_RECURSE sources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp)
|
||||||
|
add_library(app4triqs_c ${sources})
|
||||||
|
|
||||||
|
target_link_libraries(app4triqs_c PUBLIC triqs)
|
||||||
|
target_compile_options(app4triqs_c PUBLIC -std=c++17)
|
||||||
|
|
||||||
|
target_compile_definitions(app4triqs_c PUBLIC
|
||||||
|
APP4TRIQS_GIT_HASH=${APP4TRIQS_GIT_HASH}
|
||||||
|
TRIQS_GIT_HASH=${TRIQS_GIT_HASH}
|
||||||
|
$<$<CONFIG:Debug>:DEBUG_APP4TRIQS>
|
||||||
|
$<$<CONFIG:Debug>:TRIQS_ARRAYS_ENFORCE_BOUNDCHECK>
|
||||||
|
#$<$<BOOL:${MyOption}>:MYOPTION> # Add compile definintions for option
|
||||||
|
)
|
||||||
|
|
||||||
|
# Install
|
||||||
|
install(TARGETS app4triqs_c DESTINATION lib)
|
||||||
|
|
||||||
|
# If other applications need our headers, we can install them as well
|
||||||
|
# install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h")
|
37
c++/app4triqs/toto.cpp
Normal file
37
c++/app4triqs/toto.cpp
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#include <cmath>
|
||||||
|
#include "./toto.hpp"
|
||||||
|
|
||||||
|
namespace app4triqs {
|
||||||
|
|
||||||
|
toto &toto::operator+=(toto const &b) {
|
||||||
|
this->i += b.i;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
toto toto::operator+(toto const &b) const {
|
||||||
|
auto res = *this;
|
||||||
|
res += b;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool toto::operator==(toto const &b) const { return (this->i == b.i); }
|
||||||
|
|
||||||
|
void h5_write(triqs::h5::group grp, std::string subgroup_name, toto const &m) {
|
||||||
|
grp = subgroup_name.empty() ? grp : grp.create_group(subgroup_name);
|
||||||
|
h5_write(grp, "i", m.i);
|
||||||
|
h5_write_attribute(grp, "TRIQS_HDF5_data_scheme", toto::hdf5_scheme());
|
||||||
|
}
|
||||||
|
|
||||||
|
void h5_read(triqs::h5::group grp, std::string subgroup_name, toto &m) {
|
||||||
|
grp = subgroup_name.empty() ? grp : grp.open_group(subgroup_name);
|
||||||
|
int i;
|
||||||
|
h5_read(grp, "i", i);
|
||||||
|
m = toto(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
int chain(int i, int j) {
|
||||||
|
int n_digits_j = j > 0 ? (int)log10(j) + 1 : 1;
|
||||||
|
return i * int(pow(10, n_digits_j)) + j;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace app4triqs
|
68
c++/app4triqs/toto.hpp
Normal file
68
c++/app4triqs/toto.hpp
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <cpp2py.hpp>
|
||||||
|
#include <triqs/gfs.hpp>
|
||||||
|
|
||||||
|
namespace app4triqs {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A very useful and important class
|
||||||
|
*
|
||||||
|
* @note A Useful note
|
||||||
|
*/
|
||||||
|
class toto {
|
||||||
|
|
||||||
|
int i = 0.0;
|
||||||
|
|
||||||
|
public:
|
||||||
|
toto() = default;
|
||||||
|
|
||||||
|
// Copy construction
|
||||||
|
toto(toto const &) = default;
|
||||||
|
toto(toto &&) = default;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct from integer
|
||||||
|
*
|
||||||
|
* @param i_ a scalar
|
||||||
|
*/
|
||||||
|
toto(int i_) : i(i_) {}
|
||||||
|
|
||||||
|
/// Copy assignment
|
||||||
|
toto &operator=(toto const &) = default;
|
||||||
|
toto &operator=(toto &&) = default;
|
||||||
|
|
||||||
|
/// Simple accessor
|
||||||
|
int get_i() const { return i; }
|
||||||
|
|
||||||
|
/// Arithmetic operations
|
||||||
|
toto operator+(toto const &b) const;
|
||||||
|
toto &operator+=(toto const &b);
|
||||||
|
|
||||||
|
/// Comparison
|
||||||
|
bool operator==(toto const &b) const;
|
||||||
|
|
||||||
|
/// HDF5
|
||||||
|
static std::string hdf5_scheme() { return "Toto"; }
|
||||||
|
|
||||||
|
friend void h5_write(triqs::h5::group grp, std::string subgroup_name, toto const &m);
|
||||||
|
|
||||||
|
friend void h5_read(triqs::h5::group grp, std::string subgroup_name, toto &m);
|
||||||
|
|
||||||
|
/// Serialization
|
||||||
|
template <class Archive> void serialize(Archive &ar, const unsigned int version) { ar &i; }
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Chain digits of two integers
|
||||||
|
*
|
||||||
|
* Chain the decimal digits of two integers i and j, and return the result
|
||||||
|
*
|
||||||
|
* @param :math:`i` The first integer
|
||||||
|
* @param :math:`j` The second integer
|
||||||
|
* @return An integer containing the digits of both i and j
|
||||||
|
*
|
||||||
|
* @remark
|
||||||
|
*/
|
||||||
|
int chain(int i, int j);
|
||||||
|
|
||||||
|
} // namespace app4triqs
|
58
doc/CMakeLists.txt
Normal file
58
doc/CMakeLists.txt
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
# Generate the conf.py
|
||||||
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in ${CMAKE_CURRENT_BINARY_DIR}/conf.py @ONLY)
|
||||||
|
|
||||||
|
# ---------------------------------
|
||||||
|
# Top Sphinx target
|
||||||
|
# ---------------------------------
|
||||||
|
# Sources
|
||||||
|
file(GLOB_RECURSE sources *.rst)
|
||||||
|
|
||||||
|
set(sphinx_top ${CMAKE_CURRENT_BINARY_DIR}/html/contents.html)
|
||||||
|
add_custom_command(OUTPUT ${sphinx_top} DEPENDS ${sources}
|
||||||
|
COMMAND ${TRIQS_SPHINXBUILD_EXECUTABLE} -c . -j8 -b html ${CMAKE_CURRENT_BINARY_DIR} html)
|
||||||
|
add_custom_target(docs_sphinx ALL DEPENDS ${sphinx_top} ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
|
# Application must be compiled first
|
||||||
|
add_dependencies(docs_sphinx app4triqs_c)
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------------
|
||||||
|
# Copy the directory substructure and link all files with relevant extensions
|
||||||
|
# cp_rs is a script in cpp2py/bin, it mimics cp -rs on Linux
|
||||||
|
# and filters the relevant extension
|
||||||
|
# ------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
set(EXT_FOR_DOC "rst png txt css_t conf css js gif jpg py html bib")
|
||||||
|
execute_process(COMMAND cp_rs ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${EXT_FOR_DOC})
|
||||||
|
|
||||||
|
# ---------------------------------
|
||||||
|
# Generate C++ doc with c++2rst
|
||||||
|
# ---------------------------------
|
||||||
|
|
||||||
|
add_custom_target(docs_cpp2rst)
|
||||||
|
|
||||||
|
macro(generate_docs header_file)
|
||||||
|
add_custom_command (TARGET docs_cpp2rst
|
||||||
|
COMMAND c++2rst
|
||||||
|
${header_file}
|
||||||
|
-N app4triqs
|
||||||
|
--output_directory ${CMAKE_CURRENT_BINARY_DIR}/cpp2rst_generated
|
||||||
|
--cxxflags="-std=c++17"
|
||||||
|
-I ${CMAKE_SOURCE_DIR}/c++
|
||||||
|
-I ${TRIQS_ROOT}/include
|
||||||
|
2>&1 >> cpp2rst.log
|
||||||
|
)
|
||||||
|
endmacro(generate_docs)
|
||||||
|
|
||||||
|
generate_docs(${CMAKE_SOURCE_DIR}/c++/app4triqs/toto.hpp)
|
||||||
|
|
||||||
|
add_dependencies(docs_sphinx docs_cpp2rst)
|
||||||
|
|
||||||
|
# ---------------------------------
|
||||||
|
# Install
|
||||||
|
# ---------------------------------
|
||||||
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/ COMPONENT documentation DESTINATION share/doc/app4triqs
|
||||||
|
FILES_MATCHING
|
||||||
|
REGEX "\\.(html|pdf|png|gif|jpg|js|xsl|css|py|txt|inv|bib)$"
|
||||||
|
PATTERN "_*"
|
||||||
|
)
|
||||||
|
|
BIN
doc/_static/logo_erc.jpg
vendored
Normal file
BIN
doc/_static/logo_erc.jpg
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 190 KiB |
7
doc/_templates/sideb.html
vendored
Normal file
7
doc/_templates/sideb.html
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<p>
|
||||||
|
<a href="http://ipht.cea.fr"> <img style="width: 80px; margin: 10px 5px 0 0" src='_static/logo_cea.png' alt="CEA"/> </a>
|
||||||
|
<a href="http://www.cpht.polytechnique.fr"> <img style="width: 80px; margin: 10px 5px 0 5px" src='_static/logo_x.png' alt="Ecole Polytechnique"/> </a>
|
||||||
|
<br>
|
||||||
|
<a href="http://www.cnrs.fr"> <img style="width: 80px; margin: 10px 0 0 5px" src='_static/logo_cnrs.png' alt="CNRS"/> </a>
|
||||||
|
<img style="width: 80px; margin: 10px 0 0 5px" src='_static/logo_erc.jpg' alt="ERC"/>
|
||||||
|
</p>
|
3
doc/about.rst
Normal file
3
doc/about.rst
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.. _about:
|
||||||
|
|
||||||
|
An example application using cpp2py and triqs.
|
32
doc/conf.py.in
Normal file
32
doc/conf.py.in
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# TRIQS documentation build configuration file
|
||||||
|
|
||||||
|
extensions = ['sphinx.ext.autodoc',
|
||||||
|
'sphinx.ext.mathjax',
|
||||||
|
'sphinx.ext.intersphinx',
|
||||||
|
'matplotlib.sphinxext.plot_directive']
|
||||||
|
|
||||||
|
source_suffix = '.rst'
|
||||||
|
|
||||||
|
project = u'APP4TRIQS - An example triqs application'
|
||||||
|
copyright = u'2018 - The TRIQS Developers'
|
||||||
|
|
||||||
|
mathjax_path = "@TRIQS_MATHJAX_PATH@/MathJax.js?config=default"
|
||||||
|
templates_path = ['@CMAKE_SOURCE_DIR@/doc/_templates']
|
||||||
|
|
||||||
|
html_theme = 'triqs'
|
||||||
|
html_theme_path = ['@TRIQS_THEMES_PATH@']
|
||||||
|
html_show_sphinx = False
|
||||||
|
html_context = {'header_title': 'app4triqs',
|
||||||
|
'header_subtitle': 'An example application using cpp2py and triqs',
|
||||||
|
'header_links': [['Install', 'install'],
|
||||||
|
['Documentation', 'documentation'],
|
||||||
|
['Issues', 'issues'],
|
||||||
|
['About app4triqs', 'about']]}
|
||||||
|
html_static_path = ['@CMAKE_SOURCE_DIR@/doc/_static']
|
||||||
|
html_sidebars = {'index': ['sideb.html', 'searchbox.html']}
|
||||||
|
|
||||||
|
htmlhelp_basename = 'TRIQSIntdoc'
|
||||||
|
|
||||||
|
intersphinx_mapping = {'python': ('http://docs.python.org/2.7', None), 'triqslibs': ('http://ipht.cea.fr/triqs', None)}
|
12
doc/contents.rst
Normal file
12
doc/contents.rst
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
Table of contents
|
||||||
|
=================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 5
|
||||||
|
|
||||||
|
index
|
||||||
|
documentation
|
||||||
|
install
|
||||||
|
issues
|
||||||
|
about
|
12
doc/documentation.rst
Normal file
12
doc/documentation.rst
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
.. _documentation:
|
||||||
|
|
||||||
|
Documentation
|
||||||
|
=============
|
||||||
|
|
||||||
|
Reference manual
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
cpp2rst_generated/app4triqs/compute_Sigma_Hedin
|
11
doc/index.rst
Normal file
11
doc/index.rst
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
.. _welcome:
|
||||||
|
|
||||||
|
App4Triqs
|
||||||
|
=========
|
||||||
|
|
||||||
|
An example application using cpp2py and triqs.
|
||||||
|
|
||||||
|
This documentation is generated based on the doc/\*.rst files and
|
||||||
|
the comments in the sources and headers.
|
||||||
|
|
||||||
|
Lets have a look at the :ref:`documentation`.
|
62
doc/install.rst
Normal file
62
doc/install.rst
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
.. highlight:: bash
|
||||||
|
|
||||||
|
.. _install:
|
||||||
|
|
||||||
|
Installation
|
||||||
|
============
|
||||||
|
|
||||||
|
|
||||||
|
Prerequisite
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
#. The :ref:`TRIQS <triqslibs:welcome>` toolbox (see :ref:`TRIQS installation instruction <triqslibs:installation>`).
|
||||||
|
In the following, we will suppose that it is installed in the ``path_to_triqs`` directory.
|
||||||
|
|
||||||
|
Installation steps
|
||||||
|
------------------
|
||||||
|
|
||||||
|
#. Download the sources from github::
|
||||||
|
|
||||||
|
$ git clone https://github.com/triqs/app4triqs.git app4triqs.src
|
||||||
|
|
||||||
|
#. Create an empty build directory where you will compile the code::
|
||||||
|
|
||||||
|
$ mkdir app4triqs.build && cd app4triqs.build
|
||||||
|
|
||||||
|
#. Make sure that you have added the TRIQS and Cpp2Py installation to your environment variables::
|
||||||
|
|
||||||
|
$ source path_to_triqs/share/cpp2pyvarsh.sh
|
||||||
|
$ source path_to_triqs/share/triqsvarsh.sh
|
||||||
|
|
||||||
|
#. In the build directory call cmake::
|
||||||
|
|
||||||
|
$ cmake ../app4triqs.src
|
||||||
|
|
||||||
|
#. Compile the code, run the tests and install the application::
|
||||||
|
|
||||||
|
$ make
|
||||||
|
$ make test
|
||||||
|
$ make install
|
||||||
|
|
||||||
|
Version compatibility
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Be careful that the version of the TRIQS library and of the solver must be
|
||||||
|
compatible (more information on the :ref:`TRIQS website <triqslibs:versions>`).
|
||||||
|
As the TRILEX project is currently still in alpha phase (unstable), it can
|
||||||
|
only be compiled against the unstable branch of triqs.
|
||||||
|
|
||||||
|
Custom CMake options
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Functionality of ``app4triqs`` can be tweaked using extra compile-time options passed to CMake::
|
||||||
|
|
||||||
|
cmake -DOPTION1=value1 -DOPTION2=value2 ... ../app4triqs.src
|
||||||
|
|
||||||
|
+-----------------------------------------------------------------------+-----------------------------------------------+
|
||||||
|
| Options | Syntax |
|
||||||
|
+=======================================================================+===============================================+
|
||||||
|
| Specify an installation path other than path_to_triqs | -DCMAKE_INSTALL_PREFIX=path_to_app4triqs |
|
||||||
|
+-----------------------------------------------------------------------+-----------------------------------------------+
|
||||||
|
| Build the documentation locally | -DBuild_Documentation=ON |
|
||||||
|
+-----------------------------------------------------------------------+-----------------------------------------------+
|
23
doc/issues.rst
Normal file
23
doc/issues.rst
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
.. _issues:
|
||||||
|
|
||||||
|
Reporting issues
|
||||||
|
================
|
||||||
|
|
||||||
|
Please report all problems and bugs directly at the github issue page
|
||||||
|
`<https://github.com/TRIQS/app4triqs/issues>`_. In order to make it easier for us
|
||||||
|
to solve the issue please follow these guidelines:
|
||||||
|
|
||||||
|
#. In all cases specify which version of the application you are using. You can
|
||||||
|
find the version number in the file :file:`CMakeLists.txt` at the root of the
|
||||||
|
application sources.
|
||||||
|
|
||||||
|
#. If you have a problem during the installation, give us information about
|
||||||
|
your operating system and the compiler you are using. Include the outputs of
|
||||||
|
the ``cmake`` and ``make`` commands as well as the ``CMakeCache.txt`` file
|
||||||
|
which is in the build directory. Please include these outputs in a
|
||||||
|
`gist <http://gist.github.com/>`_ file referenced in the issue.
|
||||||
|
|
||||||
|
#. If you are experiencing a problem during the execution of the application, provide
|
||||||
|
a script which allows to quickly reproduce the problem.
|
||||||
|
|
||||||
|
Thanks!
|
21
python/app4triqs/CMakeLists.txt
Normal file
21
python/app4triqs/CMakeLists.txt
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Build the python module
|
||||||
|
add_cpp2py_module(toto_module)
|
||||||
|
|
||||||
|
target_link_libraries(toto_module app4triqs_c)
|
||||||
|
|
||||||
|
# We need to include the convertes.hxx files
|
||||||
|
target_include_directories(toto_module PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
|
||||||
|
# Configure the version
|
||||||
|
configure_file(version.py.in version.py)
|
||||||
|
|
||||||
|
# All Python files. Copy them in the build dir to have a complete package for the tests.
|
||||||
|
set(PYTHON_SOURCES __init__.py)
|
||||||
|
foreach(f ${PYTHON_SOURCES})
|
||||||
|
configure_file(${f} ${f} COPYONLY)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
# Install python module to proper location
|
||||||
|
set(PYTHON_LIB_DEST ${CPP2PY_PYTHON_LIB_DEST_ROOT}/app4triqs)
|
||||||
|
install(TARGETS toto_module DESTINATION ${PYTHON_LIB_DEST})
|
||||||
|
install(FILES ${PYTHON_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/version.py DESTINATION ${PYTHON_LIB_DEST})
|
29
python/app4triqs/__init__.py
Normal file
29
python/app4triqs/__init__.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# App4Triqs: Test application for Triqs
|
||||||
|
#
|
||||||
|
# Copyright (C) 2018 by The Simons Foundation
|
||||||
|
# Author: H. U.R. Strand
|
||||||
|
#
|
||||||
|
# App4Triqs 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 3 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
#
|
||||||
|
# App4Triqs 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
|
||||||
|
# App4Triqs. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
r"""
|
||||||
|
DOC
|
||||||
|
|
||||||
|
"""
|
||||||
|
from toto_module import Toto, chain
|
||||||
|
|
||||||
|
__all__ = ['Toto', 'chain']
|
51
python/app4triqs/toto_module_desc.py
Normal file
51
python/app4triqs/toto_module_desc.py
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
# Generated automatically using the command :
|
||||||
|
# c++2py ../../c++/app4triqs/toto.hpp -p --members_read_only -N app4triqs -a app4triqs -m toto_module -o toto_module -C pytriqs --cxxflags="-std=c++17"
|
||||||
|
from cpp2py.wrap_generator import *
|
||||||
|
|
||||||
|
# The module
|
||||||
|
module = module_(full_name = "toto_module", doc = "", app_name = "app4triqs")
|
||||||
|
|
||||||
|
# Imports
|
||||||
|
|
||||||
|
# Add here all includes
|
||||||
|
module.add_include("app4triqs/toto.hpp")
|
||||||
|
|
||||||
|
# Add here anything to add in the C++ code at the start, e.g. namespace using
|
||||||
|
module.add_preamble("""
|
||||||
|
#include <cpp2py/converters/string.hpp>
|
||||||
|
#include <triqs/cpp2py_converters/h5.hpp>
|
||||||
|
|
||||||
|
using namespace app4triqs;
|
||||||
|
""")
|
||||||
|
|
||||||
|
|
||||||
|
# The class toto
|
||||||
|
c = class_(
|
||||||
|
py_type = "Toto", # name of the python class
|
||||||
|
c_type = "app4triqs::toto", # name of the C++ class
|
||||||
|
doc = """A very useful and important class\n\n @note A Useful note""", # doc of the C++ class
|
||||||
|
hdf5 = True,
|
||||||
|
arithmetic = ("add_only"),
|
||||||
|
comparisons = "==",
|
||||||
|
serializable = "tuple",
|
||||||
|
)
|
||||||
|
|
||||||
|
c.add_constructor("""()""", doc = """""")
|
||||||
|
|
||||||
|
c.add_constructor("""(int i_)""", doc = """Construct from integer\n\n :param i_: a scalar""")
|
||||||
|
|
||||||
|
c.add_method("""std::string hdf5_scheme ()""",
|
||||||
|
is_static = True,
|
||||||
|
doc = """HDF5""")
|
||||||
|
|
||||||
|
c.add_property(name = "i",
|
||||||
|
getter = cfunction("int get_i ()"),
|
||||||
|
doc = """Simple accessor""")
|
||||||
|
|
||||||
|
module.add_class(c)
|
||||||
|
|
||||||
|
module.add_function ("int app4triqs::chain (int i, int j)", doc = """Chain digits of two integers\n\n Chain the decimal digits of two integers i and j, and return a new \n\n @param :math:`i` The first integer\n @param :math:`j` The second integer \n @return An integer containing the digits of both i and j\n\n @remark""")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
module.generate_code()
|
31
python/app4triqs/version.py.in
Normal file
31
python/app4triqs/version.py.in
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# App4Triqs: Test application for Triqs
|
||||||
|
#
|
||||||
|
# Copyright (C) 2018 by The Simons Foundation
|
||||||
|
# Author: H. U.R. Strand
|
||||||
|
#
|
||||||
|
# App4Triqs 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 3 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
#
|
||||||
|
# App4Triqs 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
|
||||||
|
# App4Triqs. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
version = "@APP4TRIQS_VERSION@"
|
||||||
|
triqs_hash = "@TRIQS_GIT_HASH@"
|
||||||
|
app4triqs_hash = "@APP4TRIQS_GIT_HASH@"
|
||||||
|
|
||||||
|
def show_version():
|
||||||
|
print "\nYou are using app4triqs version %s, release %s\n"%(version, release)
|
||||||
|
|
||||||
|
def show_git_hash():
|
||||||
|
print "\nYou are using app4triqs git hash %s based on triqs git hash %s\n"%(app4triqs_hash, triqs_hash)
|
17
share/CMakeLists.txt
Normal file
17
share/CMakeLists.txt
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
if(NOT CMAKE_INSTALL_PREFIX STREQUAL TRIQS_ROOT)
|
||||||
|
|
||||||
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/app4triqs.modulefile.in ${CMAKE_CURRENT_BINARY_DIR}/app4triqs.modulefile @ONLY)
|
||||||
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/app4triqs.modulefile DESTINATION ${CMAKE_INSTALL_PREFIX}/share)
|
||||||
|
|
||||||
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/app4triqsvars.sh.in ${CMAKE_CURRENT_BINARY_DIR}/app4triqsvars.sh @ONLY)
|
||||||
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/app4triqsvars.sh DESTINATION ${CMAKE_INSTALL_PREFIX}/share)
|
||||||
|
|
||||||
|
message(STATUS "***************************************************************")
|
||||||
|
message(STATUS "* Custom install Location. Use: ")
|
||||||
|
message(STATUS "* ")
|
||||||
|
message(STATUS "* source ${CMAKE_INSTALL_PREFIX}/share/app4triqsvars.sh ")
|
||||||
|
message(STATUS "* ")
|
||||||
|
message(STATUS "* to set up the environment variables ")
|
||||||
|
message(STATUS "***************************************************************")
|
||||||
|
|
||||||
|
endif()
|
39
share/app4triqs.modulefile.in
Normal file
39
share/app4triqs.modulefile.in
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#%Module1.0
|
||||||
|
#
|
||||||
|
# To be installed as ${MODULEPATH}/app4triqs/@APP4TRIQS_VERSION@
|
||||||
|
|
||||||
|
set name app4triqs
|
||||||
|
set version @APP4TRIQS_VERSION@
|
||||||
|
set root @CMAKE_INSTALL_PREFIX@
|
||||||
|
set git_hash @APP4TRIQS_GIT_HASH@
|
||||||
|
|
||||||
|
set url "https://github.com/TRIQS/app4triqs"
|
||||||
|
set description "An example application using cpp2py and triqs."
|
||||||
|
|
||||||
|
module-whatis "$description"
|
||||||
|
|
||||||
|
proc ModulesHelp { } {
|
||||||
|
global description url version git_hash
|
||||||
|
puts stderr "Description: $description"
|
||||||
|
puts stderr "URL: $url"
|
||||||
|
puts stderr "Version: $version"
|
||||||
|
puts stderr "Git hash: $git_hash"
|
||||||
|
}
|
||||||
|
|
||||||
|
# You may need to edit the next line if cpp2py module is installed
|
||||||
|
# under a different name in your setup.
|
||||||
|
prereq cpp2py/@CPP2PY_VERSION@
|
||||||
|
|
||||||
|
# Only one version of app4triqs can be loaded at a time
|
||||||
|
conflict $name
|
||||||
|
|
||||||
|
setenv APP4TRIQS_ROOT $root
|
||||||
|
setenv APP4TRIQS_VERSION $version
|
||||||
|
setenv APP4TRIQS_GIT_HASH $git_hash
|
||||||
|
|
||||||
|
prepend-path PATH $root/bin
|
||||||
|
prepend-path CPATH $root/include
|
||||||
|
prepend-path LIBRARY_PATH $root/lib
|
||||||
|
prepend-path LD_LIBRARY_PATH $root/lib
|
||||||
|
prepend-path PYTHONPATH $root/@CPP2PY_PYTHON_LIB_DEST_ROOT@
|
||||||
|
prepend-path CMAKE_PREFIX_PATH $root/share/cmake
|
13
share/app4triqsvars.sh.in
Normal file
13
share/app4triqsvars.sh.in
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# Source this in your environment.
|
||||||
|
|
||||||
|
export TRIQS_ROOT=@CMAKE_INSTALL_PREFIX@
|
||||||
|
|
||||||
|
export CPATH=@CMAKE_INSTALL_PREFIX@/include:$CPATH
|
||||||
|
export PATH=@CMAKE_INSTALL_PREFIX@/bin:$PATH
|
||||||
|
export LIBRARY_PATH=@CMAKE_INSTALL_PREFIX@/lib:$LIBRARY_PATH
|
||||||
|
export LD_LIBRARY_PATH=@CMAKE_INSTALL_PREFIX@/lib:$LD_LIBRARY_PATH
|
||||||
|
export PYTHONPATH=@CMAKE_INSTALL_PREFIX@/@CPP2PY_PYTHON_LIB_DEST_ROOT@:$PYTHONPATH
|
||||||
|
export CMAKE_PREFIX_PATH=@CMAKE_INSTALL_PREFIX@/share/cmake:$CMAKE_PREFIX_PATH
|
||||||
|
|
||||||
|
|
||||||
|
|
4
test/CMakeLists.txt
Normal file
4
test/CMakeLists.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
add_subdirectory(c++)
|
||||||
|
if (${TRIQS_WITH_PYTHON_SUPPORT})
|
||||||
|
add_subdirectory(python)
|
||||||
|
endif()
|
11
test/c++/CMakeLists.txt
Normal file
11
test/c++/CMakeLists.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# Copy reference h5 files to binary dir
|
||||||
|
file(GLOB all_h5_files *.h5)
|
||||||
|
file(COPY ${all_h5_files} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
|
set(all_tests toto)
|
||||||
|
|
||||||
|
foreach(t ${all_tests})
|
||||||
|
add_executable(${t} ${CMAKE_CURRENT_SOURCE_DIR}/${t}.cpp)
|
||||||
|
target_link_libraries(${t} app4triqs_c gtest)
|
||||||
|
add_test(${t} ${CMAKE_CURRENT_BINARY_DIR}/${t})
|
||||||
|
endforeach()
|
32
test/c++/toto.cpp
Normal file
32
test/c++/toto.cpp
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#include <triqs/test_tools/gfs.hpp>
|
||||||
|
#include <app4triqs/toto.hpp>
|
||||||
|
|
||||||
|
using namespace app4triqs;
|
||||||
|
|
||||||
|
TEST(Toto, Add) {
|
||||||
|
|
||||||
|
toto a(0);
|
||||||
|
toto b(2);
|
||||||
|
|
||||||
|
auto c = a + b;
|
||||||
|
EXPECT_EQ(c, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(Toto, H5) {
|
||||||
|
|
||||||
|
toto a(0);
|
||||||
|
{ // Local scope for file
|
||||||
|
triqs::h5::file f("f.h5", H5F_ACC_TRUNC);
|
||||||
|
h5_write(f, "a", a);
|
||||||
|
}
|
||||||
|
|
||||||
|
toto a2;
|
||||||
|
{
|
||||||
|
triqs::h5::file f("f.h5", H5F_ACC_RDWR);
|
||||||
|
h5_read(f, "a", a2);
|
||||||
|
}
|
||||||
|
|
||||||
|
EXPECT_EQ(a, a2);
|
||||||
|
}
|
||||||
|
|
||||||
|
MAKE_MAIN;
|
12
test/python/CMakeLists.txt
Normal file
12
test/python/CMakeLists.txt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# Copy h5 files to binary dir
|
||||||
|
file(GLOB all_h5_files *.h5)
|
||||||
|
file(COPY ${all_h5_files} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
|
set(all_tests Toto chain)
|
||||||
|
|
||||||
|
foreach(t ${all_tests})
|
||||||
|
add_test(NAME ${t} COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/${t}.py)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
# Set the PythonPath : put the build dir first (in case there is an installed version).
|
||||||
|
set_property(TEST ${all_tests} PROPERTY ENVIRONMENT PYTHONPATH=${CMAKE_BINARY_DIR}/python:$ENV{PYTHONPATH} )
|
42
test/python/Toto.py
Normal file
42
test/python/Toto.py
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from app4triqs import Toto
|
||||||
|
from pytriqs.archive import *
|
||||||
|
from pytriqs.utility import mpi
|
||||||
|
|
||||||
|
class test_toto(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_add(self):
|
||||||
|
|
||||||
|
a=Toto(0)
|
||||||
|
b=Toto(2)
|
||||||
|
|
||||||
|
c=a+b
|
||||||
|
self.assertEqual(c, b)
|
||||||
|
|
||||||
|
|
||||||
|
def test_h5(self):
|
||||||
|
|
||||||
|
a=Toto(0)
|
||||||
|
with HDFArchive("f.h5",'a') as A:
|
||||||
|
A["a"] = a
|
||||||
|
with HDFArchive("f.h5",'r') as A:
|
||||||
|
a_read = A["a"]
|
||||||
|
self.assertEqual(a, a_read)
|
||||||
|
|
||||||
|
|
||||||
|
def test_mpi(self):
|
||||||
|
|
||||||
|
a=Toto(0)
|
||||||
|
|
||||||
|
if mpi.is_master_node():
|
||||||
|
a=Toto(1)
|
||||||
|
mpi.bcast(a)
|
||||||
|
|
||||||
|
self.assertEqual(a, Toto(1))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
17
test/python/chain.py
Normal file
17
test/python/chain.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from app4triqs import chain
|
||||||
|
|
||||||
|
class test_chain(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_chain(self):
|
||||||
|
|
||||||
|
i = 111
|
||||||
|
j = 222
|
||||||
|
ij = chain(i,j)
|
||||||
|
self.assertEqual(ij, 111222)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
Loading…
Reference in New Issue
Block a user