Commit 1d6634d6 authored by GILLES Sebastien's avatar GILLES Sebastien

#1247 Remove SCons from the project.

parent 638db3ca
This diff is collapsed.
......@@ -132,27 +132,8 @@ git clone https://gitlab.inria.fr/MoReFEM/Models/AcousticWave
One you're there, you may run one of the embedded model left there for play here; to change the input file used you just have to edit a scheme in Product > Scheme.
### SCons
SCons is the command line build tool used up to now to compile on command line the library. However, its maintainance proved to be a bit tricky and the compilation is rather slow, so a switch to CMake is in progress.
To build SCons file:
- Copy one of the build_configuration.sample.***.py file in the Sources directory.
- Edit your local copy to specify the correct settings you want; for a first approach you just have to specify where the programs ans libraries will be installed (BUILD\_DIR) and another used for intermediate steps (INTERMEDIATE\_BUILD\_DIR).
- The run:
````
scons -j *nproc* --config_file=*your configuration file*
````
This command will display all possible targets. If you want to build everything, choose the target 'all':
````
scons -j *nproc* --config_file=*your configuration file* all
````
### CMake
CMake build is intended to replace SCons this year as the command line build tools; the goal is to be a bit more easy to maintain than SCons (and compilation is markedly faster, especially using ninja back-end).
To compile the code:
......
def WarningFlags():
'''
List of warning flags to consider when compiling with clang.
The idea is to use every warning available for clang except a handful ones that are too cumbersome.
Those are:
. -Wno-c++98-compat, -Wno-c++98-compat-pedantic: HMoReFEMHeart is resolutely C++ 14 in style and doesn't bother with C++ 98 compatibility.
. -Wno-padded: This warning tells each time it has to pad a class to make it a multiple of pointer size. The issue is that it tells this even if you can't do better (for instance a class with only one boolean attribute); it would be useful if it guides the user toward more efficiency (for instance suggesting to replace bool, double, bool by bool, bool, double which might take less space in storage).
. -Wno-exit-time-destructors, -Wno-exit-time-destructors: these would triggger warnings due to some design pattern I used (object factories).
. -Wno-documentation-unknown-command: BEcause clang is not up-to-date with current Doxygen syntax.
'''
return ('-Weverything',
'-Wno-c++98-compat',
'-Wno-c++98-compat-pedantic',
'-Wno-padded',
'-Wno-exit-time-destructors',
'-Wno-global-constructors',
'-Wno-documentation',
'-Wno-documentation-unknown-command',
'-Wno-undefined-func-template',
'-Wno-c++1z-extensions')
def DebugMacroFlags():
'''Macro flags that are present only in debug mode.
Only macros specific to compiler are given here; NDEBUG for instance is not and is handled elsewhere.
For instance here we use '_LIBCPP_DEBUG2=0' which is a libc++ (STL used by clang) macro to tells when there
are overflows in array indexes.
'''
return ('_LIBCPP_DEBUG2=0', )
def MiscellaneousFlags(env):
'''Any flag not yet covered in above categories.
\param[in] env Scons environment.
'''
ret = []
if env['MODE'] == 'release':
ret.append('-flto')
return ret
\ No newline at end of file
def WarningFlags():
'''
List of warning flags to consider when compiling with gcc.
This list is adapted from http://stackoverflow.com/questions/5088460/flags-to-enable-thorough-and-verbose-g-warnings.
'''
return ('-Wall',
'-Wextra',
#'-Wpedantic', Can't be activated because of third-party error; pragma doesn't work to disable it only for third party.
'-Wcast-align',
'-Wcast-qual',
'-Wconversion',
'-Wdisabled-optimization',
'-Wfloat-equal',
'-Wformat=2',
'-Wformat-nonliteral',
'-Wformat-security',
'-Wformat-y2k',
'-Wimport',
'-Winit-self',
# '-Winline', Tag destructor defined with = default as inline...
'-Winvalid-pch',
'-Wmissing-field-initializers',
'-Wmissing-format-attribute',
'-Wmissing-include-dirs',
'-Wmissing-noreturn',
'-Wpacked',
'-Wpointer-arith',
'-Wredundant-decls',
#'-Wshadow', g++ shadow is too cumbersome: can't name function argument same as a method for instance...
'-Wstack-protector',
'-Wstrict-aliasing=2',
'-Wswitch-enum',
'-Wunreachable-code',
'-Wunused',
'-Wunused-parameter',
'-Wvariadic-macros',
'-Wwrite-strings'
)
def DebugMacroFlags():
'''Macro flags that are present only in debug mode.
Only macros specific to compiler are given here; NDEBUG for instance is not and is handled elsewhere.
For instance here we use '_LIBCPP_DEBUG2=0' which is a libc++ (STL used by clang) macro to tells when there
are overflows in array indexes.
'''
return ('_LIBCPP_DEBUG2=0', )
def MiscellaneousFlags(env):
'''Any flag not yet covered in above categories.
\param[in] env Scons environment.
'''
return ('-fdiagnostics-color', '-fPIC', )
# This file refers to the clang built manually on top of LLVM, reather than the default one for instance found in Apple XCode.
def WarningFlags():
'''
List of warning flags to consider when compiling with clang.
The idea is to use every warning available for clang except a handful ones that are too cumbersome.
Those are:
. -Wno-c++98-compat, -Wno-c++98-compat-pedantic: MoReFEM is resolutely C++ 14 in style and doesn't bother with C++ 98 compatibility.
. -Wno-padded: This warning tells each time it has to pad a class to make it a multiple of pointer size. The issue is that it tells this even if you can't do better (for instance a class with only one boolean attribute); it would be useful if it guides the user toward more efficiency (for instance suggesting to replace bool, double, bool by bool, bool, double which might take less space in storage).
. -Wno-exit-time-destructors, -Wno-exit-time-destructors: these would triggger warnings due to some design pattern I used (object factories).
. -Wno-documentation-unknown-command: BEcause clang is not up-to-date with current Doxygen syntax.
'''
return ('-Weverything',
'-Wno-c++98-compat',
'-Wno-c++98-compat-pedantic',
'-Wno-padded',
'-Wno-exit-time-destructors',
'-Wno-global-constructors',
'-Wno-documentation',
'-Wno-documentation-unknown-command',
'-Wno-undefined-func-template')
def DebugMacroFlags():
'''Macro flags that are present only in debug mode.
Only macros specific to compiler are given here; NDEBUG for instance is not and is handled elsewhere.
For instance here we use '_LIBCPP_DEBUG2=0' which is a libc++ (STL used by clang) macro to tells when there
are overflows in array indexes.
'''
return ('_LIBCPP_DEBUG2=0', )
def MiscellaneousFlags(env):
'''Any flag not yet covered in above categories.
\param[in] env Scons environment.
'''
ret = ["-DMOREFEM_LLVM_CLANG"]
if env['MODE'] == 'release':
ret.append('-flto')
return ret
\ No newline at end of file
import os
import SCons
def PathOrNone(key, val, env):
"""For BLAS_LIB_DIR: None is also an acceptable value (in OS X as framework Accelerate is used)."""
if val:
return SCons.Variables.PathVariable.PathIsDir(key, val, env)
def ReadConfigurationFile(configuration_file):
"""Read the configuration file that details the settings specific to each user.
"""
assert os.path.isfile(configuration_file)
vars = SCons.Variables.Variables(configuration_file)
vars.Add(SCons.Variables.EnumVariable('MODE', 'Whether you compile in debug or release mode. A hybrid mode for callgrind is also there (it is a release with debug symbols).', 'debug',
allowed_values=('debug', 'release', 'callgrind')))
vars.Add(SCons.Variables.EnumVariable('LIBRARY_TYPE', 'Whether you want to use static or shared libraries.', None,
allowed_values=('static', 'shared', )))
vars.Add(SCons.Variables.BoolVariable('MOREFEM_CHECK_UPDATE_GHOSTS_CALL_RELEVANCE', \
"If true, add a (costly) method that gives an hint whether an UpdateGhost() call was relevant or not.", \
None))
vars.Add(SCons.Variables.BoolVariable('MOREFEM_EXTENDED_TIME_KEEP', \
"If true, TimeKeep gains the ability to track times between each call of PrintTimeElapsed(). If not, PrintTimeElapsed() is flatly ignored.", \
None))
vars.Add(SCons.Variables.BoolVariable('MOREFEM_CHECK_NAN_AND_INF', \
"If true, there are additional checks that no nan and inf appears in the code. Even if False, solver always check for the validity of its solution (if a nan or an inf is present the SolveLinear() or SolveNonLinear() operation throws with a dedicated Petsc error). Advised in debug mode and up to you in release mode.", \
None))
vars.Add(SCons.Variables.PathVariable("BUILD_DIR", "Path to the folder into which build will be installed.", None, SCons.Variables.PathVariable.PathIsDirCreate))
vars.Add(SCons.Variables.PathVariable("INTERMEDIATE_BUILD_DIR", "Path to the folder into which intermediate build will be installed.", None, SCons.Variables.PathVariable.PathIsDirCreate))
vars.Add('COMPILER', "Name of the compiler family used (clang or gcc currently)", None)
vars.Add('COMPILER_DIRECTORY', "Subdirectory(ies) to use within BUID_DIR and INTERMEDIATE_BUILD_DIR for the compiler. It is introduced to allow several directories for a same compiler: for instance if you want to build both gcc5 and gcc 6 you must provide 'gcc' in COMPILER but might name the directories 'gcc-5' and 'gcc-6'. If you do not need such refinement just use the same content as COMPILER field.", None)
vars.Add('CC', "C compiler", None)
vars.Add('CXX', "C++ compiler", None)
vars.Add('CCC_CC', "Option used only for clang-analyzer; points to C compiler.", "clang")
vars.Add('CCC_CXX', "Option used only for clang-analyzer; points to C++ compiler.", "clang++")
vars.Add('CCC_ANALYZER_VERBOSE', "Verbose mode for clang-analyzer", 1)
vars.Add(SCons.Variables.PathVariable('OPEN_MPI_INCL_DIR', "Includes of OpenMPI library.", None))
vars.Add(SCons.Variables.BoolVariable('BLAS_CUSTOM_LINKER', "True if Blas is not handled as a standard library (typically for macOS/framework Accelerate).", 0))
vars.Add(SCons.Variables.PathVariable('BLAS_LIB_DIR', "Directory in which Blas library may be found. Might be 'None'.", None, PathOrNone))
vars.Add('BLAS_LIB', "Call to the linker to the library (e.g. '-framework Accelerate', '-lopenblas', ...).", None)
vars.Add(SCons.Variables.PathVariable('PETSC_GENERAL_INCL_DIR', "Includes of Petsc library that are independant of the build used.", None))
vars.Add(SCons.Variables.PathVariable('PETSC_DEBUG_INCL_DIR', "Includes of Petsc library related to debug build.", None))
vars.Add(SCons.Variables.PathVariable('PETSC_RELEASE_INCL_DIR', "Includes of Petsc library related to release build.", None))
vars.Add(SCons.Variables.PathVariable('PARMETIS_INCL_DIR', "Includes of Parmetis library.", None))
vars.Add(SCons.Variables.PathVariable('LUA_INCL_DIR', "Includes of Lua library.", None))
vars.Add(SCons.Variables.PathVariable('BOOST_INCL_DIR', "Includes of Boost library.", None))
vars.Add(SCons.Variables.PathVariable('OPEN_MPI_LIB_DIR', "Path to OpenMPI library", None))
vars.Add(SCons.Variables.PathVariable('PETSC_DEBUG_LIB_DIR', "Path to Petsc library built in debug mode.", None))
vars.Add(SCons.Variables.PathVariable('PETSC_RELEASE_LIB_DIR', "Path to Petsc library built in release mode.", None))
vars.Add(SCons.Variables.PathVariable('PARMETIS_LIB_DIR', "Path to Parmetis library.", None))
vars.Add(SCons.Variables.PathVariable('LUA_LIB_DIR', "Path to Lua library.", None))
vars.Add(SCons.Variables.PathVariable('BOOST_LIB_DIR', "Path to Boost library.", None))
vars.Add(SCons.Variables.BoolVariable('PHILLIPS_LINKER', "True if you want to link with the Phillips Library. Only works with gcc.", 0))
vars.Add(SCons.Variables.PathVariable('PHILLIPS_DIR', "Path to Phillips library and header. Might be 'None' if irrelevant", None, PathOrNone))
return vars
This diff is collapsed.
import os
import copy
import imp
Import('env')
custom = imp.load_source('custom_scons_functions', '{0}/custom_scons_functions.py'.format(env["MOREFEM_SCONS"]))
core_src = Split('''
./InitTimeKeepLog.cpp
./EnsightCaseReader/EnsightCaseReader.cpp
./InputParameter/Crtp/Section.cpp
./InputParameter/DirichletBoundaryCondition/Impl/DirichletBoundaryCondition.cpp
./InputParameter/FElt/Impl/FEltSpace.cpp
./InputParameter/FElt/Impl/NumberingSubset.cpp
./InputParameter/FElt/Impl/Unknown.cpp
./InputParameter/Geometry/Impl/Domain.cpp
./InputParameter/Geometry/Impl/LightweightDomainList.cpp
./InputParameter/Geometry/Impl/Mesh.cpp
./InputParameter/Geometry/Impl/PseudoNormals.cpp
./InputParameter/Geometry/InterpolationFile.cpp
./InputParameter/InitialCondition/Impl/InitialCondition.cpp
./InputParameter/InitialConditionGate.cpp
./InputParameter/Interpolator/Impl/InitVertexMatching.cpp
./InputParameter/Parameter/AnalyticalPrestress/AnalyticalPrestress.cpp
./InputParameter/Parameter/Diffusion/Density.cpp
./InputParameter/Parameter/Diffusion/Diffusion.cpp
./InputParameter/Parameter/Diffusion/TransfertCoefficient.cpp
./InputParameter/Parameter/ElectricalActivation/ElectricalActivation.cpp
./InputParameter/Parameter/Fiber/Impl/Fiber.cpp
./InputParameter/Parameter/Fluid/Fluid.cpp
./InputParameter/Parameter/Heart/Heart.cpp
./InputParameter/Parameter/Impl/ParameterUsualDescription.cpp
./InputParameter/Parameter/Solid/C_i_Mu_i.cpp
./InputParameter/Parameter/Solid/HyperelasticBulk.cpp
./InputParameter/Parameter/Solid/Kappa1.cpp
./InputParameter/Parameter/Solid/Kappa2.cpp
./InputParameter/Parameter/Solid/LameLambda.cpp
./InputParameter/Parameter/Solid/LameMu.cpp
./InputParameter/Parameter/Solid/PoissonRatio.cpp
./InputParameter/Parameter/Solid/Solid.cpp
./InputParameter/Parameter/Solid/Viscosity.cpp
./InputParameter/Parameter/Solid/YoungModulus.cpp
./InputParameter/Parameter/Source/Impl/RectangularSourceTimeParameter.cpp
./InputParameter/Parameter/Source/Impl/TransientSource.cpp
./InputParameter/Parameter/Source/Pressure.cpp
./InputParameter/Parameter/SpatialFunction.cpp
./InputParameter/Parameter/ViscoelasticBoundaryCondition/ViscoelasticBoundaryCondition.cpp
./InputParameter/Reaction/FitzHughNagumo.cpp
./InputParameter/Reaction/MitchellSchaeffer.cpp
./InputParameter/Reaction/ReactionCoefficient.cpp
./InputParameter/Result.cpp
./InputParameter/Solver/ConvergenceTest.cpp
./InputParameter/Solver/Impl/Petsc.cpp
./InputParameter/TimeManager/TimeManager.cpp
./LinearAlgebra/GlobalDiagonalMatrix.cpp
./LinearAlgebra/GlobalMatrix.cpp
./LinearAlgebra/GlobalVector.cpp
./NumberingSubset/Internal/NumberingSubsetManager.cpp
./NumberingSubset/NumberingSubset.cpp
./TimeManager/Policy/ConstantTimeStep.cpp
./TimeManager/Policy/VariableTimeStep.cpp
./TimeManager/TimeManager.cpp
./TimeManager/TimeManagerInstance.cpp
''')
core_lib = custom.MoReFEMLibrary(env, 'MoReFEM_core', core_src)
Return('core_lib')
import os
import copy
import imp
Import('env')
custom = imp.load_source('custom_scons_functions', '{0}/custom_scons_functions.py'.format(env["MOREFEM_SCONS"]))
felt_src = Split('''
./BoundaryConditions/DirichletBoundaryCondition.cpp
./BoundaryConditions/DirichletBoundaryConditionManager.cpp
./BoundaryConditions/Internal/Component/Comp1.cpp
./BoundaryConditions/Internal/Component/Comp12.cpp
./BoundaryConditions/Internal/Component/Comp123.cpp
./BoundaryConditions/Internal/Component/Comp13.cpp
./BoundaryConditions/Internal/Component/Comp2.cpp
./BoundaryConditions/Internal/Component/Comp23.cpp
./BoundaryConditions/Internal/Component/Comp3.cpp
./BoundaryConditions/Internal/Component/CompNA.cpp
./BoundaryConditions/Internal/Component/ComponentFactory.cpp
./BoundaryConditions/Internal/Component/ComponentManager.cpp
./BoundaryConditions/Internal/DofStorage.cpp
./FiniteElement/FElt.cpp
./FiniteElement/Internal/Local2GlobalStorage.cpp
./FiniteElement/LocalFEltSpace.cpp
./FiniteElementSpace/AllocateGlobalLinearAlgebra.cpp
./FiniteElementSpace/FEltSpace.cpp
./FiniteElementSpace/GodOfDof.cpp
./FiniteElementSpace/GodOfDofManager.cpp
./FiniteElementSpace/Internal/BreakCircularDependancy.cpp
./FiniteElementSpace/Internal/ComputeMatrixPattern.cpp
./FiniteElementSpace/Internal/Connectivity.cpp
./FiniteElementSpace/Internal/CreateNodeListHelper.cpp
./FiniteElementSpace/Internal/DofComputations.cpp
./FiniteElementSpace/Internal/DofProgramWiseIndexListPerVertexCoordIndexList.cpp
./FiniteElementSpace/Internal/DofProgramWiseIndexListPerVertexCoordIndexListManager.cpp
./FiniteElementSpace/Internal/FEltSpace.cpp
./FiniteElementSpace/Internal/FEltSpaceStorage.cpp
./FiniteElementSpace/Internal/Impl/AttributeProcessorHelper.cpp
./FiniteElementSpace/Internal/Impl/FEltSpaceInternalStorage.cpp
./FiniteElementSpace/Internal/Impl/InterfaceSpecialization.cpp
./FiniteElementSpace/Internal/MatrixPattern.cpp
./FiniteElementSpace/Internal/MovemeshHelper.cpp
./FiniteElementSpace/Internal/NdofHolder.cpp
./FiniteElementSpace/Internal/Partition.cpp
./FiniteElementSpace/Internal/ReduceToProcessorWise.cpp
./Nodes_and_dofs/Dof.cpp
./Nodes_and_dofs/Exceptions/Dof.cpp
./Nodes_and_dofs/LocalNode.cpp
./Nodes_and_dofs/Node.cpp
./Nodes_and_dofs/NodeBearer.cpp
./QuadratureRules/Exceptions/QuadratureRuleList.cpp
./QuadratureRules/Instantiation/Hexahedron.cpp
./QuadratureRules/Instantiation/Point.cpp
./QuadratureRules/Instantiation/Quadrangle.cpp
./QuadratureRules/Instantiation/Segment.cpp
./QuadratureRules/Instantiation/Tetrahedron.cpp
./QuadratureRules/Instantiation/Triangle.cpp
./QuadratureRules/Internal/GaussQuadratureFormula.cpp
./QuadratureRules/QuadraturePoint.cpp
./QuadratureRules/QuadratureRule.cpp
./QuadratureRules/QuadratureRulePerTopology.cpp
./RefFiniteElement/Advanced/RefFEltInLocalOperator.cpp
./RefFiniteElement/Instantiation/HexahedronQ1.cpp
./RefFiniteElement/Instantiation/HexahedronQ2c.cpp
./RefFiniteElement/Instantiation/Internal/ShapeFunction/TetrahedronP1Bubble.cpp
./RefFiniteElement/Instantiation/Internal/ShapeFunction/TriangleP1Bubble.cpp
./RefFiniteElement/Instantiation/Internal/SpectralHelper.cpp
./RefFiniteElement/Instantiation/Point.cpp
./RefFiniteElement/Instantiation/QuadrangleQ1.cpp
./RefFiniteElement/Instantiation/QuadrangleQ2c.cpp
./RefFiniteElement/Instantiation/SegmentP0.cpp
./RefFiniteElement/Instantiation/SegmentP1.cpp
./RefFiniteElement/Instantiation/SegmentP2.cpp
./RefFiniteElement/Instantiation/Spectral.cpp
./RefFiniteElement/Instantiation/TetrahedronP0.cpp
./RefFiniteElement/Instantiation/TetrahedronP1.cpp
./RefFiniteElement/Instantiation/TetrahedronP1Bubble.cpp
./RefFiniteElement/Instantiation/TetrahedronP2.cpp
./RefFiniteElement/Instantiation/TriangleP0.cpp
./RefFiniteElement/Instantiation/TriangleP1.cpp
./RefFiniteElement/Instantiation/TriangleP1Bubble.cpp
./RefFiniteElement/Instantiation/TriangleP2.cpp
./RefFiniteElement/Internal/BasicRefFElt.cpp
./RefFiniteElement/Internal/BasicRefFEltFactory.cpp
./RefFiniteElement/Internal/Exceptions/BasicRefFEltFactory.cpp
./RefFiniteElement/Internal/Impl/BasicRefFEltHolder.cpp
./RefFiniteElement/Internal/RefFEltInFEltSpace.cpp
./RefFiniteElement/Internal/RefLocalFEltSpace.cpp
./Unknown/EnumUnknown.cpp
./Unknown/ExtendedUnknown.cpp
./Unknown/Unknown.cpp
./Unknown/UnknownManager.cpp
''')
felt_lib = custom.MoReFEMLibrary(env, 'MoReFEM_felt', felt_src)
Return('felt_lib')
import os
import copy
import imp
Import('env')
custom = imp.load_source('custom_scons_functions', '{0}/custom_scons_functions.py'.format(env["MOREFEM_SCONS"]))
local_src = Split('''
./DofSourcePolicy/DofSource.cpp
./DofSourcePolicy/None.cpp
./Internal/InitialCondition/Instances/ThreeDimensionalInitialCondition.cpp
./Internal/Storage/GlobalMatrixStorage.cpp
./Internal/Storage/GlobalVectorStorage.cpp
''')
local_lib = custom.MoReFEMLibrary(env, 'MoReFEM_formulation_solver', local_src)
Return('local_lib')
import os
import copy
import imp
Import('env')
custom = imp.load_source('custom_scons_functions', '{0}/custom_scons_functions.py'.format(env["MOREFEM_SCONS"]))
geometry_src = Split('''
./Coords/Coords.cpp
./Coords/SpatialPoint.cpp
./Coords/Exceptions/Coords.cpp
./Coords/Internal/CoordIndexes.cpp
./Coords/Internal/Factory.cpp
./Coords/LocalCoords.cpp
./Domain/Advanced/LightweightDomainList.cpp
./Domain/Advanced/LightweightDomainListManager.cpp
./Domain/Domain.cpp
./Domain/DomainManager.cpp
./Domain/Internal/DomainHelper.cpp
./Domain/MeshLabel.cpp
./GeometricElt/Advanced/ComputeJacobian.cpp
./GeometricElt/Advanced/FreeFunctions.cpp
./GeometricElt/Advanced/GeometricEltFactory.cpp
./GeometricElt/GeometricElt.cpp
./GeometricElt/Instances/Hexahedron/Hexahedron20.cpp
./GeometricElt/Instances/Hexahedron/Hexahedron27.cpp
./GeometricElt/Instances/Hexahedron/Hexahedron8.cpp
./GeometricElt/Instances/Point/Point1.cpp
./GeometricElt/Instances/Quadrangle/Quadrangle4.cpp
./GeometricElt/Instances/Quadrangle/Quadrangle8.cpp
./GeometricElt/Instances/Quadrangle/Quadrangle9.cpp
./GeometricElt/Instances/Segment/Segment2.cpp
./GeometricElt/Instances/Segment/Segment3.cpp
./GeometricElt/Instances/Tetrahedron/Tetrahedron10.cpp
./GeometricElt/Instances/Tetrahedron/Tetrahedron4.cpp
./GeometricElt/Instances/Triangle/Triangle3.cpp
./GeometricElt/Instances/Triangle/Triangle6.cpp
./GeometricElt/Internal/Exceptions/GeometricElt.cpp
./GeometricElt/Internal/Exceptions/GeometricEltFactory.cpp
./Interfaces/EnumInterface.cpp
./Interfaces/Instances/Edge.cpp
./Interfaces/Instances/Face.cpp
./Interfaces/Instances/Vertex.cpp
./Interfaces/Instances/Volume.cpp
./Interfaces/Interface.cpp
./Interfaces/Internal/BuildInterfaceHelper.cpp
./Interfaces/LocalInterface/LocalInterface.cpp
./Interpolator/VertexMatching.cpp
./Mesh/Advanced/DistanceFromMesh.cpp
./Mesh/ComputeColoring.cpp
./Mesh/GeometricMeshRegion.cpp
./Mesh/Internal/Coloring.cpp
./Mesh/Internal/ComputeInterfaceListInMesh.cpp
./Mesh/Internal/Exceptions/GeometricEltList.cpp
./Mesh/Internal/Format/Ensight.cpp
./Mesh/Internal/Format/Exceptions/Ensight.cpp
./Mesh/Internal/Format/Exceptions/Format.cpp
./Mesh/Internal/Format/Exceptions/Medit.cpp
./Mesh/Internal/Format/Format.cpp
./Mesh/Internal/Format/Medit.cpp
./Mesh/Internal/Format/VTK_PolygonalData.cpp
./Mesh/Internal/GeometricEltList.cpp
./Mesh/Internal/GeometricMeshRegionManager.cpp
./Mesh/Internal/PseudoNormalsManager.cpp
./RefGeometricElt/Instances/Hexahedron/Format/Hexahedron20.cpp
./RefGeometricElt/Instances/Hexahedron/Format/Hexahedron27.cpp
./RefGeometricElt/Instances/Hexahedron/Format/Hexahedron8.cpp
./RefGeometricElt/Instances/Hexahedron/Hexahedron20.cpp
./RefGeometricElt/Instances/Hexahedron/Hexahedron27.cpp
./RefGeometricElt/Instances/Hexahedron/Hexahedron8.cpp
./RefGeometricElt/Instances/Hexahedron/ShapeFunction/Hexahedron20.cpp
./RefGeometricElt/Instances/Hexahedron/ShapeFunction/Hexahedron27.cpp
./RefGeometricElt/Instances/Hexahedron/ShapeFunction/Hexahedron8.cpp
./RefGeometricElt/Instances/Hexahedron/Topology/Hexahedron.cpp
./RefGeometricElt/Instances/Point/Format/Point1.cpp
./RefGeometricElt/Instances/Point/Point1.cpp
./RefGeometricElt/Instances/Point/ShapeFunction/Point1.cpp
./RefGeometricElt/Instances/Point/Topology/Point.cpp
./RefGeometricElt/Instances/Quadrangle/Format/Quadrangle4.cpp
./RefGeometricElt/Instances/Quadrangle/Format/Quadrangle8.cpp
./RefGeometricElt/Instances/Quadrangle/Format/Quadrangle9.cpp
./RefGeometricElt/Instances/Quadrangle/Quadrangle4.cpp
./RefGeometricElt/Instances/Quadrangle/Quadrangle8.cpp
./RefGeometricElt/Instances/Quadrangle/Quadrangle9.cpp
./RefGeometricElt/Instances/Quadrangle/ShapeFunction/Quadrangle4.cpp
./RefGeometricElt/Instances/Quadrangle/ShapeFunction/Quadrangle8.cpp
./RefGeometricElt/Instances/Quadrangle/ShapeFunction/Quadrangle9.cpp
./RefGeometricElt/Instances/Quadrangle/Topology/Quadrangle.cpp
./RefGeometricElt/Instances/Segment/Format/Segment2.cpp
./RefGeometricElt/Instances/Segment/Format/Segment3.cpp
./RefGeometricElt/Instances/Segment/Segment2.cpp
./RefGeometricElt/Instances/Segment/Segment3.cpp
./RefGeometricElt/Instances/Segment/ShapeFunction/Segment2.cpp
./RefGeometricElt/Instances/Segment/ShapeFunction/Segment3.cpp
./RefGeometricElt/Instances/Segment/Topology/Segment.cpp
./RefGeometricElt/Instances/Tetrahedron/Format/Tetrahedron10.cpp
./RefGeometricElt/Instances/Tetrahedron/Format/Tetrahedron4.cpp
./RefGeometricElt/Instances/Tetrahedron/ShapeFunction/Tetrahedron10.cpp
./RefGeometricElt/Instances/Tetrahedron/ShapeFunction/Tetrahedron4.cpp
./RefGeometricElt/Instances/Tetrahedron/Tetrahedron10.cpp
./RefGeometricElt/Instances/Tetrahedron/Tetrahedron4.cpp
./RefGeometricElt/Instances/Tetrahedron/Topology/Tetrahedron.cpp
./RefGeometricElt/Instances/Triangle/Format/Triangle3.cpp
./RefGeometricElt/Instances/Triangle/Format/Triangle6.cpp
./RefGeometricElt/Instances/Triangle/ShapeFunction/Triangle3.cpp
./RefGeometricElt/Instances/Triangle/ShapeFunction/Triangle6.cpp
./RefGeometricElt/Instances/Triangle/Topology/Triangle.cpp
./RefGeometricElt/Instances/Triangle/Triangle3.cpp
./RefGeometricElt/Instances/Triangle/Triangle6.cpp
./RefGeometricElt/Internal/Topology/EnumTopology.cpp
./RefGeometricElt/RefGeomElt.cpp
''')
geometry_lib = custom.MoReFEMLibrary(env, 'MoReFEM_geometry', geometry_src)
Return('geometry_lib')
import os
import copy
import imp
Import('env', 'suppl_link_libraries')
custom = imp.load_source('custom_scons_functions', '{0}/custom_scons_functions.py'.format(env["MOREFEM_SCONS"]))
elasticity_src = Split('''
VariationalFormulationElasticity.cpp
ElasticityModel.cpp
''')
elasticity_lib = custom.MoReFEMLibrary(env, 'MoReFEM_elasticity', elasticity_src)
main_elasticity_src = Split('''
main.cpp
''')
elasticity = custom.MoReFEMProgram(env, 'elasticity', main_elasticity_src, [elasticity_lib])
main_ensight_output_src = Split('''
main_ensight_output.cpp
''')
ensight = custom.MoReFEMProgram(env, 'ensight4elasticity', main_ensight_output_src, [suppl_link_libraries])
list_exec = (elasticity, ensight, )
list_lib = (elasticity_lib, )
Return('list_exec', 'list_lib')
import os
import copy
import imp
Import('env', 'suppl_link_libraries')
custom = imp.load_source('custom_scons_functions', '{0}/custom_scons_functions.py'.format(env["MOREFEM_SCONS"]))
heat_src = Split('''
HeatModel.cpp
HeatVariationalFormulation.cpp
''')
heat_lib = custom.MoReFEMLibrary(env, 'MoReFEM_heat', heat_src)
main_heat_src = Split('''
main.cpp
''')
heat = custom.MoReFEMProgram(env, 'heat', main_heat_src, [heat_lib])
main_ensight_output_src = Split('''
main_ensight_output.cpp
''')
ensight = custom.MoReFEMProgram(env, 'ensight4heat', main_ensight_output_src, [suppl_link_libraries])
list_exec = (heat, ensight)
list_lib = (heat_lib, )
Return('list_exec', 'list_lib')
import os
import copy
import imp
Import('env', 'suppl_link_libraries')
custom = imp.load_source('custom_scons_functions', '{0}/custom_scons_functions.py'.format(env["MOREFEM_SCONS"]))
midpoint_hyperelasticity_src = Split('''
Model.cpp
VariationalFormulation.cpp
''')
midpoint_hyperelasticity_lib = custom.MoReFEMLibrary(env, 'MoReFEM_midpoint_hyperelasticity', midpoint_hyperelasticity_src)
main_midpoint_hyperelasticity_src = Split('''