diff --git a/CMakeLists.txt b/CMakeLists.txt index 747f97119..cc9c96df1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,190 +1,190 @@ #=============================================================================== # @file CMakeLists.txt # # @author Nicolas Richart # # @date creation: Mon Jun 14 2010 # @date last modification: Mon Sep 15 2014 # # @brief main configuration file # # @section LICENSE # # Copyright (©) 2010-2012, 2014 EPFL (Ecole Polytechnique Fédérale de Lausanne) # Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) # # Akantu is free software: you can redistribute it and/or modify it under the # terms of the GNU Lesser General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) any # later version. # # Akantu 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 Lesser General Public License for more # details. # # You should have received a copy of the GNU Lesser General Public License # along with Akantu. If not, see . # # @section DESCRIPTION #------------------------------------------------------------------------------- # _ _ # | | | | # __ _| | ____ _ _ __ | |_ _ _ # / _` | |/ / _` | '_ \| __| | | | # | (_| | < (_| | | | | |_| |_| | # \__,_|_|\_\__,_|_| |_|\__|\__,_| # #=============================================================================== #=============================================================================== # CMake Project #=============================================================================== cmake_minimum_required(VERSION 2.8.12) # add this options before PROJECT keyword set(CMAKE_DISABLE_SOURCE_CHANGES ON) set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) project(Akantu) enable_language(CXX) #=============================================================================== # Misc. config for cmake #=============================================================================== set(AKANTU_CMAKE_DIR "${PROJECT_SOURCE_DIR}/cmake") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/Modules") set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries.") mark_as_advanced(BUILD_SHARED_LIBS) if(NOT AKANTU_TARGETS_EXPORT) set(AKANTU_TARGETS_EXPORT AkantuLibraryDepends) endif() include(CMakeVersionGenerator) include(CMakePackagesSystem) include(CMakeFlagsHandling) include(AkantuPackagesSystem) include(AkantuMacros) #cmake_activate_debug_message() #=============================================================================== # Version Number #=============================================================================== # AKANTU version number. An even minor number corresponds to releases. set(AKANTU_MAJOR_VERSION 2) -set(AKANTU_MINOR_VERSION 2) +set(AKANTU_MINOR_VERSION 3) set(AKANTU_PATCH_VERSION 0) define_project_version() #=============================================================================== # Options #=============================================================================== # Debug set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -DAKANTU_NDEBUG" CACHE STRING "Flags used by the compiler during release builds" FORCE) add_flags(cxx "-Wall") #Profiling set(CMAKE_CXX_FLAGS_PROFILING "-g -pg -DNDEBUG -DAKANTU_NDEBUG -O2" CACHE STRING "Flags used by the compiler during profiling builds") set(CMAKE_C_FLAGS_PROFILING "-g -pg -DNDEBUG -DAKANTU_NDEBUG -O2" CACHE STRING "Flags used by the compiler during profiling builds") set(CMAKE_Fortran_FLAGS_PROFILING "-g -pg -DNDEBUG -DAKANTU_NDEBUG -O2" CACHE STRING "Flags used by the compiler during profiling builds") set(CMAKE_EXE_LINKER_FLAGS_PROFILING "-pg" CACHE STRING "Flags used by the linker during profiling builds") set(CMAKE_SHARED_LINKER_FLAGS_PROFILING "-pg" CACHE STRING "Flags used by the linker during profiling builds") mark_as_advanced( CMAKE_CXX_FLAGS_PROFILING CMAKE_C_FLAGS_PROFILING CMAKE_Fortran_FLAGS_PROFILING CMAKE_EXE_LINKER_FLAGS_PROFILING CMAKE_SHARED_LINKER_FLAGS_PROFILING ) include(CMakeDetermineCCompiler) #=============================================================================== # Dependencies #=============================================================================== option(AKANTU_PYTHON_INTERFACE "Generates the Akantu Python module" OFF) if(AKANTU_PYTHON_INTERFACE) list(APPEND AKANTU_BOOST_COMPONENTS python) endif() declare_akantu_types() package_list_packages(${PROJECT_SOURCE_DIR}/packages EXTRA_PACKAGES_FOLDER ${PROJECT_SOURCE_DIR}/extra_packages) ## meta option \todo better way to do it when multiple package give enable the ## same feature if(AKANTU_SCOTCH) set(AKANTU_PARTITIONER ON) else() set(AKANTU_PARTITIONER OFF) endif() if(AKANTU_MUMPS) set(AKANTU_SOLVER ON) else() set(AKANTU_SOLVER OFF) endif() #=============================================================================== # Akantu library #=============================================================================== add_subdirectory(src) #=============================================================================== # Documentation #=============================================================================== if(AKANTU_DOCUMENTATION_DOXYGEN OR AKANTU_DOCUMENTATION_MANUAL) add_subdirectory(doc) else() set(AKANTU_DOC_EXCLUDE_FILES "${PROJECT_SOURCE_DIR}/doc/manual" CACHE INTERNAL "") endif() #=============================================================================== # Examples and tests #=============================================================================== option(AKANTU_EXAMPLES "Activate examples" OFF) option(AKANTU_TESTS "Activate tests" OFF) include(AkantuTestsMacros) include(AkantuExamplesMacros) if(AKANTU_EXAMPLES OR AKANTU_TESTS) option(AKANTU_BUILD_ALL_EXAMPLES "Build all examples") option(AKANTU_BUILD_ALL_TESTS "Build all tests") find_package(GMSH REQUIRED) endif() if(AKANTU_EXAMPLES) add_subdirectory(examples) endif() add_test_tree(test) #=============================================================================== # Install and Packaging #=============================================================================== include(AkantuInstall) if(NOT AKANTU_DISABLE_CPACK) include(AkantuCPack) endif() #=============================================================================== # Install and Packaging #=============================================================================== if(AKANTU_PYTHON_INTERFACE) add_subdirectory(python) # add_subdirectory(akantu4py) endif() diff --git a/src/common/aka_config.hh.in b/src/common/aka_config.hh.in index 79bf5a4c8..fac6811ac 100644 --- a/src/common/aka_config.hh.in +++ b/src/common/aka_config.hh.in @@ -1,123 +1,123 @@ /** * @file aka_config.hh.in * * @author Nicolas Richart * * @date Fri Jan 13 12:34:54 2012 * * @brief Compilation time configuration of Akantu * * @section LICENSE * * Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_AKA_CONFIG_HH__ #define __AKANTU_AKA_CONFIG_HH__ #define AKANTU_VERSION_MAJOR @AKANTU_MAJOR_VERSION@ #define AKANTU_VERSION_MINOR @AKANTU_MINOR_VERSION@ #define AKANTU_VERSION_PATCH @AKANTU_PATCH_VERSION@ #define AKANTU_VERSION (AKANTU_VERSION_MAJOR * 100000 \ - + AKANTU_VERSION_MINOR * 1000 \ - + AKANTU_VERSION_PATCH) + + AKANTU_VERSION_MINOR * 1000 \ + + AKANTU_VERSION_PATCH) @AKANTU_TYPES_EXTRA_INCLUDES@ namespace akantu { typedef @AKANTU_FLOAT_TYPE@ Real; typedef @AKANTU_SIGNED_INTEGER_TYPE@ Int; typedef @AKANTU_UNSIGNED_INTEGER_TYPE@ UInt; template struct unordered_map { typedef typename @AKANTU_UNORDERED_MAP_TYPE@ type; }; template - size_t hash(const T & t) { + size_t hash(const T & t) { typedef @AKANTU_HASH_TYPE@ hash_type; return hash_type()(t); }; } #define AKANTU_INTEGER_SIZE @AKANTU_INTEGER_SIZE@ #define AKANTU_FLOAT_SIZE @AKANTU_FLOAT_SIZE@ #cmakedefine AKANTU_UNORDERED_MAP_IS_CXX11 #define __BEGIN_AKANTU_UNORDERED_MAP__ \ @AKANTU_UNORDERED_MAP_NAMESPACE_BEGIN@ #define __END_AKANTU_UNORDERED_MAP__ \ @AKANTU_UNORDERED_MAP_NAMESPACE_END@ #cmakedefine AKANTU_USE_BLAS #cmakedefine AKANTU_USE_LAPACK #cmakedefine AKANTU_PARALLEL #cmakedefine AKANTU_USE_MPI #cmakedefine AKANTU_USE_SCOTCH #cmakedefine AKANTU_USE_PTSCOTCH #cmakedefine AKANTU_SCOTCH_NO_EXTERN #cmakedefine AKANTU_USE_MUMPS #cmakedefine AKANTU_USE_PETSC #cmakedefine AKANTU_USE_IOHELPER #cmakedefine AKANTU_USE_QVIEW #cmakedefine AKANTU_USE_BLACKDYNAMITE #cmakedefine AKANTU_USE_NLOPT #cmakedefine AKANTU_USE_CPPARRAY #cmakedefine AKANTU_USE_OBSOLETE_GETTIMEOFDAY #cmakedefine AKANTU_EXTRA_MATERIALS #cmakedefine AKANTU_STUDENTS_EXTRA_PACKAGE #cmakedefine AKANTU_DAMAGE_NON_LOCAL #cmakedefine AKANTU_STRUCTURAL_MECHANICS #cmakedefine AKANTU_HEAT_TRANSFER #cmakedefine AKANTU_COHESIVE_ELEMENT #cmakedefine AKANTU_PARALLEL_COHESIVE_ELEMENT #cmakedefine AKANTU_IGFEM #cmakedefine AKANTU_USE_CGAL #cmakedefine AKANTU_EMBEDDED // BOOST Section #cmakedefine AKANTU_BOOST_CHRONO #cmakedefine AKANTU_BOOST_SYSTEM // Experimental part #cmakedefine AKANTU_CORE_CXX11 // Debug tools //#cmakedefine AKANTU_NDEBUG #cmakedefine AKANTU_DEBUG_TOOLS #cmakedefine READLINK_COMMAND @READLINK_COMMAND@ #cmakedefine ADDR2LINE_COMMAND @ADDR2LINE_COMMAND@ #define __aka_inline__ inline #endif /* __AKANTU_AKA_CONFIG_HH__ */ diff --git a/src/common/aka_debug_tools.hh b/src/common/aka_debug_tools.hh index 487e3b943..dd0b187bd 100644 --- a/src/common/aka_debug_tools.hh +++ b/src/common/aka_debug_tools.hh @@ -1,374 +1,380 @@ /** * @file aka_debug_tools.hh * * @author Nicolas Richart * * @date Mon Apr 8 16:33:02 2013 * * @brief Different tool to help to debug (compiled only in AKANTU_DEBUG mode) * * @section LICENSE * * Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #if defined(AKANTU_CORE_CXX11) # include #endif #include #include /* -------------------------------------------------------------------------- */ #include "aka_common.hh" #include "mesh.hh" #include "static_communicator.hh" /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_AKA_DEBUG_TOOLS_HH__ #define __AKANTU_AKA_DEBUG_TOOLS_HH__ #if defined(AKANTU_DEBUG_TOOLS) #define AKANTU_DEBUG_DBT(info) AKANTU_DEBUG_("DBT", dblSecondary, info) namespace akantu { namespace debug { enum DebugModule { _dm_all, _dm_test, _dm_synch, _dm_material, _dm_material_non_local, _dm_material_damage, _dm_material_cohesive, _dm_model_cohesive, _dm_debug_tools, _dm_integrator, _dm_end }; struct DebugModule_def { typedef DebugModule type; static const type _begin_ = _dm_all; static const type _end_ = _dm_end; }; typedef safe_enum debug_module_t; class DebugModulesHandler { public: void addModule(DebugModule mod) { if(mod == _dm_all) for(debug_module_t::iterator m(debug_module_t::begin()); m != debug_module_t::end(); ++m) modules.insert(*m); else modules.insert(mod); } void removeModule(DebugModule mod) { if(mod == _dm_all) modules.clear(); else modules.erase(mod); } bool isActive(DebugModule mod) { return modules.find(mod) != modules.end(); } private: std::set modules; }; /* ---------------------------------------------------------------------- */ /* Debug Element Manager */ /* ---------------------------------------------------------------------- */ class DebugElementManager : public DebugModulesHandler, public MeshEventHandler { public: DebugElementManager() : barycenters("debug_element_manager", "debug_element_barycenters", 0), out(&std::cerr) { } void setOutStream(std::ostream & o) { out = &o; } void setMesh(const Mesh & imesh) { this->mesh = &imesh; UInt spatial_dimension = mesh->getSpatialDimension(); mesh->initElementTypeMapArray(barycenters, spatial_dimension, _all_dimensions, false, _ek_not_defined); for (ghost_type_t::iterator gt = ghost_type_t::begin(); gt != ghost_type_t::end(); ++gt) { Mesh::type_iterator it = mesh->firstType(_all_dimensions, *gt, _ek_not_defined); Mesh::type_iterator last_type = mesh->lastType(_all_dimensions, *gt, _ek_not_defined); for(; it != last_type; ++it) { UInt nb_element = mesh->getNbElement(*it, *gt); Array & barycenter = barycenters(*it, *gt); barycenter.resize(nb_element); Array::vector_iterator bary_it = barycenter.begin(spatial_dimension); for (UInt elem = 0; elem < nb_element; ++elem) { mesh->getBarycenter(elem, *it, bary_it->storage(), *gt); ++bary_it; } } } const_cast(mesh)->registerEventHandler(*this); } public: void clear() { element_to_debug.clear(); } // Add element bool addElement(const Element & element) { element_to_debug.insert(element); if(isActive(_dm_debug_tools)) AKANTU_DEBUG_DBT(element << ": registered in debugger"); return true; } bool addElement(const Vector & pos, const ElementType & type, const GhostType & ghost_type, Real tolerance) { Array bary_arr = barycenters(type, ghost_type); Array::const_iterator > bary_begin = bary_arr.begin(bary_arr.getNbComponent()); Array::const_iterator > bary_it = bary_begin; Array::const_iterator > bary_end = bary_arr.end(bary_arr.getNbComponent()); bool found = false; for(; bary_it != bary_end && !found; ++bary_it) { found = pos.equal(*bary_it, tolerance); } if(!found) return false; UInt el_id = bary_it - bary_begin - 1; Element el(type, el_id, ghost_type, Mesh::getKind(type)); return addElement(el); } bool addElement(const Vector & pos, Real tolerance) { bool finished = false; for (ghost_type_t::iterator gt = ghost_type_t::begin(); gt != ghost_type_t::end() && ! finished; ++gt) { Mesh::type_iterator first = mesh->firstType(_all_dimensions, *gt, _ek_not_defined); Mesh::type_iterator last = mesh->lastType(_all_dimensions, *gt, _ek_not_defined); for (; first != last && !finished; ++first) { ElementType type = *first; finished = addElement(pos, type, *gt, tolerance); } } barycenters_of_elements_to_debug[pos] = tolerance; return finished; } inline void onElementsAdded(const Array & element_list, __attribute__((unused)) const NewElementsEvent & event) { Array::const_iterator it = element_list.begin(); Array::const_iterator end = element_list.end(); for (UInt el = 0; it != end; ++it, ++el) { const Element & elem = *it; Vector bary(mesh->getSpatialDimension(elem.type)); mesh->getBarycenter(elem, bary); barycenters(elem.type, elem.ghost_type).push_back(bary); std::map, Real>::iterator bit = barycenters_of_elements_to_debug.begin(); std::map, Real>::iterator bend = barycenters_of_elements_to_debug.end(); for (;bit != bend; ++bit) { if(bary.equal(bit->first, bit->second)) addElement(elem); } } } inline void onElementsRemoved(const Array & element_list, const ElementTypeMapArray & new_numbering, __attribute__((unused)) const RemovedElementsEvent & event) { barycenters.onElementsRemoved(new_numbering); Array::const_iterator it = element_list.begin(); Array::const_iterator end = element_list.end(); for (; it != end; ++it) { std::set::iterator el = element_to_debug.find(*it); if(el != element_to_debug.end()) { if(isActive(_dm_debug_tools)) AKANTU_DEBUG_DBT(*it << ": unregistered from debuger"); element_to_debug.erase(el); } } } + virtual void onNodesAdded (const Array & nodes_list, + const NewNodesEvent & event) {} + virtual void onNodesRemoved(const Array & nodes_list, + const Array & new_numbering, + const RemovedNodesEvent & event) {} + public: // Actions template void printData(DebugModule mod, const std::string & ctxt, const ElementTypeMapArray & data) { if(!isActive(mod)) return; begin(ctxt); for(std::set::const_iterator it(element_to_debug.begin()); it != element_to_debug.end(); ++it) { std::stringstream sout; try { const Array & array = data(it->type, it->ghost_type); UInt nb_data_per_element = array.getSize() / mesh->getNbElement(it->type, it->ghost_type); sout << " -> " << *it << " " << data.getID() << "(" << nb_data_per_element << ")" << ":"; typename Array::template const_iterator< Vector > data_it = array.begin(array.getNbComponent()); data_it += it->element * nb_data_per_element; for (UInt d = 0; d < nb_data_per_element; ++d, ++data_it) { sout << std::setprecision(15) << " " << *data_it; } } catch (...) { sout << " -> " << *it << " has no data defined"; } AKANTU_DEBUG_DBT(sout.str()); } end(ctxt); } /* ---------------------------------------------------------------------- */ template void printData(DebugModule mod, const std::string & ctxt, const ElementTypeMapArray & data, const ElementTypeMapArray & filter) { if(!isActive(mod)) return; begin(ctxt); for(std::set::const_iterator it(element_to_debug.begin()); it != element_to_debug.end(); ++it) { std::stringstream sout; sout << " -> " << *it << " " << data.getID() << ":"; UInt pos = filter(it->type, it->ghost_type).find(it->element); if(pos == UInt(-1)) (*out) << " not in filter!"; else { UInt nb_element = filter(it->type, it->ghost_type).getSize(); const Array & array = data(it->type, it->ghost_type); UInt nb_data_per_element = array.getSize() / nb_element; typename Array::template const_iterator< Vector > data_it = array.begin(array.getNbComponent()); data_it += pos * nb_data_per_element; for (UInt d = 0; d < nb_data_per_element; ++d, ++data_it) { sout << " " << *data_it; } } AKANTU_DEBUG_DBT(sout.str()); } end(ctxt); } #if defined(AKANTU_CORE_CXX11) void print(DebugModule mod, std::function< std::string(const Element &) > funct) { if(!isActive(mod)) return; for(std::set::const_iterator it(element_to_debug.begin()); it != element_to_debug.end(); ++it) { std::string func_str = funct(*it); if(func_str != "") AKANTU_DEBUG_DBT(" -> " << *it << ": " << func_str); } } #endif // Actions void printElements(DebugModule mod, const std::string & ctxt) { if(!isActive(mod)) return; begin(ctxt); for(std::set::const_iterator it(element_to_debug.begin()); it != element_to_debug.end(); ++it) { AKANTU_DEBUG_DBT(" -> " << *it); } end(ctxt); } void begin(const std::string & ctxt) { dbg_out = &debugger.getOutStream(); debugger.setOutStream(*out); if(! element_to_debug.empty()) AKANTU_DEBUG_DBT("Begin ("<< ctxt <<")"); } void end(const std::string & ctxt) { if(! element_to_debug.empty()) AKANTU_DEBUG_DBT("End ("<< ctxt <<")"); debugger.setOutStream(*dbg_out); } protected: const Mesh * mesh; ElementTypeMapArray barycenters; std::set element_to_debug; std::map, Real> barycenters_of_elements_to_debug; std::ostream * out; std::ostream * dbg_out; }; extern DebugElementManager element_manager; } /* ------------------------------------------------------------------------ */ /* CSV Writer */ /* ------------------------------------------------------------------------ */ class csv_ofstream { public: csv_ofstream(char sep = ',') : sep(sep) { } ~csv_ofstream() { if(file.is_open()) file.close(); } void open(std::string filename, std::ios_base::openmode mode = std::ios_base::out) { file.open(filename.c_str(), mode); } template csv_ofstream & operator<<(T t) { file << t << sep; return *this; } csv_ofstream & operator<<(std::ostream& ( *pf )(std::ostream&)) { long pos = file.tellp(); file.seekp(pos-1); file << pf; return *this; } private: std::ofstream file; char sep; }; } #endif #endif /* __AKANTU_AKA_DEBUG_TOOLS_HH__ */ diff --git a/src/common/aka_extern.cc b/src/common/aka_extern.cc index b2648381c..fefaeeab8 100644 --- a/src/common/aka_extern.cc +++ b/src/common/aka_extern.cc @@ -1,101 +1,101 @@ /** * @file aka_extern.cc * * @author Nicolas Richart * * @date creation: Mon Jun 14 2010 * @date last modification: Thu Apr 03 2014 * * @brief initialisation of all global variables * to insure the order of creation * * @section LICENSE * * Copyright (©) 2010-2012, 2014 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "aka_common.hh" #include "aka_array.hh" #include "aka_math.hh" #include "aka_random_generator.hh" #include "parser.hh" #include "cppargparse.hh" #include "static_solver.hh" /* -------------------------------------------------------------------------- */ #include #include /* -------------------------------------------------------------------------- */ #if defined(AKANTU_DEBUG_TOOLS) # include "aka_debug_tools.hh" #endif __BEGIN_AKANTU__ /** \todo write function to get this * values from the environment or a config file */ /* -------------------------------------------------------------------------- */ /* error.hpp variables */ /* -------------------------------------------------------------------------- */ namespace debug { /// standard output for debug messages std::ostream *_akantu_debug_cout = &std::cerr; /// standard output for normal messages std::ostream & _akantu_cout = std::cout; /// parallel context used in debug messages std::string _parallel_context = ""; Debugger debugger; #if defined(AKANTU_DEBUG_TOOLS) DebugElementManager element_manager; #endif } /// Paser for commandline arguments ::cppargparse::ArgumentParser static_argparser; /// Parser containing the information parsed by the input file given to initFull Parser static_parser; -bool Parser::parser_permissive = false; +bool Parser::permissive_parser = false; Real Math::tolerance = std::numeric_limits::epsilon(); const UInt _all_dimensions = UInt(-1); const Array empty_filter(0, 1, "empty_filter"); template<> long int RandGenerator::_seed = 0; template<> long int RandGenerator::_seed = 0; // useless just defined due to a template instantiation template<> long int RandGenerator::_seed = 0; template<> long int RandGenerator::_seed = 0; template<> long int Rand48Generator::_seed = 0; /* -------------------------------------------------------------------------- */ UInt StaticSolver::nb_references = 0; StaticSolver * StaticSolver::static_solver = NULL; /* -------------------------------------------------------------------------- */ __END_AKANTU__ diff --git a/src/fe_engine/fe_engine_template_tmpl.hh b/src/fe_engine/fe_engine_template_tmpl.hh index 95627d905..003464199 100644 --- a/src/fe_engine/fe_engine_template_tmpl.hh +++ b/src/fe_engine/fe_engine_template_tmpl.hh @@ -1,1727 +1,1726 @@ /** * @file fe_engine_template_tmpl.hh * * @author Aurelia Isabel Cuba Ramos * @author Marco Vocialta * @author Nicolas Richart * * @date creation: Mon Nov 05 2012 * @date last modification: Mon Jul 07 2014 * * @brief Template implementation of FEEngineTemplate * * @section LICENSE * * Copyright (©) 2014 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "aka_common.hh" __BEGIN_AKANTU__ /* -------------------------------------------------------------------------- */ template