diff --git a/bin/analyzegrid/analyze_grid.cc b/bin/analyzegrid/analyze_grid.cc index c4bf9eb6f76df7d8176a216cde231dc617da2f72..61eddbf158de79a000bebf35ae899ab4a0865dcf 100644 --- a/bin/analyzegrid/analyze_grid.cc +++ b/bin/analyzegrid/analyze_grid.cc @@ -17,7 +17,7 @@ int main(int argc, char** argv){ try { - if (argc != 2){ + if (argc != 3){ std::cout << "Need ini file as command line argument." << std::endl; return 1; } @@ -39,7 +39,7 @@ int main(int argc, char** argv){ bool unstructured = initree.get("formcompiler.grid_unstructured", false); std::cout << "unstructured: " << unstructured << std::endl; - std::string filename = initree.get("analyze_grid_filename", "analyze_grid.txt"); + std::string filename = std::string(argv[2]); std::cout << "writing into: " << filename << std::endl; if (quadrilateral){ diff --git a/cmake/modules/DunePerftoolMacros.cmake b/cmake/modules/DunePerftoolMacros.cmake index ca33bfae93d7bcedc198d864518f424944924efb..42446c123d63b57dd0e5bab5c92a7d57b188c7c1 100644 --- a/cmake/modules/DunePerftoolMacros.cmake +++ b/cmake/modules/DunePerftoolMacros.cmake @@ -71,7 +71,7 @@ endif() file(GLOB_RECURSE UFL2PDELAB_SOURCES ${UFL2PDELAB_GLOB_PATTERN}) function(add_generated_executable) - set(OPTIONS EXCLUDE_FROM_ALL) + set(OPTIONS EXCLUDE_FROM_ALL ANALYZE_GRID) set(SINGLE TARGET SOURCE UFLFILE INIFILE) set(MULTI FORM_COMPILER_ARGS DEPENDS) include(CMakeParseArguments) @@ -115,6 +115,18 @@ function(add_generated_executable) set(GEN_EXCLUDE_FROM_ALL "") endif() + # Process analyze grid option + set(ANALYZE_GRID_FILE) + set(ANALYZE_GRID_OPTION) + if(GEN_ANALYZE_GRID) + set(ANALYZE_GRID_FILE "${GEN_INIFILE}.csv") + set(ANALYZE_GRID_OPTION "--sumfact-grid-info=${ANALYZE_GRID_FILE}") + add_custom_command(OUTPUT ${ANALYZE_GRID_FILE} + COMMAND ${CMAKE_BINARY_DIR}/bin/analyzegrid/analyze_grid ${GEN_INIFILE} ${ANALYZE_GRID_FILE} + COMMENT "Analyzing the grid for target ${GEN_TARGET}..." + ) + endif() + # Parse a mapping of operators to build and their respective filenames dune_execute_process(COMMAND ${CMAKE_BINARY_DIR}/run-in-dune-env python ${perftool_path}/deplist.py ${GEN_INIFILE} ${GEN_TARGET} OUTPUT_VARIABLE depdata @@ -132,7 +144,8 @@ function(add_generated_executable) --ini-file ${GEN_INIFILE} --target-name ${GEN_TARGET} --operator-to-build ${op} - DEPENDS ${GEN_UFLFILE} ${UFL2PDELAB_SOURCES} ${GEN_DEPENDS} ${DUNE_PERFTOOL_ADDITIONAL_PYTHON_SOURCES} + ${ANALYZE_GRID_OPTION} + DEPENDS ${GEN_UFLFILE} ${UFL2PDELAB_SOURCES} ${GEN_DEPENDS} ${DUNE_PERFTOOL_ADDITIONAL_PYTHON_SOURCES} ${ANALYZE_GRID_FILE} COMMENT "Generating operator file ${depdata___${op}} for the target ${GEN_TARGET}" ) set(header_deps ${header_deps} ${depdata___${op}}) diff --git a/cmake/modules/GeneratedSystemtests.cmake b/cmake/modules/GeneratedSystemtests.cmake index 2b1d87728c04a9359df79f3711c0df9c4f3f621e..41975df0e51fb575136c0c05510c9fb0eb7b5adc 100644 --- a/cmake/modules/GeneratedSystemtests.cmake +++ b/cmake/modules/GeneratedSystemtests.cmake @@ -3,7 +3,7 @@ function(dune_add_formcompiler_system_test) # parse arguments - set(OPTION DEBUG NO_TESTS) + set(OPTION DEBUG NO_TESTS ANALYZE_GRID) set(SINGLE INIFILE BASENAME SCRIPT UFLFILE SOURCE) set(MULTI CREATED_TARGETS) cmake_parse_arguments(SYSTEMTEST "${OPTION}" "${SINGLE}" "${MULTI}" ${ARGN}) @@ -21,6 +21,10 @@ function(dune_add_formcompiler_system_test) if(SYSTEMTEST_SOURCE) set(SOURCE SOURCE ${SYSTEMTEST_SOURCE}) endif() + set(ANALYZE_GRID_STR "") + if(SYSTEMTEST_ANALYZE_GRID) + set(ANALYZE_GRID_STR "ANALYZE_GRID") + endif() # set a default for the script. call_executable.py just calls the executable. # There, it is also possible to hook in things depending on the inifile @@ -57,6 +61,7 @@ function(dune_add_formcompiler_system_test) DEPENDS ${SYSTEMTEST_INIFILE} EXCLUDE_FROM_ALL ${SOURCE} + ${ANALYZE_GRID_STR} ) # Enrich the target with preprocessor variables from the __static section diff --git a/test/sumfact/poisson/CMakeLists.txt b/test/sumfact/poisson/CMakeLists.txt index bf99ee3c85a7011335445b0d50052bb2f9acee0a..9dda49d781ddcca1f93ac845d3528bcda919bc93 100644 --- a/test/sumfact/poisson/CMakeLists.txt +++ b/test/sumfact/poisson/CMakeLists.txt @@ -53,6 +53,7 @@ dune_add_formcompiler_system_test(UFLFILE poisson_3d.ufl dune_add_formcompiler_system_test(UFLFILE poisson_dg_2d.ufl BASENAME sumfact_poisson_dg_2d_unstructured INIFILE poisson_dg_2d_unstructured.mini + ANALYZE_GRID ) # dune_add_formcompiler_system_test(UFLFILE poisson_dg_3d.ufl # BASENAME sumfact_poisson_dg_3d_unstructured