Attention une mise à jour du service Gitlab va être effectuée le mardi 30 novembre entre 17h30 et 18h00. Cette mise à jour va générer une interruption du service dont nous ne maîtrisons pas complètement la durée mais qui ne devrait pas excéder quelques minutes. Cette mise à jour intermédiaire en version 14.0.12 nous permettra de rapidement pouvoir mettre à votre disposition une version plus récente.

Commit f9867f89 authored by GILLES Sebastien's avatar GILLES Sebastien
Browse files

#1524 Roll back slightly: the use of SFINAE was resulting in not very clear...

#1524 Roll back slightly: the use of SFINAE was resulting in not very clear compilation messages; not it's done with a static_assert which gives a much better hint of what doesn't work as intended.

#1525 I have taken VectorIO test as an example of how to avoid to use a Model for a test - and therefore avoiding the fields related to TimeManager. It is to be seen as a proof of concept: there is a bit of work to make this more palatable to write (but in the end we should get more agreeable tests with no longer loads of useless boilerplate parameters in the input data file.

For XCode users: a Model library has been reintroduced as there is now a compiled file inside (no change for CMake build: the Model library was already existing - but was empty so far).
parent 57138d22
......@@ -13,6 +13,7 @@
buildPhases = (
);
dependencies = (
BE8E695D248F778E000FEFBA /* PBXTargetDependency */,
BE451F241DAFAE8600807035 /* PBXTargetDependency */,
BE451EBA1DAF7ED600807035 /* PBXTargetDependency */,
BE451EBC1DAF7ED600807035 /* PBXTargetDependency */,
......@@ -32,6 +33,7 @@
buildPhases = (
);
dependencies = (
BE8E695F248F77A3000FEFBA /* PBXTargetDependency */,
BE5066352119BE2500392E22 /* PBXTargetDependency */,
BE5066372119BE2500392E22 /* PBXTargetDependency */,
BE5B8E8E1F6DD274007816CC /* PBXTargetDependency */,
......@@ -1173,6 +1175,16 @@
BE8E219E207E454800E24E6D /* CheckIdenticalFiles.hxx in Headers */ = {isa = PBXBuildFile; fileRef = BE8E219B207E454800E24E6D /* CheckIdenticalFiles.hxx */; };
BE8E219F207E454800E24E6D /* CheckIdenticalFiles.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BE8E219C207E454800E24E6D /* CheckIdenticalFiles.hpp */; };
BE8E21D0207FAA4E00E24E6D /* CompareEnsightFiles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE8E21CB207FA4D800E24E6D /* CompareEnsightFiles.cpp */; };
BE8E6960248F77AC000FEFBA /* libModel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BEA5FA82248F73B50032F3DB /* libModel.a */; };
BE8E6961248F77B1000FEFBA /* libModel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BEA5FA82248F73B50032F3DB /* libModel.a */; };
BE8E6962248F77B6000FEFBA /* libModel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BEA5FA82248F73B50032F3DB /* libModel.a */; };
BE8E6963248F77BB000FEFBA /* libModel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BEA5FA82248F73B50032F3DB /* libModel.a */; };
BE8E6964248F77BF000FEFBA /* libModel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BEA5FA82248F73B50032F3DB /* libModel.a */; };
BE8E6965248F77C4000FEFBA /* libModel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BEA5FA82248F73B50032F3DB /* libModel.a */; };
BE8E6966248F77C8000FEFBA /* libModel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BEA5FA82248F73B50032F3DB /* libModel.a */; };
BE8E6967248F77CC000FEFBA /* libModel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BEA5FA82248F73B50032F3DB /* libModel.a */; };
BE8E6968248F77DF000FEFBA /* libModel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BEA5FA82248F73B50032F3DB /* libModel.a */; };
BE8E6969248F77E5000FEFBA /* libModel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BEA5FA82248F73B50032F3DB /* libModel.a */; };
BE8F0E671A81260600D81C9F /* ___FILEBASENAME___.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BE8F0E631A81260600D81C9F /* ___FILEBASENAME___.hpp */; };
BE8F0E681A81260600D81C9F /* ___FILEBASENAME___.hxx in Headers */ = {isa = PBXBuildFile; fileRef = BE8F0E641A81260600D81C9F /* ___FILEBASENAME___.hxx */; };
BE90DECF1A24903700CCAFDE /* Enum.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BE5BC2F516C0133300232749 /* Enum.hpp */; };
......@@ -1400,6 +1412,8 @@
BEA4AF2A2462AABD00669BBB /* libTestTools.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BE436A121F694E6F003CE8E3 /* libTestTools.a */; };
BEA4AF2B2462AABD00669BBB /* libUtilities.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BEA8A379177AD4FE009436C9 /* libUtilities.a */; };
BEA4AF2C2462AABD00669BBB /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BEC37E0617DDC0210021BFB7 /* Accelerate.framework */; };
BEA5FA8D248F74100032F3DB /* Model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED97774201F7936004C346D /* Model.cpp */; };
BEA5FA8E248F74160032F3DB /* CreateMeshDataDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEA5FA7B248F73830032F3DB /* CreateMeshDataDirectory.cpp */; };
BEAA181B20ADD42A0070343F /* PetscVec.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BEC1FC7418C470C500A4EB89 /* PetscVec.hpp */; };
BEAB45AD24727EAB00B8C6F2 /* TwoStepsParallelism.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEAB45AC24727EAB00B8C6F2 /* TwoStepsParallelism.cpp */; };
BEABCEDE1AE66F4900817D37 /* libFormulationSolver.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BEABCEBD1AE65A9A00817D37 /* libFormulationSolver.a */; };
......@@ -2290,6 +2304,20 @@
remoteGlobalIDString = BE61994F1B0F643300906290;
remoteInfo = Parameters;
};
BE8E695C248F778E000FEFBA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BE5BC27016C008CF00232749 /* Project object */;
proxyType = 1;
remoteGlobalIDString = BEA5FA81248F73B50032F3DB;
remoteInfo = Model;
};
BE8E695E248F77A3000FEFBA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BE5BC27016C008CF00232749 /* Project object */;
proxyType = 1;
remoteGlobalIDString = BEA5FA81248F73B50032F3DB;
remoteInfo = Model;
};
BE8EE9051D9D5B6900113FF9 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BE5BC27016C008CF00232749 /* Project object */;
......@@ -4052,7 +4080,7 @@
BE8B5FA62077D65F00DC005E /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
BE8B5FA72077D67400DC005E /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
BE8B5FA82077D68E00DC005E /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
BE8B5FBB20793C7800DC005E /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
BE8B5FBB20793C7800DC005E /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CMakeLists.txt; path = ../../Core/CMakeLists.txt; sourceTree = "<group>"; };
BE8B5FC0207BC43F00DC005E /* test_results.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = test_results.cpp; sourceTree = "<group>"; };
BE8B67311CC0E2E100312399 /* Core.doxygen */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = Core.doxygen; sourceTree = "<group>"; };
BE8B67341CC0EA3800312399 /* NumberingSubset.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NumberingSubset.cpp; sourceTree = "<group>"; };
......@@ -4315,6 +4343,9 @@
BEA4AF2D2462ADB400669BBB /* LoadPrepartitionedMesh.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = LoadPrepartitionedMesh.entitlements; path = LoadPrepartitionedMesh/LoadPrepartitionedMesh.entitlements; sourceTree = "<group>"; };
BEA4FC4418214D8F002B2EA1 /* VariationalFormulation.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; lineEnding = 0; path = VariationalFormulation.hpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
BEA4FC4518214D8F002B2EA1 /* VariationalFormulation.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; lineEnding = 0; path = VariationalFormulation.hxx; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
BEA5FA7B248F73830032F3DB /* CreateMeshDataDirectory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CreateMeshDataDirectory.cpp; sourceTree = "<group>"; };
BEA5FA7D248F73830032F3DB /* CreateMeshDataDirectory.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CreateMeshDataDirectory.hpp; sourceTree = "<group>"; };
BEA5FA82248F73B50032F3DB /* libModel.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libModel.a; sourceTree = BUILT_PRODUCTS_DIR; };
BEA8A379177AD4FE009436C9 /* libUtilities.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libUtilities.a; sourceTree = BUILT_PRODUCTS_DIR; };
BEA9618B1EC223900003BCFD /* InputData.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = InputData.hpp; sourceTree = "<group>"; };
BEA9618C1EC223900003BCFD /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
......@@ -4807,6 +4838,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BE8E6967248F77CC000FEFBA /* libModel.a in Frameworks */,
137F2AFC1E38B10B00BD6083 /* libCore.a in Frameworks */,
137F2AFD1E38B10B00BD6083 /* libFiniteElement.a in Frameworks */,
137F2AFE1E38B10B00BD6083 /* libFormulationSolver.a in Frameworks */,
......@@ -4837,6 +4869,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BE8E6965248F77C4000FEFBA /* libModel.a in Frameworks */,
BE4520331DAFB0F900807035 /* libOperatorInstances.a in Frameworks */,
BE451EE91DAF809E00807035 /* libParameterInstances.a in Frameworks */,
13E8D7AB1C0DF6D7009073DA /* libCore.a in Frameworks */,
......@@ -4868,6 +4901,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BE8E6960248F77AC000FEFBA /* libModel.a in Frameworks */,
BE4520281DAFB0A900807035 /* libOperatorInstances.a in Frameworks */,
BE451E9C1DAF7D4900807035 /* libParameterInstances.a in Frameworks */,
BECA4BE11B1757F400DC7265 /* libOperators.a in Frameworks */,
......@@ -4885,6 +4919,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BE8E6961248F77B1000FEFBA /* libModel.a in Frameworks */,
BE3B36121D917ADD00DB81A3 /* libFiniteElement.a in Frameworks */,
BE3B360F1D917ACC00DB81A3 /* libPostProcessing.a in Frameworks */,
BE3B36071D917AA000DB81A3 /* libCore.a in Frameworks */,
......@@ -4965,6 +5000,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BE8E6962248F77B6000FEFBA /* libModel.a in Frameworks */,
BE45202D1DAFB0D500807035 /* libOperatorInstances.a in Frameworks */,
BE451ED11DAF7F7000807035 /* libParameterInstances.a in Frameworks */,
BE6322D11B1852B500F787CC /* libOperators.a in Frameworks */,
......@@ -4989,6 +5025,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BE8E6963248F77BB000FEFBA /* libModel.a in Frameworks */,
BE45202E1DAFB0DA00807035 /* libOperatorInstances.a in Frameworks */,
BE451ED41DAF7F8000807035 /* libParameterInstances.a in Frameworks */,
BE0AD2841CC189BD0086EDF7 /* Accelerate.framework in Frameworks */,
......@@ -5013,6 +5050,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BE8E6969248F77E5000FEFBA /* libModel.a in Frameworks */,
BEA4AF222462AABD00669BBB /* libCore.a in Frameworks */,
BEA4AF232462AABD00669BBB /* libFiniteElement.a in Frameworks */,
BEA4AF242462AABD00669BBB /* libFormulationSolver.a in Frameworks */,
......@@ -5027,6 +5065,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
BEA5FA80248F73B50032F3DB /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
BEA8A376177AD4FE009436C9 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
......@@ -5052,6 +5097,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BE8E6966248F77C8000FEFBA /* libModel.a in Frameworks */,
BEE072A71FE179D3002D6EF1 /* libCore.a in Frameworks */,
BEE072A81FE179D3002D6EF1 /* libFiniteElement.a in Frameworks */,
BEE072A91FE179D3002D6EF1 /* libFormulationSolver.a in Frameworks */,
......@@ -5096,6 +5142,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BE8E6968248F77DF000FEFBA /* libModel.a in Frameworks */,
BE4520431DAFB14A00807035 /* libOperatorInstances.a in Frameworks */,
BEE934A11CFD9E1700158440 /* libPostProcessing.a in Frameworks */,
BEE934991CFD8E0D00158440 /* libCore.a in Frameworks */,
......@@ -5111,6 +5158,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BE8E6964248F77BF000FEFBA /* libModel.a in Frameworks */,
BE45202F1DAFB0DF00807035 /* libOperatorInstances.a in Frameworks */,
BE451EE61DAF808000807035 /* libParameterInstances.a in Frameworks */,
BE6322D31B185E7600F787CC /* libOperators.a in Frameworks */,
......@@ -6862,6 +6910,8 @@
children = (
BE58EB411B904968006899EA /* InitializeHelper.hpp */,
BE58EB421B904968006899EA /* InitializeHelper.hxx */,
BEA5FA7B248F73830032F3DB /* CreateMeshDataDirectory.cpp */,
BEA5FA7D248F73830032F3DB /* CreateMeshDataDirectory.hpp */,
);
path = Internal;
sourceTree = "<group>";
......@@ -7663,9 +7713,9 @@
isa = PBXGroup;
children = (
BE4D0D0E21A2E4F900E0D4E7 /* SourceList.cmake */,
BE4D0D1121A2E4F900E0D4E7 /* TimeManager.cpp */,
BE4D0D0F21A2E4F900E0D4E7 /* TimeManager.hpp */,
BE4D0D1021A2E4F900E0D4E7 /* TimeManager.hxx */,
BE4D0D1121A2E4F900E0D4E7 /* TimeManager.cpp */,
);
path = TimeManager;
sourceTree = "<group>";
......@@ -7897,7 +7947,6 @@
BE5B8EA11F6DD2FA007816CC /* Core */ = {
isa = PBXGroup;
children = (
BE8B5FBB20793C7800DC005E /* CMakeLists.txt */,
BE9453982100BCA500953B84 /* MoReFEMData */,
BE5B8EA21F6DD2FA007816CC /* VariableTimeStep */,
);
......@@ -7975,6 +8024,7 @@
BEE0728C1FE177AB002D6EF1 /* Ensight4Laplacian */,
BEE09D8423CCD5F2000ED60D /* HyperelasticityPrecomputed */,
BEA4AF192462AA6A00669BBB /* LoadPrepartitionedMesh */,
BEA5FA82248F73B50032F3DB /* libModel.a */,
);
name = Products;
sourceTree = "<group>";
......@@ -10570,6 +10620,7 @@
isa = PBXGroup;
children = (
BEF795D322DDBDB20054B192 /* CMakeLists.txt */,
BE8B5FBB20793C7800DC005E /* CMakeLists.txt */,
0209EA702326A612009F7D2F /* MatrixOperations */,
BEF795CF22DDBD7A0054B192 /* VectorIO */,
);
......@@ -11426,6 +11477,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
BEA5FA7E248F73B50032F3DB /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
BEA8A377177AD4FE009436C9 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
......@@ -12175,6 +12233,23 @@
productReference = BEA4AF192462AA6A00669BBB /* LoadPrepartitionedMesh */;
productType = "com.apple.product-type.tool";
};
BEA5FA81248F73B50032F3DB /* Model */ = {
isa = PBXNativeTarget;
buildConfigurationList = BEA5FA8A248F73B50032F3DB /* Build configuration list for PBXNativeTarget "Model" */;
buildPhases = (
BEA5FA7E248F73B50032F3DB /* Headers */,
BEA5FA7F248F73B50032F3DB /* Sources */,
BEA5FA80248F73B50032F3DB /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = Model;
productName = Model;
productReference = BEA5FA82248F73B50032F3DB /* libModel.a */;
productType = "com.apple.product-type.library.static";
};
BEA8A378177AD4FE009436C9 /* Utilities */ = {
isa = PBXNativeTarget;
buildConfigurationList = BEA8A37A177AD4FE009436C9 /* Build configuration list for PBXNativeTarget "Utilities" */;
......@@ -12384,6 +12459,9 @@
BEA4AF182462AA6A00669BBB = {
CreatedOnToolsVersion = 11.4.1;
};
BEA5FA81248F73B50032F3DB = {
CreatedOnToolsVersion = 11.5;
};
BEABCEBC1AE65A9A00817D37 = {
CreatedOnToolsVersion = 6.3;
};
......@@ -12429,6 +12507,7 @@
BE451E2C1DAF78B500807035 /* ParameterInstances */,
BE451F171DAFAE6900807035 /* OperatorInstances */,
BEABCEBC1AE65A9A00817D37 /* FormulationSolver */,
BEA5FA81248F73B50032F3DB /* Model */,
BE451EB51DAF7E9400807035 /* Main libraries */,
BE4369D91F694E6F003CE8E3 /* TestTools */,
BE4529291A41AC3F006A1577 /* PostProcessing */,
......@@ -12944,6 +13023,15 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
BEA5FA7F248F73B50032F3DB /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
BEA5FA8E248F74160032F3DB /* CreateMeshDataDirectory.cpp in Sources */,
BEA5FA8D248F74100032F3DB /* Model.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
BEA8A375177AD4FE009436C9 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
......@@ -13535,6 +13623,16 @@
target = BE61994F1B0F643300906290 /* Parameters */;
targetProxy = BE6199711B0F647400906290 /* PBXContainerItemProxy */;
};
BE8E695D248F778E000FEFBA /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = BEA5FA81248F73B50032F3DB /* Model */;
targetProxy = BE8E695C248F778E000FEFBA /* PBXContainerItemProxy */;
};
BE8E695F248F77A3000FEFBA /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = BEA5FA81248F73B50032F3DB /* Model */;
targetProxy = BE8E695E248F77A3000FEFBA /* PBXContainerItemProxy */;
};
BE8EE9061D9D5B6900113FF9 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = BE3B35F31D9178D500DB81A3 /* Ensight4Elasticity */;
......@@ -14765,6 +14863,63 @@
};
name = Release;
};
BEA5FA8B248F73B50032F3DB /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 8W456CDF33;
EXECUTABLE_PREFIX = lib;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_ENABLE_CPP_EXCEPTIONS = YES;
GCC_ENABLE_CPP_RTTI = YES;
GCC_OPTIMIZATION_LEVEL = 0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
};
name = Debug;
};
BEA5FA8C248F73B50032F3DB /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
DEVELOPMENT_TEAM = 8W456CDF33;
ENABLE_NS_ASSERTIONS = NO;
EXECUTABLE_PREFIX = lib;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_ENABLE_CPP_EXCEPTIONS = YES;
GCC_ENABLE_CPP_RTTI = YES;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
};
name = Release;
};
BEA8A37B177AD4FE009436C9 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
......@@ -15327,6 +15482,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
BEA5FA8A248F73B50032F3DB /* Build configuration list for PBXNativeTarget "Model" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BEA5FA8B248F73B50032F3DB /* Debug */,
BEA5FA8C248F73B50032F3DB /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
BEA8A37A177AD4FE009436C9 /* Build configuration list for PBXNativeTarget "Utilities" */ = {
isa = XCConfigurationList;
buildConfigurations = (
......@@ -29,6 +29,7 @@
# include "Core/InputData/Instances/Result.hpp"
# include "Core/InitTimeKeepLog.hpp"
# include "Core/InputData/Instances/TimeManager/TimeManager.hpp"
# include "Core/InputData/Instances/Parallelism/Parallelism.hpp"
# include "Core/MoReFEMData/Enum.hpp"
# include "Core/MoReFEMData/Internal/Parallelism.hpp"
......@@ -135,8 +136,7 @@ namespace MoReFEM
*
* \return Result directory.
*/
template<bool U = InputDataT::template Find<InputDataNS::Result::OutputDirectory>()>
std::enable_if_t<U, const FilesystemNS::Directory& >
const FilesystemNS::Directory&
GetResultDirectory() const noexcept;
//! Accessor to the object which keeps the data related to parallelism strategy. Might be nullptr if none specified in the input lua file.
......
......@@ -94,6 +94,12 @@ namespace MoReFEM
else if constexpr(ProgramTypeT == program_type::post_processing)
directory_behaviour = FilesystemNS::behaviour::read;
if constexpr(InputDataT::template Find<InputDataNS::TimeManager>())
{
static_assert(InputDataT::template Find<InputDataNS::Result::OutputDirectory>(),
"TimeManager requires the existence of the output directory.");
}
if constexpr(InputDataT::template Find<InputDataNS::Result::OutputDirectory>())
{
......@@ -220,15 +226,13 @@ namespace MoReFEM
Utilities::InputDataNS::DoTrackUnusedFields DoTrackUnusedFieldsT,
class AdditionalCommandLineArgumentsPolicyT
>
template<bool U>
std::enable_if_t
<
U,
const FilesystemNS::Directory&
>
const FilesystemNS::Directory&
MoReFEMData<InputDataT, ProgramTypeT, DoTrackUnusedFieldsT, AdditionalCommandLineArgumentsPolicyT>
::GetResultDirectory() const noexcept
{
static_assert(InputDataT::template Find<InputDataNS::Result::OutputDirectory>(),
"The call to this method assumes a field Result::OutputDirectory was present in InputData tuple.");
assert(!(!result_directory_));
return *result_directory_;
}
......
//! \file
//
//
// CreateMeshDataDirectory.cpp
// MoReFEM
//
// Created by sebastien on 09/06/2020.
//Copyright © 2020 Inria. All rights reserved.
//
#include "Geometry/Mesh/Internal/MeshManager.hpp"
#include "Model/Internal/CreateMeshDataDirectory.hpp"
namespace MoReFEM::Internal::ModelNS
{
std::map<unsigned int, ::MoReFEM::FilesystemNS::Directory::const_unique_ptr>
CreateMeshDataDirectory(const ::MoReFEM::FilesystemNS::Directory& output_directory)
{
std::map<unsigned int, ::MoReFEM::FilesystemNS::Directory::const_unique_ptr> ret;
decltype(auto) mesh_manager = Internal::MeshNS::MeshManager::GetInstance(__FILE__, __LINE__);
decltype(auto) mesh_id_list = mesh_manager.GetUniqueIdList();
for (const auto mesh_id : mesh_id_list)
{
auto new_subdir =
std::make_unique<::MoReFEM::FilesystemNS::Directory>(output_directory,
std::string("Mesh_") + std::to_string(mesh_id),
__FILE__, __LINE__);
ret.insert({ mesh_id, std::move(new_subdir)});
}
return ret;
}
} // namespace MoReFEM::Internal::ModelNS
//! \file
//
//
// CreateMeshDataDirectory.hpp
// MoReFEM
//
// Created by sebastien on 09/06/2020.
//Copyright © 2020 Inria. All rights reserved.
//
#ifndef MOREFEM_x_MODEL_x_INTERNAL_x_CREATE_MESH_DATA_DIRECTORY_HPP_
# define MOREFEM_x_MODEL_x_INTERNAL_x_CREATE_MESH_DATA_DIRECTORY_HPP_
# include <map>
# include "Utilities/Filesystem/Directory.hpp"
namespace MoReFEM::Internal::ModelNS
{
/*!
* \brief Create on disk an output directory for each mesh.
*
* \param[in] output_directory Output directory in which all the model outputs are written (it is the root directory of all outputs).
*
* \return Key is the unique id of the mesh, value the path to it.
*/
std::map<unsigned int, ::MoReFEM::FilesystemNS::Directory::const_unique_ptr>
CreateMeshDataDirectory(const ::MoReFEM::FilesystemNS::Directory& output_directory);
} // namespace MoReFEM::Internal::ModelNS
#endif // MOREFEM_x_MODEL_x_INTERNAL_x_CREATE_MESH_DATA_DIRECTORY_HPP_
......@@ -10,6 +10,10 @@
target_sources(${MOREFEM_MODEL}
PRIVATE
"${CMAKE_CURRENT_LIST_DIR}/CreateMeshDataDirectory.cpp"
PRIVATE
"${CMAKE_CURRENT_LIST_DIR}/CreateMeshDataDirectory.hpp"
"${CMAKE_CURRENT_LIST_DIR}/InitializeHelper.hpp"
"${CMAKE_CURRENT_LIST_DIR}/InitializeHelper.hxx"
)
......
......@@ -17,9 +17,9 @@
namespace MoReFEM
{
// Empty file created to help CMake!
} // namespace MoReFEM
......
......@@ -46,6 +46,7 @@
# include "FormulationSolver/VariationalFormulation.hpp"
# include "Model/Internal/InitializeHelper.hpp"
# include "Model/Internal/CreateMeshDataDirectory.hpp"
namespace MoReFEM
......@@ -287,14 +288,6 @@ namespace MoReFEM
//! Print a banner with text, the time and the iteration number
void PrintNewTimeIterationBanner() const;
/*!
* \brief Create on disk an output directory for each mesh.
*
* \return Key is the unique id of the mesh, value the path to it.
*/
std::map<unsigned int, FilesystemNS::Directory::const_unique_ptr>
CreateMeshDataDirectory() const;
//! Constant accessor to create_domain_list_for_coords_.
create_domain_list_for_coords GetCreateDomainListForCoords() const noexcept;
......@@ -340,7 +333,7 @@ namespace MoReFEM
print_banner do_print_banner_ = print_banner::yes;
};
} // namespace MoReFEM
......
......@@ -45,6 +45,9 @@ namespace MoReFEM
namespace IPL = Utilities::InputDataNS;
using Result = InputDataNS::Result;
static_assert(MoReFEMDataT::input_data_type::template Find<InputDataNS::TimeManager>(),
"A model assumes a field TimeManager is present in InputData tuple.");
if constexpr(std::is_same<TimeManagerPolicyT, TimeManagerNS::Policy::VariableTimeStep>())
time_manager_ = std::make_unique<TimeManagerInstance<TimeManagerNS::Policy::VariableTimeStep>>(morefem_data);
else if constexpr(std::is_same<TimeManagerPolicyT, TimeManagerNS::Policy::ConstantTimeStep>())
......@@ -223,7 +226,7 @@ namespace MoReFEM
}
}
auto mesh_directory_storage = CreateMeshDataDirectory();
auto mesh_directory_storage = Internal::ModelNS::CreateMeshDataDirectory(GetOutputDirectory());
mpi.Barrier();
{
......@@ -554,37 +557,6 @@ namespace MoReFEM
}
template
<
class DerivedT,
class MoReFEMDataT,
DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT,
class TimeManagerPolicyT
>
std::map<unsigned int, FilesystemNS::Directory::const_unique_ptr>
Model<DerivedT, MoReFEMDataT, DoConsiderProcessorWiseLocal2GlobalT, TimeManagerPolicyT>
::CreateMeshDataDirectory() const
{
std::map<unsigned int, FilesystemNS::Directory::const_unique_ptr> ret;
decltype(auto) mesh_manager = Internal::MeshNS::MeshManager::GetInstance(__FILE__, __LINE__);
decltype(auto) mesh_id_list = mesh_manager.GetUniqueIdList();
decltype(auto) output_dir = GetOutputDirectory();
for (const auto mesh_id : mesh_id_list)
{
auto new_subdir = std::make_unique<FilesystemNS::Directory>(output_dir,
"Mesh_" + std::to_string(mesh_id),
__FILE__, __LINE__);
ret.insert({ mesh_id, std::move(new_subdir)});
}
return ret;
}
template
<
class DerivedT,
......
......@@ -27,8 +27,6 @@ namespace MoReFEM
//! \copydoc doxygen_hide_input_data_tuple
using InputDataTuple = std::tuple
<
InputDataNS::TimeManager,
InputDataNS::Result,
InputDataNS::InitialCondition<1>,