Skip to content
Snippets Groups Projects
Commit 99ca3963 authored by Stefan Girke's avatar Stefan Girke
Browse files

added a new, more advanced testing scheme

- allow to use an executable with different parameter files ("test case")
- avoid overwriting of existing data folders by different test cases
parent 8e05971a
No related branches found
No related tags found
No related merge requests found
Showing
with 288 additions and 97 deletions
......@@ -7,13 +7,32 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
endif()
# macro for configuring the parameter files from parameter.in
macro(configure_parameter_file)
function(configure_parameter_file)
set(CURRENT_PARAMETER_PATH .)
if(OUT_OF_SOURCE_FEMDG_PARAMETER_FILE)
set(CURRENT_PARAMETER_PATH ${CMAKE_CURRENT_SOURCE_DIR})
endif()
configure_file(parameter.in ${CMAKE_CURRENT_BINARY_DIR}/parameter)
endmacro(configure_parameter_file)
set( TESTCASE_OUTPUT "data" )
set( TESTCASE_INPUT "parameter" )
if( ARGC EQUAL 1 )
set( TESTCASE_OUTPUT "data/${ARGV0}" )
set( TESTCASE_INPUT "parameters/${ARGV0}" )
endif()
if( ARGC EQUAL 2 )
set( TESTCASE_OUTPUT "data/${ARGV0}" )
set( TESTCASE_INPUT "${ARGV1}" )
endif()
configure_file(${CMAKE_SOURCE_DIR}/cmake/scripts/parameter.in ${CMAKE_CURRENT_BINARY_DIR}/${TESTCASE_INPUT} )
endfunction(configure_parameter_file)
function(dune_add_test_case base_target)
foreach( testcase ${ARGN})
set( TESTCASE_PARAMFILE parameters/${base_target}_${testcase} )
configure_parameter_file( ${testcase} ${TESTCASE_PARAMFILE} )
add_test( NAME ${base_target}_${testcase} COMMAND ./${base_target} ${TESTCASE_PARAMFILE} )
endforeach()
endfunction()
# do a fast test build by default,
# i.e. only build the most important tests
......
......@@ -2,8 +2,8 @@
# (-1: off, p: process p is verbose, in general 0 is a good choice)
fem.verboserank: 0
fem.prefix: ${CURRENT_PARAMETER_PATH}/data # specify directory for data output (is created if not exists)
fem.prefix: ${CURRENT_PARAMETER_PATH}/${TESTCASE_OUTPUT} # specify directory for data output (is created if not exists)
fem.prefix.input: ${CURRENT_PARAMETER_PATH}
fem.eoc.outputpath: ${CURRENT_PARAMETER_PATH}/data
fem.eoc.outputpath: ${CURRENT_PARAMETER_PATH}/${TESTCASE_OUTPUT}
paramfile: parameter_cmake
paramfile: ${TESTCASE_INPUT}
include_directories("${CMAKE_SOURCE_DIR}/dune/fem-dg/examples/advdiff/")
# configure parameter file from parameter.in
configure_parameter_file()
# specify type of grid implemention, dimension and polynmomial order
# specify type of grid implemention, dimension and polynomial order
set( GRIDTYPE ALUGRID_CUBE )
set( GRIDDIM 2 )
set( POLORDER 2 )
......@@ -12,31 +9,34 @@ add_definitions( "-D${GRIDTYPE}" )
add_definitions( "-DGRIDDIM=${GRIDDIM}" )
add_definitions( "-DDIMRANGE=1" )
configure_parameter_file( advdiff )
dune_add_test( NAME advdiff
SOURCES ../main.cc
COMPILE_DEFINITIONS "POLORDER=${POLORDER}"
TIMEOUT 3000
CMD_ARGS parameters/advdiff )
add_code_generate_targets( advdiff )
if( NOT FEMDG_FAST_TESTBUILD )
if( DUNE_FEM_DG_VERSION VERSION_LESS "2.4.1" )
add_executable( advdiffall ../main.cc )
dune_target_enable_all_packages( advdiffall )
dune_add_test( advdiffall )
set_tests_properties( advdiffall PROPERTIES TIMEOUT 3000 )
else()
dune_add_test( NAME advdiffall
SOURCES ../main.cc
TIMEOUT 3000 )
endif()
configure_parameter_file( advdiffall )
dune_add_test( NAME advdiffall
SOURCES ../main.cc
TIMEOUT 3000
CMD_ARGS parameters/advdiffall )
dune_add_test_case( advdiffall polorder1 )
dune_add_test_case( advdiffall polorder2 )
dune_add_test_case( advdiffall polorder3 )
dune_add_test_case( advdiffall polorder4 )
dune_add_test_case( advdiff pulse )
dune_add_test_case( advdiff sin )
dune_add_test_case( advdiff heat )
dune_add_test_case( advdiff quasi )
add_code_generate_targets( advdiffall )
endif()
if( DUNE_FEM_DG_VERSION VERSION_LESS "2.4.1" )
add_executable( advdiff ../main.cc )
set_property(TARGET advdiff APPEND PROPERTY
COMPILE_DEFINITIONS "POLORDER=${POLORDER}" )
dune_target_enable_all_packages( advdiff )
dune_add_test( advdiff )
set_tests_properties( advdiff PROPERTIES TIMEOUT 3000 )
else()
dune_add_test( NAME advdiff
SOURCES ../main.cc
COMPILE_DEFINITIONS "POLORDER=${POLORDER}"
TIMEOUT 3000 )
endif()
add_code_generate_targets( advdiff )
fem.resolvevariables: 1
# DATA WRITER
#------------
fem.io.datafileprefix: advdiff # prefix data data files
fem.io.savestep: 0.1 # save data every time interval
fem.io.savecount: -1 # save every i-th step
#femdg.stepper.printcount: 1
# GRID SOLUTION
#--------------
gridsol.savestep: 0.01
gridsol.firstwrite: 0.1
gridsol.filename: heat-checkpoint
# GENERAL
#--------
......@@ -15,17 +20,16 @@ paramfile: ../../parameter/paramBase
# PROBLEM SETUP
#--------------
# problem: heat, sin, quasi, pulse
problem: quasi
# problem: heat, quasi, plaplace
problem: pulse
fem.eoc.steps: 4
fem.eoc.steps: 1
femdg.stepper.endtime: 1.0
femdg.stepper.diffusiontimestep: 1
epsilon: 0.001
#plaplace: 3.0
#xvelocity: 1.0 # the only advection part for the linear heat eqn
#yvelocity: 3.0 # the only advection part for the linear heat eqn
#xvelocity: 1. # the only advection part for the linear heat eqn
#yvelocity: 3. # the only advection part for the linear heat eqn
#zvelocity: 0. # the only advection part for the linear heat eqn
......@@ -34,9 +38,12 @@ epsilon: 0.001
fem.io.macroGridFile_1d: ../../grids/unitcube1.dgf
fem.io.macroGridFile_2d: ../../grids/unitcube2.dgf
#fem.io.macroGridFile_2d: ../../grids/square2d.dgf
fem.io.macroGridFile_3d: ../../grids/unitcube3.dgf
# SOLVER
#-------
dgdiffusionflux.upwind: -1 -0.001
femdg.stepper.maxtimestep: 0.5
paramfile: ../../parameter/paramSolver
problem: heat
paramfile: parameters/advdiff
problem: pulse
paramfile: parameters/advdiff
problem: quasi
paramfile: parameters/advdiff
problem: sin
paramfile: parameters/advdiff
# DATA WRITER
#------------
fem.io.datafileprefix: advdiff # prefix data data files
fem.io.savestep: 0.1 # save data every time interval
fem.io.savecount: -1 # save every i-th step
# GRID SOLUTION
#--------------
gridsol.savestep: 0.01
gridsol.firstwrite: 0.1
gridsol.filename: heat-checkpoint
# GENERAL
#--------
paramfile: ../../parameter/paramBase
# PROBLEM SETUP
#--------------
# problem: heat, quasi, plaplace
problem: pulse
fem.eoc.steps: 1
femdg.stepper.endtime: 1.0
femdg.stepper.diffusiontimestep: 1
epsilon: 0.001
#plaplace: 3.0
#xvelocity: 1. # the only advection part for the linear heat eqn
#yvelocity: 3. # the only advection part for the linear heat eqn
#zvelocity: 0. # the only advection part for the linear heat eqn
# DOMAIN
#-------
fem.io.macroGridFile_1d: ../../grids/unitcube1.dgf
fem.io.macroGridFile_2d: ../../grids/unitcube2.dgf
#fem.io.macroGridFile_2d: ../../grids/square2d.dgf
fem.io.macroGridFile_3d: ../../grids/unitcube3.dgf
# SOLVER
#-------
dgdiffusionflux.upwind: -1 -0.001
femdg.stepper.maxtimestep: 0.5
paramfile: ../../parameter/paramSolver
femdg.polynomialOrder: 1
paramfile: parameters/advdiffall
femdg.polynomialOrder: 2
paramfile: parameters/advdiffall
femdg.polynomialOrder: 3
paramfile: parameters/advdiffall
femdg.polynomialOrder: 4
## note default would use order 5, which is not implemented...
fem.ode.order: 4
paramfile: parameters/advdiffall
include_directories("${CMAKE_SOURCE_DIR}/dune/fem-dg/examples/dataio/")
# configure parameter file from parameter.in
configure_parameter_file()
add_definitions( "-DALUGRID_SIMPLEX" )
add_definitions( "-DGRIDDIM=3" )
......@@ -9,18 +7,10 @@ add_definitions( "-DPOLORDER=2" )
add_definitions( "-DDIMRANGE=5" )
add_definitions( "-DENABLE_ADAPTIVELEAFINDEXSET_FOR_YASPGRID" )
if( DUNE_FEM_DG_VERSION VERSION_LESS "2.4.1" )
message( STATUS "Using old test build system (2.4 compability mode) " )
#add_executable( dataconvert ../dataconvert.cc )
add_executable( checkpointing ../main.cc )
#dune_target_enable_all_packages( dataconvert )
dune_target_enable_all_packages( checkpointing )
#dune_add_test( dataconvert )
dune_add_test( checkpointing )
else()
#dune_add_test( NAME dataconvert
# SOURCES ../dataconvert.cc )
dune_add_test( NAME checkpointing
SOURCES ../main.cc )
endif()
configure_parameter_file(checkpointing)
dune_add_test( NAME checkpointing
SOURCES ../main.cc
CMD_ARGS parameters/checkpointing )
# toggle verbosity of on process
# (-1: off, p: process p is verbose, in general 0 is a good choice)
fem.verboserank: 0
fem.prefix: ${CURRENT_PARAMETER_PATH}/data # specify directory for data output (is created if not exists)
fem.prefix.input: ${CURRENT_PARAMETER_PATH}
fem.eoc.outputpath: ${CURRENT_PARAMETER_PATH}/data
paramfile: parameter_cmake
# DATA WRITER
#------------
fem.io.datafileprefix: solution
fem.io.savestep: .1 # save data every time interval
fem.io.savecount: 1 # save every i-th step
# output format: binary | vtk-cell | vtk-vertex (projected in DG case) | none
fem.io.outputformat: vtk-cell
# if false no discrete function data is written (for debugging)
fem.io.writedata: true
# CHECKPOINTING
#--------------
# write checkpoint every 'checkpointstep' timestep
fem.io.checkpointstep: 1
# write 'checkpointmax' number of different check points
fem.io.checkpointmax: 2
# DOMAIN
#-------
fem.io.macroGridFile_1d: ../../grids/unitcube1.dgf
fem.io.macroGridFile_2d: ../../grids/unitcube2.dgf
fem.io.macroGridFile_3d: ../../grids/unitcube3.dgf
# PROBLEM SETUP
#--------------
#fem.io.checkpointrestartfile: ${CMAKE_CURRENT_SOURCE_DIR}/checkpoint
# number of EOC steps (only 1 for checkpointing)
fem.eoc.steps: 1
femdg.stepper.starttime: 0
femdg.stepper.endtime: 0.1
femdg.stepper.diffusiontimestep: 1
epsilon: 2.
penalty: 1.
fem.timeprovider.factor: 1.
femdg.stepper.maxtimestep: 0.1
femdg.stepper.printcount: 1
# SION LIB
#---------
fem.io.sionlib.numfiles: 1
fem.io.sionlib.blocksize: 128
# SOLVER
#-------
fem.ode.odesolver: EX
# ADAPTATION
#-----------
#number of global refinements before start of simulation
fem.adaptation.coarsestLevel: 2
fem.adaptation.finestLevel: 2
# DATA WRITER
#------------
fem.io.datafileprefix: solution
fem.io.savestep: .1 # save data every time interval
fem.io.savecount: 1 # save every i-th step
# output format: binary | vtk-cell | vtk-vertex (projected in DG case) | none
fem.io.outputformat: vtk-cell
# if false no discrete function data is written (for debugging)
fem.io.writedata: true
# CHECKPOINTING
#--------------
# write checkpoint every 'checkpointstep' timestep
fem.io.checkpointstep: 1
# write 'checkpointmax' number of different check points
fem.io.checkpointmax: 2
# DOMAIN
#-------
fem.io.macroGridFile_1d: ../../grids/unitcube1.dgf
fem.io.macroGridFile_2d: ../../grids/unitcube2.dgf
fem.io.macroGridFile_3d: ../../grids/unitcube3.dgf
# PROBLEM SETUP
#--------------
#fem.io.checkpointrestartfile: ${CMAKE_CURRENT_SOURCE_DIR}/checkpoint
# number of EOC steps (only 1 for checkpointing)
fem.eoc.steps: 1
femdg.stepper.starttime: 0
femdg.stepper.endtime: 0.1
femdg.stepper.diffusiontimestep: 1
epsilon: 2.
penalty: 1.
fem.timeprovider.factor: 1.
femdg.stepper.maxtimestep: 0.1
femdg.stepper.printcount: 1
# SION LIB
#---------
fem.io.sionlib.numfiles: 1
fem.io.sionlib.blocksize: 128
# SOLVER
#-------
fem.ode.odesolver: EX
# ADAPTATION
#-----------
#number of global refinements before start of simulation
fem.adaptation.coarsestLevel: 2
fem.adaptation.finestLevel: 2
include_directories("${CMAKE_SOURCE_DIR}/dune/fem-dg/examples/euler/")
# configure parameter file from parameter.in
configure_parameter_file()
# specify type of grid implemention, dimension and polynmomial order
# specify type of grid implemention, dimension and polynomial order
set( GRIDTYPE ALUGRID_CUBE )
set( GRIDDIM 2 )
set( POLORDER 2 )
......@@ -14,31 +11,23 @@ add_definitions( "-DGRIDDIM=${GRIDDIM}" )
set( MAIN ${CMAKE_CURRENT_SOURCE_DIR}/../main.cc )
set( CHORJO ${CMAKE_CURRENT_SOURCE_DIR}/../problems/chorjo.cc )
configure_parameter_file( euler )
dune_add_test( NAME euler
SOURCES ${MAIN} ${CHORJO}
COMPILE_DEFINITIONS "POLORDER=${POLORDER}"
CMD_ARGS parameters/euler )
add_code_generate_targets( euler )
if( NOT FEMDG_FAST_TESTBUILD )
if( DUNE_FEM_DG_VERSION VERSION_LESS "2.4.1" )
add_executable( eulerall ${MAIN} ${CHORJO} )
dune_target_enable_all_packages( eulerall )
dune_add_test( eulerall )
else()
dune_add_test( NAME eulerall
SOURCES ${MAIN} ${CHORJO}
COMPILE_DEFINITIONS LIMITER )
endif()
configure_parameter_file( eulerall )
dune_add_test( NAME eulerall
SOURCES ${MAIN} ${CHORJO}
COMPILE_DEFINITIONS LIMITER
CMD_ARGS parameters/eulerall )
add_code_generate_targets( eulerall )
endif()
if( DUNE_FEM_DG_VERSION VERSION_LESS "2.4.1" )
add_executable( euler ${MAIN} ${CHORJO} )
set_property(TARGET euler APPEND PROPERTY
COMPILE_DEFINITIONS "POLORDER=${POLORDER}" )
dune_target_enable_all_packages( euler )
dune_add_test( euler )
else()
dune_add_test( NAME euler
SOURCES ${MAIN} ${CHORJO}
COMPILE_DEFINITIONS "POLORDER=${POLORDER}" )
endif()
add_code_generate_targets( euler )
# toggle verbosity of on process
# (-1: off, p: process p is verbose, in general 0 is a good choice)
fem.verboserank: 0
fem.prefix: ${CURRENT_PARAMETER_PATH}/data # specify directory for data output (is created if not exists)
fem.prefix.input: ${CURRENT_PARAMETER_PATH}/
fem.eoc.outputpath: ${CURRENT_PARAMETER_PATH}/data
paramfile: parameter_cmake
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment