From 6bd460ca085cf56c67af66e731a97bbf1d7ba2ad Mon Sep 17 00:00:00 2001 From: Tomas Oberhuber <tomas.oberhuber@fjfi.cvut.cz> Date: Sun, 30 Aug 2015 19:23:33 +0200 Subject: [PATCH] Refactoring the mesh. --- .../heat-equation/tnl-heat-equation-eoc.h | 6 +- examples/heat-equation/tnl-heat-equation.h | 6 +- src/mesh/CMakeLists.txt | 2 +- src/mesh/config/tnlMeshConfigBase.h | 10 +- src/mesh/layers/tnlMeshStorageLayer.h | 167 ++++-------- .../layers/tnlMeshSubentityStorageLayer.h | 59 ++-- src/mesh/layers/tnlMeshSuperentityAccess.h | 8 +- .../layers/tnlMeshSuperentityStorageLayer.h | 50 ++-- src/mesh/tnlMesh.h | 83 ++---- src/mesh/tnlMeshEntity.h | 146 +++++----- src/mesh/tnlMeshEntityInitializer.h | 254 +++++++++--------- src/mesh/tnlMeshEntityOrientation.h | 8 +- src/mesh/tnlMeshEntityReferenceOrientation.h | 4 +- src/mesh/tnlMeshEntitySeed.h | 15 +- ...MeshEntityKey.h => tnlMeshEntitySeedKey.h} | 14 +- src/mesh/tnlMeshInitializer.h | 215 +++++++-------- src/mesh/tnlMeshIntegrityCheckerLayer.h | 2 +- src/mesh/tnlMeshReaderNetgen.h | 4 +- src/mesh/tnlMeshSubentitySeedCreator.h | 8 +- .../tnlMeshSuperentityStorageInitializer.h | 46 ++-- src/mesh/tnlMeshWriterVTKLegacy.h | 13 +- src/mesh/topologies/tnlMeshVertexTag.h | 2 +- src/mesh/traits/tnlMeshConfigTraits.h | 63 ----- src/mesh/traits/tnlMeshEntitiesTag.h | 12 +- src/mesh/traits/tnlMeshEntitiesTraits.h | 50 ++-- src/mesh/traits/tnlMeshSubentitiesTraits.h | 29 +- src/mesh/traits/tnlMeshSuperentitiesTraits.h | 18 +- src/mesh/traits/tnlMeshTraits.h | 31 ++- src/solvers/tnlBuildConfigTags.h | 42 +-- src/solvers/tnlFastBuildConfigTag.h | 26 +- src/solvers/tnlMeshTypeResolver.h | 18 +- src/solvers/tnlMeshTypeResolver_impl.h | 62 ++--- src/solvers/tnlSolver.h | 4 +- src/solvers/tnlSolverConfig.h | 2 +- src/solvers/tnlSolverConfig_impl.h | 68 ++--- src/solvers/tnlSolverInitiator.h | 4 +- src/solvers/tnlSolverInitiator_impl.h | 78 +++--- src/solvers/tnlSolverStarter.h | 2 +- src/solvers/tnlSolverStarter_impl.h | 134 ++++----- src/solvers/tnlSolver_impl.h | 14 +- 40 files changed, 823 insertions(+), 956 deletions(-) rename src/mesh/{tnlMeshEntityKey.h => tnlMeshEntitySeedKey.h} (86%) delete mode 100644 src/mesh/traits/tnlMeshConfigTraits.h diff --git a/examples/heat-equation/tnl-heat-equation-eoc.h b/examples/heat-equation/tnl-heat-equation-eoc.h index 7001a2d71c..6c4beddcb0 100644 --- a/examples/heat-equation/tnl-heat-equation-eoc.h +++ b/examples/heat-equation/tnl-heat-equation-eoc.h @@ -28,10 +28,10 @@ #include <problems/tnlHeatEquationEocRhs.h> #include <problems/tnlHeatEquationEocProblem.h> -//typedef tnlDefaultBuildConfigTag BuildConfig; +//typedef tnlDefaultBuildMeshConfig BuildConfig; typedef tnlFastBuildConfig BuildConfig; -template< typename ConfigTag > +template< typename MeshConfig > class heatEquationEocConfig { public: @@ -47,7 +47,7 @@ template< typename Real, typename Device, typename Index, typename MeshType, - typename ConfigTag, + typename MeshConfig, typename SolverStarter > class heatEquationSetter { diff --git a/examples/heat-equation/tnl-heat-equation.h b/examples/heat-equation/tnl-heat-equation.h index 77c3121bc4..e094ea425c 100644 --- a/examples/heat-equation/tnl-heat-equation.h +++ b/examples/heat-equation/tnl-heat-equation.h @@ -29,10 +29,10 @@ #include <functors/tnlConstantFunction.h> #include <problems/tnlHeatEquationProblem.h> -//typedef tnlDefaultBuildConfigTag BuildConfig; +//typedef tnlDefaultBuildMeshConfig BuildConfig; typedef tnlFastBuildConfig BuildConfig; -template< typename ConfigTag > +template< typename MeshConfig > class heatEquationConfig { public: @@ -54,7 +54,7 @@ template< typename Real, typename Device, typename Index, typename MeshType, - typename ConfigTag, + typename MeshConfig, typename SolverStarter > class heatEquationSetter { diff --git a/src/mesh/CMakeLists.txt b/src/mesh/CMakeLists.txt index 3e3eab15d6..1f083ebd98 100755 --- a/src/mesh/CMakeLists.txt +++ b/src/mesh/CMakeLists.txt @@ -16,7 +16,7 @@ SET( headers tnlGrid.h tnlMesh.h tnlMeshEntity.h tnlMeshEntityId.h - tnlMeshEntityKey.h + tnlMeshEntitySeedKey.h tnlMeshReaderNetgen.h tnlMeshWriterNetgen.h tnlMeshInitializer.h diff --git a/src/mesh/config/tnlMeshConfigBase.h b/src/mesh/config/tnlMeshConfigBase.h index 034cc33c5c..174b2b0c95 100644 --- a/src/mesh/config/tnlMeshConfigBase.h +++ b/src/mesh/config/tnlMeshConfigBase.h @@ -39,7 +39,7 @@ struct tnlMeshConfigBase typedef Id IdType; static const int worldDimensions = WorldDimensions; - static const int cellDimensions = Cell::dimensions; + static const int meshDimensions = Cell::dimensions; static tnlString getType() { @@ -100,7 +100,7 @@ struct tnlMeshConfigBase * To disable it, write your own specialization with given * dimensions and config tag. */ -template< typename ConfigTag, +template< typename MeshConfig, int Dimensions > struct tnlMeshEntityStorage { @@ -112,19 +112,19 @@ struct tnlMeshEntityStorage * provided that they are stored in the mesh. * Write your own specialization if you do not want so. */ -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, int Dimensions > struct tnlMeshSubentityStorage { - enum { enabled = tnlMeshEntityStorage< ConfigTag, Dimensions >::enabled }; + enum { enabled = tnlMeshEntityStorage< MeshConfig, Dimensions >::enabled }; }; /*** * By default, NO SUPERENTITIES of any mesh entity ARE STORED. * Write your own specialization if you need to stored them. */ -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, int Dimensions > struct tnlMeshSuperentityStorage diff --git a/src/mesh/layers/tnlMeshStorageLayer.h b/src/mesh/layers/tnlMeshStorageLayer.h index 2884bfa622..ae70e03169 100644 --- a/src/mesh/layers/tnlMeshStorageLayer.h +++ b/src/mesh/layers/tnlMeshStorageLayer.h @@ -22,79 +22,66 @@ #include <mesh/traits/tnlMeshTraits.h> #include <mesh/traits/tnlMeshEntitiesTraits.h> #include <mesh/traits/tnlStorageTraits.h> -#include <mesh/traits/tnlMeshConfigTraits.h> +#include <mesh/traits/tnlMeshTraits.h> template< typename MeshConfig > class tnlMesh; template< typename DimensionsTag, typename Device, - typename ConfigTag, - typename EntityStorageTag = typename tnlMeshEntitiesTraits< ConfigTag, - DimensionsTag >::EntityStorageTag > + typename MeshConfig, + typename EntityStorageTag = typename tnlMeshEntitiesTraits< MeshConfig, + DimensionsTag::value >::EntityStorageTag > class tnlMeshStorageTag; -template< typename ConfigTag, +template< typename MeshConfig, typename DimensionsTag, - typename EntityStorageTag = typename tnlMeshEntitiesTraits< ConfigTag, - DimensionsTag >::EntityStorageTag > + typename EntityStorageTag = typename tnlMeshEntitiesTraits< MeshConfig, + DimensionsTag::value >::EntityStorageTag > class tnlMeshStorageLayer; -template< typename ConfigTag > +template< typename MeshConfig > class tnlMeshStorageLayers - : public tnlMeshStorageLayer< ConfigTag, - typename tnlMeshTraits< ConfigTag >::DimensionsTag > + : public tnlMeshStorageLayer< MeshConfig, + typename tnlMeshTraits< MeshConfig >::DimensionsTag > { }; -template< typename ConfigTag, +template< typename MeshConfig, typename DimensionsTag > -class tnlMeshStorageLayer< ConfigTag, +class tnlMeshStorageLayer< MeshConfig, DimensionsTag, tnlStorageTraits< true > > - : public tnlMeshStorageLayer< ConfigTag, typename DimensionsTag::Decrement >, - public tnlMeshSuperentityStorageLayers< ConfigTag, - typename tnlMeshConfigTraits< ConfigTag >::template EntityTraits< DimensionsTag >::Tag > + : public tnlMeshStorageLayer< MeshConfig, typename DimensionsTag::Decrement >, + public tnlMeshSuperentityStorageLayers< MeshConfig, + typename tnlMeshTraits< MeshConfig >::template EntityTraits< DimensionsTag::value >::Tag > { public: - typedef tnlMeshStorageLayer< ConfigTag, + typedef tnlMeshStorageLayer< MeshConfig, typename DimensionsTag::Decrement > BaseType; - typedef tnlMeshSuperentityStorageLayers< ConfigTag, - typename tnlMeshConfigTraits< ConfigTag >::template EntityTraits< DimensionsTag >::Tag > SuperentityStorageBaseType; + typedef tnlMeshSuperentityStorageLayers< MeshConfig, + typename tnlMeshTraits< MeshConfig >::template EntityTraits< DimensionsTag::value >::Tag > SuperentityStorageBaseType; + + typedef tnlMeshTraits< MeshConfig > MeshTraits; + typedef typename MeshTraits::template EntityTraits< DimensionsTag::value > EntityTraits; - typedef tnlMeshEntitiesTraits< ConfigTag, DimensionsTag > Tag; - typedef typename Tag::ContainerType ContainerType; - typedef typename Tag::SharedContainerType SharedContainerType; - typedef typename ContainerType::IndexType GlobalIndexType; - typedef typename ContainerType::ElementType EntityType; + typedef typename EntityTraits::StorageArrayType StorageArrayType; + typedef typename EntityTraits::AccessArrayType AccessArrayType; + typedef typename EntityTraits::GlobalIndexType GlobalIndexType; + typedef typename EntityTraits::EntityType EntityType; - using BaseType::setNumberOfEntities; using BaseType::getNumberOfEntities; - using BaseType::setEntity; using BaseType::getEntity; using BaseType::getEntities; tnlMeshStorageLayer() { this->entities.setName( tnlString( "tnlMeshStorageLayer < " ) + tnlString( DimensionsTag::value ) + " >::entities" ); - this->sharedEntities.setName( tnlString( "tnlMeshStorageLayer < " ) + tnlString( DimensionsTag::value ) + " >::sharedEntities" ); - } - - /*~tnlMeshStorageLayer() - { - cout << "Destroying mesh storage layer with " << DimensionsTag::value << " dimensions and " << this->entities.getSize() << " entities." << endl; - }*/ - - bool setNumberOfEntities( DimensionsTag, const GlobalIndexType size ) - { - if( ! this->entities.setSize( size ) ) - return false; - this->sharedEntities.bind( this->entities ); - return true; + this->entitiesAccess.setName( tnlString( "tnlMeshStorageLayer < " ) + tnlString( DimensionsTag::value ) + " >::entitiesAccess" ); } GlobalIndexType getNumberOfEntities( DimensionsTag ) const @@ -102,13 +89,6 @@ class tnlMeshStorageLayer< ConfigTag, return this->entities.getSize(); } - void setEntity( DimensionsTag, - const GlobalIndexType entityIndex, - const EntityType& entity ) const - { - this->entities.setElement( entityIndex, entity ); - } - EntityType& getEntity( DimensionsTag, const GlobalIndexType entityIndex ) { @@ -121,12 +101,12 @@ class tnlMeshStorageLayer< ConfigTag, return this->entities[ entityIndex ]; } - SharedContainerType& getEntities( DimensionsTag ) + AccessArrayType& getEntities( DimensionsTag ) { return this->sharedEntities; } - const SharedContainerType& getEntities( DimensionsTag ) const + const AccessArrayType& getEntities( DimensionsTag ) const { return this->sharedEntities; } @@ -151,7 +131,7 @@ class tnlMeshStorageLayer< ConfigTag, cerr << "Loading of the mesh entities with " << DimensionsTag::value << " dimensions failed." << endl; return false; } - this->sharedEntities.bind( this->entities ); + this->entitiesAccess.bind( this->entities ); return true; } @@ -174,16 +154,16 @@ class tnlMeshStorageLayer< ConfigTag, protected: - ContainerType entities; + StorageArrayType entities; - SharedContainerType sharedEntities; + AccessArrayType entitiesAccess; // TODO: this is only for the mesh initializer - fix it public: using BaseType::entitiesArray; - typename tnlMeshConfigTraits< ConfigTag >::template EntityTraits< DimensionsTag >::ContainerType& entitiesArray( DimensionsTag ) + typename EntityTraits::StorageArrayType& entitiesArray( DimensionsTag ) { return entities; } @@ -191,27 +171,27 @@ class tnlMeshStorageLayer< ConfigTag, using BaseType::superentityIdsArray; template< typename SuperDimensionsTag > - typename tnlMeshConfigTraits< ConfigTag >::GlobalIdArrayType& superentityIdsArray( DimensionsTag ) + typename MeshTraits::GlobalIdArrayType& superentityIdsArray( DimensionsTag ) { return SuperentityStorageBaseType::superentityIdsArray( SuperDimensionsTag() ); } }; -template< typename ConfigTag, +template< typename MeshConfig, typename DimensionsTag > -class tnlMeshStorageLayer< ConfigTag, +class tnlMeshStorageLayer< MeshConfig, DimensionsTag, tnlStorageTraits< false > > - : public tnlMeshStorageLayer< ConfigTag, + : public tnlMeshStorageLayer< MeshConfig, typename DimensionsTag::Decrement > { }; -template< typename ConfigTag > -class tnlMeshStorageLayer< ConfigTag, +template< typename MeshConfig > +class tnlMeshStorageLayer< MeshConfig, tnlDimensionsTag< 0 >, tnlStorageTraits< true > > : - public tnlMeshSuperentityStorageLayers< ConfigTag, + public tnlMeshSuperentityStorageLayers< MeshConfig, tnlMeshVertexTag > { @@ -219,37 +199,22 @@ class tnlMeshStorageLayer< ConfigTag, typedef tnlDimensionsTag< 0 > DimensionsTag; - typedef tnlMeshSuperentityStorageLayers< ConfigTag, + typedef tnlMeshSuperentityStorageLayers< MeshConfig, tnlMeshVertexTag > SuperentityStorageBaseType; - - typedef tnlMeshEntitiesTraits< ConfigTag, - DimensionsTag > Tag; - typedef typename Tag::ContainerType ContainerType; - typedef typename Tag::SharedContainerType SharedContainerType; - typedef typename ContainerType::IndexType GlobalIndexType; - typedef typename ContainerType::ElementType VertexType; - typedef typename VertexType::PointType PointType; - + typedef tnlMeshTraits< MeshConfig > MeshTraits; + typedef typename MeshTraits::template EntityTraits< DimensionsTag::value > EntityTraits; + + typedef typename EntityTraits::StorageArrayType StorageArrayType; + typedef typename EntityTraits::AccessArrayType AccessArrayType; + typedef typename EntityTraits::GlobalIndexType GlobalIndexType; + typedef typename EntityTraits::EntityType VertexType; + typedef typename VertexType::PointType PointType; tnlMeshStorageLayer() { this->vertices.setName( tnlString( "tnlMeshStorageLayer < " ) + tnlString( DimensionsTag::value ) + " >::vertices" ); - this->sharedVertices.setName( tnlString( "tnlMeshStorageLayer < " ) + tnlString( DimensionsTag::value ) + " >::sharedVertices" ); - } - - /*~tnlMeshStorageLayer() - { - cout << "mesh storage layer: dimensions = " << DimensionsTag::value << " entities = " << this->vertices.getSize() << endl; - }*/ - - - bool setNumberOfVertices( const GlobalIndexType size ) - { - if( ! this->vertices.setSize( size ) ) - return false; - this->sharedVertices.bind( this->vertices ); - return true; + this->verticesAccess.setName( tnlString( "tnlMeshStorageLayer < " ) + tnlString( DimensionsTag::value ) + " >::sharedVertices" ); } GlobalIndexType getNumberOfVertices() const @@ -284,43 +249,30 @@ class tnlMeshStorageLayer< ConfigTag, * This is only for the completeness and compatibility * with higher dimensions entities storage layers. */ - bool setNumberOfEntities( DimensionsTag, - const GlobalIndexType size ) - { - return this->vertices.setSize( size ); - } GlobalIndexType getNumberOfEntities( DimensionsTag ) const { return this->vertices.getSize(); } - void setEntity( DimensionsTag, - const GlobalIndexType entityIndex, - const VertexType& entity ) const - { - this->vertices.setElement( entityIndex, entity ); - } - VertexType& getEntity( DimensionsTag, const GlobalIndexType entityIndex ) { return this->vertices[ entityIndex ]; } - const VertexType& getEntity( DimensionsTag, const GlobalIndexType entityIndex ) const { return this->vertices.getElement( entityIndex ); } - SharedContainerType& getEntities( DimensionsTag ) + AccessArrayType& getEntities( DimensionsTag ) { return this->sharedVertices; } - const SharedContainerType& getEntities( DimensionsTag ) const + const AccessArrayType& getEntities( DimensionsTag ) const { return this->sharedVertices; } @@ -342,7 +294,7 @@ class tnlMeshStorageLayer< ConfigTag, cerr << "Loading of the mesh entities with " << DimensionsTag::value << " dimensions failed." << endl; return false; } - this->sharedVertices.bind( this->vertices ); + this->verticesAccess.bind( this->vertices ); return true; } @@ -362,21 +314,21 @@ class tnlMeshStorageLayer< ConfigTag, private: - ContainerType vertices; + StorageArrayType vertices; - SharedContainerType sharedVertices; + AccessArrayType verticesAccess; // TODO: this is only for the mesh initializer - fix it public: - typename tnlMeshConfigTraits< ConfigTag >::template EntityTraits< DimensionsTag >::ContainerType& entitiesArray( DimensionsTag ) + typename EntityTraits::StorageArrayType& entitiesArray( DimensionsTag ) { return vertices; } template< typename SuperDimensionsTag > - typename tnlMeshConfigTraits< ConfigTag >::GlobalIdArrayType& superentityIdsArray( DimensionsTag ) + typename MeshTraits::GlobalIdArrayType& superentityIdsArray( DimensionsTag ) { return SuperentityStorageBaseType::superentityIdsArray( SuperDimensionsTag() ); } @@ -386,14 +338,11 @@ class tnlMeshStorageLayer< ConfigTag, /**** * Forces termination of recursive inheritance (prevents compiler from generating huge error logs) */ -template< typename ConfigTag > -class tnlMeshStorageLayer< ConfigTag, +template< typename MeshConfig > +class tnlMeshStorageLayer< MeshConfig, tnlDimensionsTag< 0 >, tnlStorageTraits< false > > { - protected: - - void setNumberOfEntities(); }; diff --git a/src/mesh/layers/tnlMeshSubentityStorageLayer.h b/src/mesh/layers/tnlMeshSubentityStorageLayer.h index 4328ec9077..a3ff49b10f 100644 --- a/src/mesh/layers/tnlMeshSubentityStorageLayer.h +++ b/src/mesh/layers/tnlMeshSubentityStorageLayer.h @@ -22,49 +22,50 @@ #include <mesh/tnlDimensionsTag.h> #include <mesh/traits/tnlStorageTraits.h> #include <mesh/traits/tnlMeshSubentitiesTraits.h> +#include <mesh/tnlMeshEntityOrientation.h> -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag, typename SubentityStorageTag = - typename tnlMeshSubentitiesTraits< ConfigTag, + typename tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag >::SubentityStorageTag, + DimensionsTag::value >::SubentityStorageTag, typename SubentityOrientationStorage = - tnlStorageTraits< tnlMeshConfigTraits< ConfigTag>:: - template SubentityTraits< EntityTag, DimensionsTag >::orientationEnabled > > + tnlStorageTraits< tnlMeshTraits< MeshConfig>:: + template SubentityTraits< EntityTag, DimensionsTag::value >::orientationEnabled > > class tnlMeshSubentityStorageLayer; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > class tnlMeshSubentityStorageLayers - : public tnlMeshSubentityStorageLayer< ConfigTag, + : public tnlMeshSubentityStorageLayer< MeshConfig, EntityTag, tnlDimensionsTag< EntityTag::dimensions - 1 > > { }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag > -class tnlMeshSubentityStorageLayer< ConfigTag, +class tnlMeshSubentityStorageLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< true > > - : public tnlMeshSubentityStorageLayer< ConfigTag, + : public tnlMeshSubentityStorageLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > { - typedef tnlMeshSubentityStorageLayer< ConfigTag, + typedef tnlMeshSubentityStorageLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > BaseType; - typedef tnlMeshSubentitiesTraits< ConfigTag, + typedef tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag > SubentityTraits; + DimensionsTag::value > SubentityTraits; protected: @@ -74,7 +75,7 @@ class tnlMeshSubentityStorageLayer< ConfigTag, typedef int LocalIndexType; typedef typename SubentityTraits::IdArrayType IdArrayType; typedef typename SubentityTraits::OrientationArrayType OrientationArrayType; - typedef typename tnlMeshConfigTraits< ConfigTag >::IdPermutationArrayAccessorType IdPermutationArrayAccessorType; + typedef typename tnlMeshTraits< MeshConfig >::IdPermutationArrayAccessorType IdPermutationArrayAccessorType; tnlMeshSubentityStorageLayer() { @@ -190,25 +191,25 @@ class tnlMeshSubentityStorageLayer< ConfigTag, }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag > -class tnlMeshSubentityStorageLayer< ConfigTag, +class tnlMeshSubentityStorageLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< false > > - : public tnlMeshSubentityStorageLayer< ConfigTag, + : public tnlMeshSubentityStorageLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > { - typedef tnlMeshSubentityStorageLayer< ConfigTag, + typedef tnlMeshSubentityStorageLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > BaseType; - typedef tnlMeshSubentitiesTraits< ConfigTag, + typedef tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag > SubentityTraits; + DimensionsTag::value > SubentityTraits; protected: @@ -322,24 +323,24 @@ class tnlMeshSubentityStorageLayer< ConfigTag, }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag > -class tnlMeshSubentityStorageLayer< ConfigTag, +class tnlMeshSubentityStorageLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< false >, tnlStorageTraits< false > > - : public tnlMeshSubentityStorageLayer< ConfigTag, + : public tnlMeshSubentityStorageLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > { }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > -class tnlMeshSubentityStorageLayer< ConfigTag, +class tnlMeshSubentityStorageLayer< MeshConfig, EntityTag, tnlDimensionsTag< 0 >, tnlStorageTraits< true >, @@ -347,9 +348,9 @@ class tnlMeshSubentityStorageLayer< ConfigTag, { typedef tnlDimensionsTag< 0 > DimensionsTag; - typedef tnlMeshSubentitiesTraits< ConfigTag, + typedef tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag > SubentityTraits; + DimensionsTag::value > SubentityTraits; protected: @@ -447,9 +448,9 @@ class tnlMeshSubentityStorageLayer< ConfigTag, SharedContainerType sharedVerticesIndices; }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > -class tnlMeshSubentityStorageLayer< ConfigTag, +class tnlMeshSubentityStorageLayer< MeshConfig, EntityTag, tnlDimensionsTag< 0 >, tnlStorageTraits< false > > diff --git a/src/mesh/layers/tnlMeshSuperentityAccess.h b/src/mesh/layers/tnlMeshSuperentityAccess.h index 5b3df86d20..2226752fd8 100644 --- a/src/mesh/layers/tnlMeshSuperentityAccess.h +++ b/src/mesh/layers/tnlMeshSuperentityAccess.h @@ -19,14 +19,14 @@ #define TNLSUPERENTITYACCESS_H #include <mesh/traits/tnlStorageTraits.h> -#include <mesh/traits/tnlMeshConfigTraits.h> +#include <mesh/traits/tnlMeshTraits.h> template< typename MeshConfig, typename MeshEntity, typename Dimensions, typename SuperentityStorage = - tnlStorageTraits< tnlMeshConfigTraits< MeshConfig >::template SuperentityTraits< MeshEntity, Dimensions>::storageEnabled > > + tnlStorageTraits< tnlMeshTraits< MeshConfig >::template SuperentityTraits< MeshEntity, Dimensions>::storageEnabled > > class tnlMeshSuperentityAccessLayer; @@ -35,7 +35,7 @@ template< typename MeshConfig, class tnlMeshSuperentityAccess : public tnlMeshSuperentityAccessLayer< MeshConfig, MeshEntity, - tnlDimensionsTag< tnlMeshConfigTraits< MeshConfig >::meshDimensions > > + tnlDimensionsTag< tnlMeshTraits< MeshConfig >::meshDimensions > > { public: bool operator == ( const tnlMeshSuperentityAccess< MeshConfig, MeshEntity>& a ) const { return true; } // TODO: fix @@ -56,7 +56,7 @@ class tnlMeshSuperentityAccessLayer< MeshConfig, typedef tnlMeshSuperentityAccessLayer< MeshConfig, MeshEntity, typename Dimensions::Decrement > BaseType; public: - typedef typename tnlMeshConfigTraits< MeshConfig >::IdArrayAccessorType IdArrayAccessorType; + typedef typename tnlMeshTraits< MeshConfig >::IdArrayAccessorType IdArrayAccessorType; using BaseType::superentityIds; IdArrayAccessorType superentityIds( Dimensions ) const { return m_superentityIndices; } diff --git a/src/mesh/layers/tnlMeshSuperentityStorageLayer.h b/src/mesh/layers/tnlMeshSuperentityStorageLayer.h index d8a297a277..620fbf1e9e 100644 --- a/src/mesh/layers/tnlMeshSuperentityStorageLayer.h +++ b/src/mesh/layers/tnlMeshSuperentityStorageLayer.h @@ -22,45 +22,45 @@ #include <mesh/tnlDimensionsTag.h> #include <mesh/traits/tnlStorageTraits.h> #include <mesh/traits/tnlMeshTraits.h> -#include <mesh/traits/tnlMeshConfigTraits.h> +#include <mesh/traits/tnlMeshTraits.h> #include <mesh/traits/tnlMeshSuperentitiesTraits.h> -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag, typename SuperentityStorageTag = - typename tnlMeshSuperentitiesTraits< ConfigTag, + typename tnlMeshSuperentitiesTraits< MeshConfig, EntityTag, DimensionsTag >::SuperentityStorageTag > class tnlMeshSuperentityStorageLayer; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > class tnlMeshSuperentityStorageLayers - : public tnlMeshSuperentityStorageLayer< ConfigTag, + : public tnlMeshSuperentityStorageLayer< MeshConfig, EntityTag, - typename tnlMeshTraits< ConfigTag >::DimensionsTag > + typename tnlMeshTraits< MeshConfig >::DimensionsTag > { }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag > -class tnlMeshSuperentityStorageLayer< ConfigTag, +class tnlMeshSuperentityStorageLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< true > > - : public tnlMeshSuperentityStorageLayer< ConfigTag, + : public tnlMeshSuperentityStorageLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > { typedef - tnlMeshSuperentityStorageLayer< ConfigTag, + tnlMeshSuperentityStorageLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > BaseType; typedef - tnlMeshSuperentitiesTraits< ConfigTag, EntityTag, DimensionsTag > SuperentityTag; + tnlMeshSuperentitiesTraits< MeshConfig, EntityTag, DimensionsTag > SuperentityTag; protected: @@ -184,20 +184,20 @@ class tnlMeshSuperentityStorageLayer< ConfigTag, public: using BaseType::superentityIdsArray; - typename tnlMeshConfigTraits< ConfigTag >::GlobalIdArrayType& superentityIdsArray( DimensionsTag ) + typename tnlMeshTraits< MeshConfig >::GlobalIdArrayType& superentityIdsArray( DimensionsTag ) { return this->superentitiesIndices; } }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag > -class tnlMeshSuperentityStorageLayer< ConfigTag, +class tnlMeshSuperentityStorageLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< false > > - : public tnlMeshSuperentityStorageLayer< ConfigTag, + : public tnlMeshSuperentityStorageLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > { @@ -205,20 +205,20 @@ class tnlMeshSuperentityStorageLayer< ConfigTag, }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > -class tnlMeshSuperentityStorageLayer< ConfigTag, +class tnlMeshSuperentityStorageLayer< MeshConfig, EntityTag, tnlDimensionsTag< EntityTag::dimensions >, tnlStorageTraits< false > > { typedef tnlDimensionsTag< EntityTag::dimensions > DimensionsTag; - typedef tnlMeshSuperentitiesTraits< ConfigTag, + typedef tnlMeshSuperentitiesTraits< MeshConfig, EntityTag, DimensionsTag > SuperentityTag; - typedef tnlMeshSuperentityStorageLayer< ConfigTag, + typedef tnlMeshSuperentityStorageLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< false > > ThisType; @@ -263,26 +263,26 @@ class tnlMeshSuperentityStorageLayer< ConfigTag, } template< typename SuperDimensionsTag > - typename tnlMeshConfigTraits< ConfigTag >::GlobalIdArrayType& superentityIdsArray( DimensionsTag ) + typename tnlMeshTraits< MeshConfig >::GlobalIdArrayType& superentityIdsArray( DimensionsTag ) { tnlAssert( false, ); //return this->superentitiesIndices; } }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > -class tnlMeshSuperentityStorageLayer< ConfigTag, +class tnlMeshSuperentityStorageLayer< MeshConfig, EntityTag, tnlDimensionsTag< EntityTag::dimensions >, tnlStorageTraits< true > > { typedef tnlDimensionsTag< EntityTag::dimensions > DimensionsTag; - typedef tnlMeshSuperentitiesTraits< ConfigTag, + typedef tnlMeshSuperentitiesTraits< MeshConfig, EntityTag, DimensionsTag > SuperentityTag; - typedef tnlMeshSuperentityStorageLayer< ConfigTag, + typedef tnlMeshSuperentityStorageLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< true > > ThisType; @@ -327,7 +327,7 @@ class tnlMeshSuperentityStorageLayer< ConfigTag, } template< typename SuperDimensionsTag > - typename tnlMeshConfigTraits< ConfigTag >::GlobalIdArrayType& superentityIdsArray( DimensionsTag ) + typename tnlMeshTraits< MeshConfig >::GlobalIdArrayType& superentityIdsArray( DimensionsTag ) { tnlAssert( false, ); //return this->superentitiesIndices; diff --git a/src/mesh/tnlMesh.h b/src/mesh/tnlMesh.h index b0b291119c..71abf630d3 100644 --- a/src/mesh/tnlMesh.h +++ b/src/mesh/tnlMesh.h @@ -33,12 +33,8 @@ class tnlMesh : public tnlObject, typedef MeshConfig Config; typedef tnlMeshTraits< MeshConfig > MeshTraits; typedef typename tnlMeshTraits< MeshConfig >::PointType PointType; - enum { dimensions = tnlMeshTraits< MeshConfig >::meshDimensions }; - - /*~tnlMesh() - { - cerr << "Destroying mesh " << this->getName() << endl; - }*/ + static const int dimensions = MeshTraits::meshDimensions; + template< typename Dimensions > using EntityTraits = typename MeshTraits::template EntityTraits< Dimensions::value >; static tnlString getType() { @@ -75,104 +71,77 @@ class tnlMesh : public tnlObject, return true; } - template< int Dimensions > + /*template< int Dimensions > struct EntitiesTraits { typedef tnlDimensionsTag< Dimensions > DimensionsTag; typedef tnlMeshEntitiesTraits< MeshConfig, DimensionsTag > MeshEntitiesTraits; - typedef typename MeshEntitiesTraits::Type Type; + typedef typename MeshEntitiesTraits::EntityType Type; typedef typename MeshEntitiesTraits::ContainerType ContainerType; typedef typename MeshEntitiesTraits::SharedContainerType SharedContainerType; typedef typename ContainerType::IndexType GlobalIndexType; typedef typename ContainerType::ElementType EntityType; static const bool available = MeshConfig::entityStorage( Dimensions ); }; - typedef EntitiesTraits< dimensions > CellTraits; - - /*using BaseType::setNumberOfVertices; - using BaseType::getNumberOfVertices; - using BaseType::setVertex; - using BaseType::getVertex;*/ + typedef EntitiesTraits< dimensions > CellTraits;*/ template< int Dimensions > bool entitiesAvalable() const { - return EntitiesTraits< Dimensions >::available; - } - - template< int Dimensions > - bool setNumberOfEntities( typename EntitiesTraits< Dimensions >::GlobalIndexType size ) - { - return entitiesStorage.setNumberOfEntities( tnlDimensionsTag< Dimensions >(), size ); + return MeshTraits::template EntityTraits< Dimensions >::available; } template< int Dimensions > - typename EntitiesTraits< Dimensions >::GlobalIndexType getNumberOfEntities() const + typename MeshTraits::template EntityTraits< Dimensions >::GlobalIndexType getNumberOfEntities() const { return entitiesStorage.getNumberOfEntities( tnlDimensionsTag< Dimensions >() ); } - bool setNumberOfCells( typename EntitiesTraits< dimensions >::GlobalIndexType size ) - { - return entitiesStorage.setNumberOfEntities( tnlDimensionsTag< dimensions >(), size ); - } - - typename EntitiesTraits< dimensions >::GlobalIndexType getNumberOfCells() const + typename MeshTraits::template EntityTraits< dimensions >::GlobalIndexType getNumberOfCells() const { return entitiesStorage.getNumberOfEntities( tnlDimensionsTag< dimensions >() ); } template< int Dimensions > - typename EntitiesTraits< Dimensions >::EntityType& - getEntity( const typename EntitiesTraits< Dimensions >::GlobalIndexType entityIndex ) + typename MeshTraits::template EntityTraits< Dimensions >::EntityType& + getEntity( const typename MeshTraits::template EntityTraits< Dimensions >::GlobalIndexType entityIndex ) { return entitiesStorage.getEntity( tnlDimensionsTag< Dimensions >(), entityIndex ); } template< int Dimensions > - const typename EntitiesTraits< Dimensions >::EntityType& - getEntity( const typename EntitiesTraits< Dimensions >::GlobalIndexType entityIndex ) const + const typename MeshTraits::template EntityTraits< Dimensions >::EntityType& + getEntity( const typename MeshTraits::template EntityTraits< Dimensions >::GlobalIndexType entityIndex ) const { return entitiesStorage.getEntity( tnlDimensionsTag< Dimensions >(), entityIndex ); } template< int Dimensions > - void setEntity( const typename EntitiesTraits< Dimensions >::GlobalIndexType entityIndex, - const typename EntitiesTraits< Dimensions >::EntityType& entity ) - { - entitiesStorage.setEntity( tnlDimensionsTag< Dimensions >(), entityIndex, entity ); - } - - template< int Dimensions > - typename EntitiesTraits< Dimensions >::SharedContainerType& getEntities() + typename MeshTraits::template EntityTraits< Dimensions >::AccessArrayType& + getEntities() { return entitiesStorage.getEntities( tnlDimensionsTag< Dimensions >() ); } template< int Dimensions > - const typename EntitiesTraits< Dimensions >::SharedContainerType& getEntities() const + const typename MeshTraits::template EntityTraits< Dimensions >::AccessArrayType& + getEntities() const { return entitiesStorage.getEntities( tnlDimensionsTag< Dimensions >() ); } - typename EntitiesTraits< dimensions >::EntityType& - getCell( const typename EntitiesTraits< dimensions >::GlobalIndexType entityIndex ) + typename MeshTraits::template EntityTraits< dimensions >::EntityType& + getCell( const typename MeshTraits::template EntityTraits< dimensions >::GlobalIndexType entityIndex ) { return entitiesStorage.getEntity( tnlDimensionsTag< dimensions >(), entityIndex ); } - const typename EntitiesTraits< dimensions >::EntityType& - getCell( const typename EntitiesTraits< dimensions >::GlobalIndexType entityIndex ) const + const typename MeshTraits::template EntityTraits< dimensions >::EntityType& + getCell( const typename MeshTraits::template EntityTraits< dimensions >::GlobalIndexType entityIndex ) const { return entitiesStorage.getEntity( tnlDimensionsTag< dimensions >(), entityIndex ); } - void setCell( const typename EntitiesTraits< dimensions >::GlobalIndexType entityIndex, - const typename EntitiesTraits< dimensions >::EntityType& entity ) - { - entitiesStorage.setEntity( tnlDimensionsTag< dimensions >(), entityIndex, entity ); - } - void print( ostream& str ) const { entitiesStorage.print( str ); @@ -185,18 +154,18 @@ class tnlMesh : public tnlObject, // TODO: this is only for mesh intializer - remove it if possible template< typename DimensionsTag > - typename tnlMeshConfigTraits< MeshConfig >::template EntityTraits< DimensionsTag >::ContainerType& entitiesArray() + typename MeshTraits::template EntityTraits< DimensionsTag::value >::StorageArrayType& entitiesArray() { return entitiesStorage.entitiesArray( DimensionsTag() ); } template< typename DimensionsTag, typename SuperDimensionsTag > - typename tnlMeshConfigTraits< MeshConfig >::GlobalIdArrayType& superentityIdsArray() + typename tnlMeshTraits< MeshConfig >::GlobalIdArrayType& superentityIdsArray() { return entitiesStorage.template superentityIdsArray< SuperDimensionsTag >( DimensionsTag() ); } - typedef typename tnlMeshConfigTraits< MeshConfig>::PointArrayType PointArrayType; + typedef typename tnlMeshTraits< MeshConfig>::PointArrayType PointArrayType; typedef typename tnlMeshTraits< MeshConfig>::CellSeedArrayType CellSeedArrayType; bool init( const PointArrayType& points, @@ -207,11 +176,9 @@ class tnlMesh : public tnlObject, } protected: - - + tnlMeshStorageLayers< MeshConfig > entitiesStorage; - - + tnlMeshConfigValidator< MeshConfig > configValidator; }; diff --git a/src/mesh/tnlMeshEntity.h b/src/mesh/tnlMeshEntity.h index a4997f450e..b6f0948d42 100644 --- a/src/mesh/tnlMeshEntity.h +++ b/src/mesh/tnlMeshEntity.h @@ -29,25 +29,25 @@ #include <mesh/layers/tnlMeshSuperentityAccess.h> #include <mesh/tnlMeshEntitySeed.h> -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > class tnlMeshEntity - : public tnlMeshSubentityStorageLayers< ConfigTag, EntityTag >, - public tnlMeshSuperentityAccess< ConfigTag, EntityTag >, - public tnlMeshEntityId< typename ConfigTag::IdType, - typename ConfigTag::GlobalIndexType > + : public tnlMeshSubentityStorageLayers< MeshConfig, EntityTag >, + public tnlMeshSuperentityAccess< MeshConfig, EntityTag >, + public tnlMeshEntityId< typename MeshConfig::IdType, + typename MeshConfig::GlobalIndexType > { public: /**** * Entity typedefs */ - typedef ConfigTag MeshConfigTag; + typedef MeshConfig MeshMeshConfig; typedef EntityTag Tag; - typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; + typedef tnlMeshEntitySeed< MeshConfig, EntityTag > SeedType; enum { dimensions = Tag::dimensions }; - enum { meshDimensions = tnlMeshTraits< ConfigTag >::meshDimensions }; - typedef typename tnlMeshConfigTraits< ConfigTag>::IdPermutationArrayAccessorType IdPermutationArrayAccessorType; + enum { meshDimensions = tnlMeshTraits< MeshConfig >::meshDimensions }; + typedef typename tnlMeshTraits< MeshConfig>::IdPermutationArrayAccessorType IdPermutationArrayAccessorType; tnlMeshEntity( const SeedType& entitySeed ) { @@ -61,7 +61,7 @@ class tnlMeshEntity static tnlString getType() { return tnlString( "tnlMesh< " ) + - //ConfigTag::getType() + ", " + + //MeshConfig::getType() + ", " + //EntityTag::getType() + ", " + " >"; } @@ -78,16 +78,16 @@ class tnlMeshEntity bool save( tnlFile& file ) const { - if( ! tnlMeshSubentityStorageLayers< ConfigTag, EntityTag >::save( file ) /*|| - ! tnlMeshSuperentityStorageLayers< ConfigTag, EntityTag >::save( file )*/ ) + if( ! tnlMeshSubentityStorageLayers< MeshConfig, EntityTag >::save( file ) /*|| + ! tnlMeshSuperentityStorageLayers< MeshConfig, EntityTag >::save( file )*/ ) return false; return true; } bool load( tnlFile& file ) { - if( ! tnlMeshSubentityStorageLayers< ConfigTag, EntityTag >::load( file ) /*|| - ! tnlMeshSuperentityStorageLayers< ConfigTag, EntityTag >::load( file ) */ ) + if( ! tnlMeshSubentityStorageLayers< MeshConfig, EntityTag >::load( file ) /*|| + ! tnlMeshSuperentityStorageLayers< MeshConfig, EntityTag >::load( file ) */ ) return false; return true; } @@ -95,16 +95,16 @@ class tnlMeshEntity void print( ostream& str ) const { str << "\t Mesh entity dimensions: " << EntityTag::dimensions << endl; - tnlMeshSubentityStorageLayers< ConfigTag, EntityTag >::print( str ); - tnlMeshSuperentityAccess< ConfigTag, EntityTag >::print( str ); + tnlMeshSubentityStorageLayers< MeshConfig, EntityTag >::print( str ); + tnlMeshSuperentityAccess< MeshConfig, EntityTag >::print( str ); } bool operator==( const tnlMeshEntity& entity ) const { - return ( tnlMeshSubentityStorageLayers< ConfigTag, EntityTag >::operator==( entity ) && - tnlMeshSuperentityAccess< ConfigTag, EntityTag >::operator==( entity ) && - tnlMeshEntityId< typename ConfigTag::IdType, - typename ConfigTag::GlobalIndexType >::operator==( entity ) ); + return ( tnlMeshSubentityStorageLayers< MeshConfig, EntityTag >::operator==( entity ) && + tnlMeshSuperentityAccess< MeshConfig, EntityTag >::operator==( entity ) && + tnlMeshEntityId< typename MeshConfig::IdType, + typename MeshConfig::GlobalIndexType >::operator==( entity ) ); } /**** @@ -115,9 +115,9 @@ class tnlMeshEntity { static_assert( Dimensions < meshDimensions, "Asking for subentities with more or the same number of dimensions then the mesh itself." ); typedef tnlDimensionsTag< Dimensions > DimensionsTag; - typedef tnlMeshSubentitiesTraits< ConfigTag, + typedef tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag > SubentityTraits; + DimensionsTag::value > SubentityTraits; typedef typename SubentityTraits::ContainerType ContainerType; typedef typename SubentityTraits::SharedContainerType SharedContainerType; typedef typename ContainerType::ElementType GlobalIndexType; @@ -125,10 +125,10 @@ class tnlMeshEntity // TODO: make this as: // typedef typename Type::IndexType LocalIndexType - /*enum { available = tnlMeshSubentityStorage< ConfigTag, + /*enum { available = tnlMeshSubentityStorage< MeshConfig, EntityTag, Dimensions >::enabled };*/ - static const bool available = ConfigTag::template subentityStorage( EntityTag(), Dimensions ); + static const bool available = MeshConfig::template subentityStorage( EntityTag(), Dimensions ); enum { subentitiesCount = SubentityTraits::count }; }; @@ -154,7 +154,7 @@ class tnlMeshEntity cerr << "localIndex = " << localIndex << " subentitiesCount = " << SubentitiesTraits< Dimensions >::subentitiesCount ); - typedef tnlMeshSubentityStorageLayers< ConfigTag, EntityTag > SubentityBaseType; + typedef tnlMeshSubentityStorageLayers< MeshConfig, EntityTag > SubentityBaseType; SubentityBaseType::setSubentityIndex( tnlDimensionsTag< Dimensions >(), localIndex, globalIndex ); @@ -170,7 +170,7 @@ class tnlMeshEntity cerr << "localIndex = " << localIndex << " subentitiesCount = " << SubentitiesTraits< Dimensions >::subentitiesCount ); - typedef tnlMeshSubentityStorageLayers< ConfigTag, EntityTag > SubentityBaseType; + typedef tnlMeshSubentityStorageLayers< MeshConfig, EntityTag > SubentityBaseType; return SubentityBaseType::getSubentityIndex( tnlDimensionsTag< Dimensions >(), localIndex ); } @@ -180,7 +180,7 @@ class tnlMeshEntity getSubentitiesIndices() { static_assert( SubentitiesTraits< Dimensions >::available, "You try to get subentities which are not configured for storage." ); - typedef tnlMeshSubentityStorageLayers< ConfigTag, EntityTag > SubentityBaseType; + typedef tnlMeshSubentityStorageLayers< MeshConfig, EntityTag > SubentityBaseType; return SubentityBaseType::getSubentitiesIndices( tnlDimensionsTag< Dimensions >() ); } @@ -189,7 +189,7 @@ class tnlMeshEntity getSubentitiesIndices() const { static_assert( SubentitiesTraits< Dimensions >::available, "You try to set subentities which are not configured for storage." ); - typedef tnlMeshSubentityStorageLayers< ConfigTag, EntityTag > SubentityBaseType; + typedef tnlMeshSubentityStorageLayers< MeshConfig, EntityTag > SubentityBaseType; return SubentityBaseType::getSubentitiesIndices( tnlDimensionsTag< Dimensions >() ); } @@ -201,7 +201,7 @@ class tnlMeshEntity { static_assert( Dimensions <= meshDimensions, "Asking for subentities with more dimensions then the mesh itself." ); typedef tnlDimensionsTag< Dimensions > DimensionsTag; - typedef tnlMeshSuperentitiesTraits< ConfigTag, + typedef tnlMeshSuperentitiesTraits< MeshConfig, EntityTag, DimensionsTag > SuperentityTraits; typedef typename SuperentityTraits::ContainerType ContainerType; @@ -210,7 +210,7 @@ class tnlMeshEntity typedef int LocalIndexType; // TODO: make this as: // typedef typename Type::IndexType LocalIndexType - static const bool available = ConfigTag::template superentityStorage( EntityTag(), Dimensions ); + static const bool available = MeshConfig::template superentityStorage( EntityTag(), Dimensions ); }; /*template< int Dimensions > @@ -219,7 +219,7 @@ class tnlMeshEntity static_assert( SuperentitiesTraits< Dimensions >::available, "You try to set number of superentities which are not configured for storage." ); tnlAssert( size >= 0, cerr << "size = " << size << endl; ); - typedef tnlMeshSuperentityStorageLayers< ConfigTag, EntityTag > SuperentityBaseType; + typedef tnlMeshSuperentityStorageLayers< MeshConfig, EntityTag > SuperentityBaseType; return SuperentityBaseType::setNumberOfSuperentities( tnlDimensionsTag< Dimensions >(), size ); }*/ @@ -228,7 +228,7 @@ class tnlMeshEntity typename SuperentitiesTraits< Dimensions >::LocalIndexType getNumberOfSuperentities() const { static_assert( SuperentitiesTraits< Dimensions >::available, "You try to get number of superentities which are not configured for storage." ); - typedef tnlMeshSuperentityAccess< ConfigTag, EntityTag > SuperentityBaseType; + typedef tnlMeshSuperentityAccess< MeshConfig, EntityTag > SuperentityBaseType; return SuperentityBaseType::getNumberOfSuperentities( tnlDimensionsTag< Dimensions >() ); } @@ -240,7 +240,7 @@ class tnlMeshEntity tnlAssert( localIndex < this->getNumberOfSuperentities< Dimensions >(), cerr << " localIndex = " << localIndex << " this->getNumberOfSuperentities< Dimensions >() = " << this->getNumberOfSuperentities< Dimensions >() << endl; ); - typedef tnlMeshSuperentityAccess< ConfigTag, EntityTag > SuperentityBaseType; + typedef tnlMeshSuperentityAccess< MeshConfig, EntityTag > SuperentityBaseType; SuperentityBaseType::setSuperentityIndex( tnlDimensionsTag< Dimensions >(), localIndex, globalIndex ); @@ -254,7 +254,7 @@ class tnlMeshEntity tnlAssert( localIndex < this->getNumberOfSuperentities< Dimensions >(), cerr << " localIndex = " << localIndex << " this->getNumberOfSuperentities< Dimensions >() = " << this->getNumberOfSuperentities< Dimensions >() << endl; ); - typedef tnlMeshSuperentityAccess< ConfigTag, EntityTag > SuperentityBaseType; + typedef tnlMeshSuperentityAccess< MeshConfig, EntityTag > SuperentityBaseType; return SuperentityBaseType::getSuperentityIndex( tnlDimensionsTag< Dimensions >(), localIndex ); } @@ -263,7 +263,7 @@ class tnlMeshEntity typename SuperentitiesTraits< Dimensions >::SharedContainerType& getSuperentitiesIndices() { static_assert( SuperentitiesTraits< Dimensions >::available, "You try to get superentities which are not configured for storage." ); - typedef tnlMeshSuperentityAccess< ConfigTag, EntityTag > SuperentityBaseType; + typedef tnlMeshSuperentityAccess< MeshConfig, EntityTag > SuperentityBaseType; //return SuperentityBaseType::getSuperentitiesIndices( tnlDimensionsTag< Dimensions >() ); } @@ -271,7 +271,7 @@ class tnlMeshEntity const typename SuperentitiesTraits< Dimensions >::SharedContainerType& getSuperentitiesIndices() const { static_assert( SuperentitiesTraits< Dimensions >::available, "You try to get superentities which are not configured for storage." ); - typedef tnlMeshSuperentityAccess< ConfigTag, EntityTag > SuperentityBaseType; + typedef tnlMeshSuperentityAccess< MeshConfig, EntityTag > SuperentityBaseType; return SuperentityBaseType::getSubentitiesIndices( tnlDimensionsTag< Dimensions >() ); } @@ -313,19 +313,19 @@ class tnlMeshEntity template< int dim > IdPermutationArrayAccessorType subentityOrientation( LocalIndexType index ) const { - static const LocalIndexType subentitiesCount = tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, tnlDimensionsTag<dim>>::count; + static const LocalIndexType subentitiesCount = tnlMeshTraits< MeshConfig >::template SubentityTraits< EntityTag, tnlDimensionsTag<dim>>::count; tnlAssert( 0 <= index && index < subentitiesCount, ); return SubentityStorageLayers::subentityOrientation( tnlDimensionsTag< dim >(), index ); } // TODO: This is only for the mesh initializer, fix this - typedef tnlMeshSuperentityAccess< ConfigTag, EntityTag > SuperentityAccessBase; - typedef typename tnlMeshConfigTraits< ConfigTag>::IdArrayAccessorType IdArrayAccessorType; - typedef tnlMeshSubentityStorageLayers< ConfigTag, EntityTag > SubentityStorageLayers; + typedef tnlMeshSuperentityAccess< MeshConfig, EntityTag > SuperentityAccessBase; + typedef typename tnlMeshTraits< MeshConfig>::IdArrayAccessorType IdArrayAccessorType; + typedef tnlMeshSubentityStorageLayers< MeshConfig, EntityTag > SubentityStorageLayers; template< typename DimensionsTag > - typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType& subentityIdsArray() + typename tnlMeshTraits< MeshConfig >::template SubentityTraits< EntityTag, DimensionsTag::value >::IdArrayType& subentityIdsArray() { return SubentityStorageLayers::subentityIdsArray( DimensionsTag() ); } @@ -337,30 +337,30 @@ class tnlMeshEntity } template< typename DimensionsTag > - typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::OrientationArrayType& subentityOrientationsArray() + typename tnlMeshTraits< MeshConfig >::template SubentityTraits< EntityTag, DimensionsTag::value >::OrientationArrayType& subentityOrientationsArray() { return SubentityStorageLayers::subentityOrientationsArray( DimensionsTag() ); } }; -template< typename ConfigTag > -class tnlMeshEntity< ConfigTag, tnlMeshVertexTag > - : public tnlMeshSuperentityAccess< ConfigTag, tnlMeshVertexTag >, - public tnlMeshEntityId< typename ConfigTag::IdType, - typename ConfigTag::GlobalIndexType > +template< typename MeshConfig > +class tnlMeshEntity< MeshConfig, tnlMeshVertexTag > + : public tnlMeshSuperentityAccess< MeshConfig, tnlMeshVertexTag >, + public tnlMeshEntityId< typename MeshConfig::IdType, + typename MeshConfig::GlobalIndexType > { public: /**** * The entity typedefs */ - typedef ConfigTag MeshConfigTag; + typedef MeshConfig MeshMeshConfig; typedef tnlMeshVertexTag Tag; - typedef tnlMeshEntitySeed< ConfigTag, tnlMeshVertexTag > SeedType; - typedef typename tnlMeshTraits< ConfigTag >::PointType PointType; + typedef tnlMeshEntitySeed< MeshConfig, tnlMeshVertexTag > SeedType; + typedef typename tnlMeshTraits< MeshConfig >::PointType PointType; enum { dimensions = Tag::dimensions }; - enum { meshDimensions = tnlMeshTraits< ConfigTag >::meshDimensions }; + enum { meshDimensions = tnlMeshTraits< MeshConfig >::meshDimensions }; /*tnlMeshEntity( const SeedType & entytiSeed ) { @@ -374,7 +374,7 @@ class tnlMeshEntity< ConfigTag, tnlMeshVertexTag > static tnlString getType() { return tnlString( "tnlMesh< " ) + - //ConfigTag::getType() + ", " + + //MeshConfig::getType() + ", " + //EntityTag::getType() + ", " + " >"; } @@ -392,7 +392,7 @@ class tnlMeshEntity< ConfigTag, tnlMeshVertexTag > bool save( tnlFile& file ) const { - if( //! tnlMeshSuperentityStorageLayers< ConfigTag, tnlMeshVertexTag >::save( file ) || + if( //! tnlMeshSuperentityStorageLayers< MeshConfig, tnlMeshVertexTag >::save( file ) || ! point.save( file ) ) return false; return true; @@ -400,7 +400,7 @@ class tnlMeshEntity< ConfigTag, tnlMeshVertexTag > bool load( tnlFile& file ) { - if( //! tnlMeshSuperentityStorageLayers< ConfigTag, tnlMeshVertexTag >::load( file ) || + if( //! tnlMeshSuperentityStorageLayers< MeshConfig, tnlMeshVertexTag >::load( file ) || ! point.load( file ) ) return false; return true; @@ -410,14 +410,14 @@ class tnlMeshEntity< ConfigTag, tnlMeshVertexTag > { str << "\t Mesh entity dimensions: " << tnlMeshVertexTag::dimensions << endl; str << "\t Coordinates = ( " << point << " )"; - tnlMeshSuperentityAccess< ConfigTag, tnlMeshVertexTag >::print( str ); + tnlMeshSuperentityAccess< MeshConfig, tnlMeshVertexTag >::print( str ); } bool operator==( const tnlMeshEntity& entity ) const { - return ( //tnlMeshSuperentityAccess< ConfigTag, tnlMeshVertexTag >::operator==( entity ) && - tnlMeshEntityId< typename ConfigTag::IdType, - typename ConfigTag::GlobalIndexType >::operator==( entity ) && + return ( //tnlMeshSuperentityAccess< MeshConfig, tnlMeshVertexTag >::operator==( entity ) && + tnlMeshEntityId< typename MeshConfig::IdType, + typename MeshConfig::GlobalIndexType >::operator==( entity ) && point == entity.point ); } @@ -429,7 +429,7 @@ class tnlMeshEntity< ConfigTag, tnlMeshVertexTag > struct SuperentitiesTraits { typedef tnlDimensionsTag< Dimensions > DimensionsTag; - typedef tnlMeshSuperentitiesTraits< ConfigTag, + typedef tnlMeshSuperentitiesTraits< MeshConfig, tnlMeshVertexTag, DimensionsTag > SuperentityTraits; typedef typename SuperentityTraits::ContainerType ContainerType; @@ -438,10 +438,10 @@ class tnlMeshEntity< ConfigTag, tnlMeshVertexTag > typedef int LocalIndexType; // TODO: make this as: // typedef typename Type::IndexType LocalIndexType - /*enum { available = tnlMeshSuperentityStorage< ConfigTag, + /*enum { available = tnlMeshSuperentityStorage< MeshConfig, tnlMeshVertexTag, Dimensions >::enabled };*/ - static const bool available = ConfigTag::template superentityStorage< tnlMeshVertexTag >( Dimensions ); + static const bool available = MeshConfig::template superentityStorage< tnlMeshVertexTag >( Dimensions ); }; /*template< int Dimensions > @@ -449,7 +449,7 @@ class tnlMeshEntity< ConfigTag, tnlMeshVertexTag > { tnlAssert( size >= 0, cerr << "size = " << size << endl; ); - typedef tnlMeshSuperentityStorageLayers< ConfigTag, tnlMeshVertexTag > SuperentityBaseType; + typedef tnlMeshSuperentityStorageLayers< MeshConfig, tnlMeshVertexTag > SuperentityBaseType; return SuperentityBaseType::setNumberOfSuperentities( tnlDimensionsTag< Dimensions >(), size ); }*/ @@ -457,21 +457,21 @@ class tnlMeshEntity< ConfigTag, tnlMeshVertexTag > template< int Dimensions > typename SuperentitiesTraits< Dimensions >::LocalIndexType getNumberOfSuperentities() const { - typedef tnlMeshSuperentityAccess< ConfigTag, tnlMeshVertexTag > SuperentityBaseType; + typedef tnlMeshSuperentityAccess< MeshConfig, tnlMeshVertexTag > SuperentityBaseType; //return SuperentityBaseType::getNumberOfSuperentities( tnlDimensionsTag< Dimensions >() ); } template< int Dimensions > typename SuperentitiesTraits< Dimensions >::SharedContainerType& getSuperentitiesIndices() { - typedef tnlMeshSuperentityAccess< ConfigTag, tnlMeshVertexTag > SuperentityBaseType; + typedef tnlMeshSuperentityAccess< MeshConfig, tnlMeshVertexTag > SuperentityBaseType; //return SuperentityBaseType::getSuperentitiesIndices( tnlDimensionsTag< Dimensions >() ); } template< int Dimensions > const typename SuperentitiesTraits< Dimensions >::SharedContainerType& getSuperentitiesIndeces() const { - typedef tnlMeshSuperentityAccess< ConfigTag, tnlMeshVertexTag > SuperentityBaseType; + typedef tnlMeshSuperentityAccess< MeshConfig, tnlMeshVertexTag > SuperentityBaseType; //return SuperentityBaseType::getSubentitiesIndices( tnlDimensionsTag< Dimensions >() ); } @@ -482,7 +482,7 @@ class tnlMeshEntity< ConfigTag, tnlMeshVertexTag > tnlAssert( localIndex < this->getNumberOfSuperentities< Dimensions >(), cerr << " localIndex = " << localIndex << " this->getNumberOfSuperentities< Dimensions >() = " << this->getNumberOfSuperentities< Dimensions >() << endl; ); - typedef tnlMeshSuperentityAccess< ConfigTag, tnlMeshVertexTag > SuperentityBaseType; + typedef tnlMeshSuperentityAccess< MeshConfig, tnlMeshVertexTag > SuperentityBaseType; SuperentityBaseType::setSuperentityIndex( tnlDimensionsTag< Dimensions >(), localIndex, globalIndex ); @@ -495,7 +495,7 @@ class tnlMeshEntity< ConfigTag, tnlMeshVertexTag > tnlAssert( localIndex < this->getNumberOfSuperentities< Dimensions >(), cerr << " localIndex = " << localIndex << " this->getNumberOfSuperentities< Dimensions >() = " << this->getNumberOfSuperentities< Dimensions >() << endl; ); - typedef tnlMeshSuperentityAccess< ConfigTag, tnlMeshVertexTag > SuperentityBaseType; + typedef tnlMeshSuperentityAccess< MeshConfig, tnlMeshVertexTag > SuperentityBaseType; /*return SuperentityBaseType::getSuperentityIndex( tnlDimensionsTag< Dimensions >(), localIndex );*/ } @@ -514,8 +514,8 @@ class tnlMeshEntity< ConfigTag, tnlMeshVertexTag > // TODO: This is only for the mesh initializer, fix this public: - typedef typename tnlMeshConfigTraits< ConfigTag>::IdArrayAccessorType IdArrayAccessorType; - typedef tnlMeshSuperentityAccess< ConfigTag, tnlMeshVertexTag > SuperentityAccessBase; + typedef typename tnlMeshTraits< MeshConfig>::IdArrayAccessorType IdArrayAccessorType; + typedef tnlMeshSuperentityAccess< MeshConfig, tnlMeshVertexTag > SuperentityAccessBase; template<typename DimensionsTag > IdArrayAccessorType& superentityIdsArray() @@ -525,9 +525,9 @@ class tnlMeshEntity< ConfigTag, tnlMeshVertexTag > }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > -ostream& operator <<( ostream& str, const tnlMeshEntity< ConfigTag, EntityTag >& entity ) +ostream& operator <<( ostream& str, const tnlMeshEntity< MeshConfig, EntityTag >& entity ) { entity.print( str ); return str; @@ -537,9 +537,9 @@ ostream& operator <<( ostream& str, const tnlMeshEntity< ConfigTag, EntityTag >& * This tells the compiler that theMeshEntity is a type with a dynamic memory allocation. * It is necessary for the loading and the saving of the mesh entities arrays. */ -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > -struct tnlDynamicTypeTag< tnlMeshEntity< ConfigTag, EntityTag > > +struct tnlDynamicTypeTag< tnlMeshEntity< MeshConfig, EntityTag > > { enum { value = true }; }; diff --git a/src/mesh/tnlMeshEntityInitializer.h b/src/mesh/tnlMeshEntityInitializer.h index 7a689c43ba..340544f0ba 100644 --- a/src/mesh/tnlMeshEntityInitializer.h +++ b/src/mesh/tnlMeshEntityInitializer.h @@ -22,61 +22,61 @@ #include <mesh/tnlMeshSuperentityStorageInitializer.h> #include <mesh/tnlMeshSubentitySeedCreator.h> -template< typename ConfigTag > +template< typename MeshConfig > class tnlMeshInitializer; -template<typename ConfigTag, +template<typename MeshConfig, typename EntityTag, typename DimensionsTag, typename SubentityStorageTag = - typename tnlMeshSubentitiesTraits< ConfigTag, + typename tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag >::SubentityStorageTag, + DimensionsTag::value >::SubentityStorageTag, typename SubentityOrientationStorage = - tnlStorageTraits< tnlMeshConfigTraits< ConfigTag >:: - template SubentityTraits< EntityTag, DimensionsTag >::orientationEnabled >, + tnlStorageTraits< tnlMeshTraits< MeshConfig >:: + template SubentityTraits< EntityTag, DimensionsTag::value >::orientationEnabled >, typename SuperentityStorageTag = - typename tnlMeshSuperentitiesTraits< ConfigTag, - typename tnlMeshSubentitiesTraits< ConfigTag, + typename tnlMeshSuperentitiesTraits< MeshConfig, + typename tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag >::SubentityTag, + DimensionsTag::value >::SubentityTag, tnlDimensionsTag< EntityTag::dimensions > >::SuperentityStorageTag > class tnlMeshEntityInitializerLayer; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > class tnlMeshEntityInitializer - : public tnlMeshEntityInitializerLayer< ConfigTag, + : public tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, tnlDimensionsTag< EntityTag::dimensions - 1 > > { typedef tnlDimensionsTag< EntityTag::dimensions > DimensionsTag; private: - typedef tnlMeshEntityInitializerLayer< ConfigTag, + typedef tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, tnlDimensionsTag< EntityTag::dimensions - 1 > > BaseType; typedef - tnlMeshEntityInitializerLayer< ConfigTag, + tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, tnlDimensionsTag< EntityTag::dimensions - 1 > > SubentityBaseType; typedef - tnlMeshSuperentityStorageInitializerLayer< ConfigTag, + tnlMeshSuperentityStorageInitializerLayer< MeshConfig, EntityTag, typename - tnlMeshTraits< ConfigTag >::DimensionsTag > SuperentityBaseType; + tnlMeshTraits< MeshConfig >::DimensionsTag > SuperentityBaseType; - typedef typename tnlMeshEntitiesTraits< ConfigTag, DimensionsTag >::Type EntityType; - typedef typename tnlMeshEntitiesTraits< ConfigTag, - DimensionsTag >::ContainerType::IndexType GlobalIndexType; + typedef typename tnlMeshEntitiesTraits< MeshConfig, DimensionsTag::value >::EntityType EntityType; + typedef typename tnlMeshEntitiesTraits< MeshConfig, + DimensionsTag::value >::GlobalIndexType GlobalIndexType; - typedef tnlMeshSubentitiesTraits< ConfigTag, EntityTag, tnlDimensionsTag< 0 > > SubvertexTag; + typedef tnlMeshSubentitiesTraits< MeshConfig, EntityTag, 0 > SubvertexTag; typedef typename SubvertexTag::ContainerType::ElementType VertexGlobalIndexType; typedef typename SubvertexTag::ContainerType::IndexType VertexLocalIndexType; - typedef tnlMeshInitializer< ConfigTag > InitializerType; - typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; + typedef tnlMeshInitializer< MeshConfig > InitializerType; + typedef tnlMeshEntitySeed< MeshConfig, EntityTag > SeedType; template< typename > class SubentitiesCreator; @@ -95,7 +95,7 @@ class tnlMeshEntityInitializer } template< typename SuperentityDimensionTag > - typename tnlMeshSuperentitiesTraits< ConfigTag, EntityTag, SuperentityDimensionTag >::SharedContainerType& getSuperentityContainer( SuperentityDimensionTag ) + typename tnlMeshSuperentitiesTraits< MeshConfig, EntityTag, SuperentityDimensionTag >::SharedContainerType& getSuperentityContainer( SuperentityDimensionTag ) { return this->entity->template getSuperentitiesIndices< SuperentityDimensionTag::value >(); } @@ -138,36 +138,36 @@ class tnlMeshEntityInitializer< MeshConfig, tnlMeshVertexTag > * SUBENTITY STORAGE SUBENTITY ORIENTATION SUPERENTITY STORAGE * TRUE FALSE TRUE */ -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag > -class tnlMeshEntityInitializerLayer< ConfigTag, +class tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< false >, tnlStorageTraits< true > > - : public tnlMeshEntityInitializerLayer< ConfigTag, + : public tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > { - typedef tnlMeshEntityInitializerLayer< ConfigTag, + typedef tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > BaseType; - typedef tnlMeshSubentitiesTraits< ConfigTag, EntityTag, DimensionsTag > SubentitiesTraits; + typedef tnlMeshSubentitiesTraits< MeshConfig, EntityTag, DimensionsTag::value > SubentitiesTraits; typedef typename SubentitiesTraits::SubentityContainerType SubentityContainerType; typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; typedef typename SharedContainerType::ElementType GlobalIndexType; - typedef tnlMeshInitializer< ConfigTag > InitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; + typedef tnlMeshInitializer< MeshConfig > InitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > EntityInitializerType; typedef tnlDimensionsTag< EntityTag::dimensions > EntityDimensionsTag; - typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; - typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; - typedef tnlMeshSubentitySeedsCreator< ConfigTag, EntityTag, DimensionsTag > SubentitySeedsCreatorType; - typedef typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; - typedef typename tnlMeshTraits< ConfigTag >::LocalIndexType LocalIndexType; + typedef tnlMeshEntity< MeshConfig, EntityTag > EntityType; + typedef tnlMeshEntitySeed< MeshConfig, EntityTag > SeedType; + typedef tnlMeshSubentitySeedsCreator< MeshConfig, EntityTag, DimensionsTag > SubentitySeedsCreatorType; + typedef typename tnlMeshTraits< MeshConfig >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; protected: static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, @@ -195,36 +195,36 @@ class tnlMeshEntityInitializerLayer< ConfigTag, * SUBENTITY STORAGE SUBENTITY ORIENTATION SUPERENTITY STORAGE * TRUE TRUE TRUE */ -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag > -class tnlMeshEntityInitializerLayer< ConfigTag, +class tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< true >, tnlStorageTraits< true > > - : public tnlMeshEntityInitializerLayer< ConfigTag, + : public tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > { - typedef tnlMeshEntityInitializerLayer< ConfigTag, + typedef tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > BaseType; - typedef tnlMeshSubentitiesTraits< ConfigTag, EntityTag, DimensionsTag > SubentitiesTraits; + typedef tnlMeshSubentitiesTraits< MeshConfig, EntityTag, DimensionsTag::value > SubentitiesTraits; typedef typename SubentitiesTraits::SubentityContainerType SubentityContainerType; typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; typedef typename SharedContainerType::ElementType GlobalIndexType; - typedef tnlMeshInitializer< ConfigTag > InitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; + typedef tnlMeshInitializer< MeshConfig > InitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > EntityInitializerType; typedef tnlDimensionsTag< EntityTag::dimensions > EntityDimensionsTag; - typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; - typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; - typedef tnlMeshSubentitySeedsCreator< ConfigTag, EntityTag, DimensionsTag > SubentitySeedsCreatorType; - typedef typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; - typedef typename tnlMeshTraits< ConfigTag >::LocalIndexType LocalIndexType; + typedef tnlMeshEntity< MeshConfig, EntityTag > EntityType; + typedef tnlMeshEntitySeed< MeshConfig, EntityTag > SeedType; + typedef tnlMeshSubentitySeedsCreator< MeshConfig, EntityTag, DimensionsTag > SubentitySeedsCreatorType; + typedef typename tnlMeshTraits< MeshConfig >::template SubentityTraits< EntityTag, DimensionsTag::value >::IdArrayType IdArrayType; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; typedef typename SubentitiesTraits::OrientationArrayType OrientationArrayType; protected: @@ -258,36 +258,36 @@ class tnlMeshEntityInitializerLayer< ConfigTag, * SUBENTITY STORAGE SUBENTITY ORIENTATION SUPERENTITY STORAGE * TRUE TRUE FALSE */ -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag > -class tnlMeshEntityInitializerLayer< ConfigTag, +class tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< true >, tnlStorageTraits< false > > - : public tnlMeshEntityInitializerLayer< ConfigTag, + : public tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > { - typedef tnlMeshEntityInitializerLayer< ConfigTag, + typedef tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > BaseType; - typedef tnlMeshSubentitiesTraits< ConfigTag, EntityTag, DimensionsTag > SubentitiesTraits; + typedef tnlMeshSubentitiesTraits< MeshConfig, EntityTag, DimensionsTag::value > SubentitiesTraits; typedef typename SubentitiesTraits::SubentityContainerType SubentityContainerType; typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; typedef typename SharedContainerType::ElementType GlobalIndexType; - typedef tnlMeshInitializer< ConfigTag > InitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; + typedef tnlMeshInitializer< MeshConfig > InitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > EntityInitializerType; typedef tnlDimensionsTag< EntityTag::dimensions > EntityDimensionsTag; - typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; - typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; - typedef tnlMeshSubentitySeedsCreator< ConfigTag, EntityTag, DimensionsTag > SubentitySeedsCreatorType; - typedef typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; - typedef typename tnlMeshTraits< ConfigTag >::LocalIndexType LocalIndexType; + typedef tnlMeshEntity< MeshConfig, EntityTag > EntityType; + typedef tnlMeshEntitySeed< MeshConfig, EntityTag > SeedType; + typedef tnlMeshSubentitySeedsCreator< MeshConfig, EntityTag, DimensionsTag > SubentitySeedsCreatorType; + typedef typename tnlMeshTraits< MeshConfig >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; typedef typename SubentitiesTraits::OrientationArrayType OrientationArrayType; protected: @@ -310,38 +310,38 @@ class tnlMeshEntityInitializerLayer< ConfigTag, }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag > -class tnlMeshEntityInitializerLayer< ConfigTag, +class tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< false >, tnlStorageTraits< false > > - : public tnlMeshEntityInitializerLayer< ConfigTag, + : public tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > { - typedef tnlMeshEntityInitializerLayer< ConfigTag, + typedef tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > BaseType; - typedef typename tnlMeshSubentitiesTraits< ConfigTag, + typedef typename tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag >::SubentityContainerType SubentityContainerType; - typedef typename tnlMeshSubentitiesTraits< ConfigTag, + DimensionsTag::value >::SubentityContainerType SubentityContainerType; + typedef typename tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag >::SharedContainerType SharedContainerType; + DimensionsTag::value >::SharedContainerType SharedContainerType; typedef typename SharedContainerType::ElementType GlobalIndexType; - typedef tnlMeshInitializer< ConfigTag > InitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; - typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; - typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; - typedef tnlMeshSubentitySeedsCreator< ConfigTag, EntityTag, DimensionsTag > SubentitySeedsCreatorType; - typedef typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; - typedef typename tnlMeshTraits< ConfigTag >::LocalIndexType LocalIndexType; + typedef tnlMeshInitializer< MeshConfig > InitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > EntityInitializerType; + typedef tnlMeshEntity< MeshConfig, EntityTag > EntityType; + typedef tnlMeshEntitySeed< MeshConfig, EntityTag > SeedType; + typedef tnlMeshSubentitySeedsCreator< MeshConfig, EntityTag, DimensionsTag > SubentitySeedsCreatorType; + typedef typename tnlMeshTraits< MeshConfig >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; protected: static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, @@ -358,39 +358,39 @@ class tnlMeshEntityInitializerLayer< ConfigTag, } }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag > -class tnlMeshEntityInitializerLayer< ConfigTag, +class tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< false >, tnlStorageTraits< false >, tnlStorageTraits< true > > - : public tnlMeshEntityInitializerLayer< ConfigTag, + : public tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > { - typedef tnlMeshEntityInitializerLayer< ConfigTag, + typedef tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > BaseType; - typedef typename tnlMeshSubentitiesTraits< ConfigTag, + typedef typename tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag >::SubentityContainerType SubentityContainerType; - typedef typename tnlMeshSubentitiesTraits< ConfigTag, + DimensionsTag::value >::SubentityContainerType SubentityContainerType; + typedef typename tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag >::SharedContainerType SharedContainerType; + DimensionsTag::value >::SharedContainerType SharedContainerType; typedef typename SharedContainerType::DataType GlobalIndexType; - typedef tnlMeshInitializer< ConfigTag > InitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; + typedef tnlMeshInitializer< MeshConfig > InitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > EntityInitializerType; typedef tnlDimensionsTag< EntityTag::dimensions > EntityDimensionsTag; - typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; - typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; - typedef tnlMeshSubentitySeedsCreator< ConfigTag, EntityTag, DimensionsTag > SubentitySeedsCreatorType; - typedef typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; - typedef typename tnlMeshTraits< ConfigTag >::LocalIndexType LocalIndexType; + typedef tnlMeshEntity< MeshConfig, EntityTag > EntityType; + typedef tnlMeshEntitySeed< MeshConfig, EntityTag > SeedType; + typedef tnlMeshSubentitySeedsCreator< MeshConfig, EntityTag, DimensionsTag > SubentitySeedsCreatorType; + typedef typename tnlMeshTraits< MeshConfig >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; protected: @@ -412,23 +412,23 @@ class tnlMeshEntityInitializerLayer< ConfigTag, } }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag > -class tnlMeshEntityInitializerLayer< ConfigTag, +class tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< false >, tnlStorageTraits< false >, tnlStorageTraits< false > > - : public tnlMeshEntityInitializerLayer< ConfigTag, + : public tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > {}; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > -class tnlMeshEntityInitializerLayer< ConfigTag, +class tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, tnlDimensionsTag< 0 >, tnlStorageTraits< true >, @@ -436,21 +436,21 @@ class tnlMeshEntityInitializerLayer< ConfigTag, tnlStorageTraits< true > > { typedef tnlDimensionsTag< 0 > DimensionsTag; - typedef tnlMeshSubentitiesTraits< ConfigTag, + typedef tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag > SubentitiesTraits; + DimensionsTag::value > SubentitiesTraits; typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; typedef typename SharedContainerType::ElementType GlobalIndexType; - typedef tnlMeshInitializer< ConfigTag > InitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; + typedef tnlMeshInitializer< MeshConfig > InitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > EntityInitializerType; typedef tnlDimensionsTag< EntityTag::dimensions > EntityDimensionsTag; - typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; - typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; - typedef tnlMeshSubentitySeedsCreator< ConfigTag, EntityTag, DimensionsTag > SubentitySeedsCreatorType; - typedef typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; - typedef typename tnlMeshTraits< ConfigTag >::LocalIndexType LocalIndexType; + typedef tnlMeshEntity< MeshConfig, EntityTag > EntityType; + typedef tnlMeshEntitySeed< MeshConfig, EntityTag > SeedType; + typedef tnlMeshSubentitySeedsCreator< MeshConfig, EntityTag, DimensionsTag > SubentitySeedsCreatorType; + typedef typename tnlMeshTraits< MeshConfig >::template SubentityTraits< EntityTag, DimensionsTag::value >::IdArrayType IdArrayType; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; protected: @@ -460,29 +460,29 @@ class tnlMeshEntityInitializerLayer< ConfigTag, }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > -class tnlMeshEntityInitializerLayer< ConfigTag, +class tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, tnlDimensionsTag< 0 >, tnlStorageTraits< true >, tnlStorageTraits< false >, tnlStorageTraits< false > > { - typedef tnlMeshInitializer< ConfigTag > InitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, + typedef tnlMeshInitializer< MeshConfig > InitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > EntityInitializerType; typedef tnlDimensionsTag< 0 > DimensionsTag; - typedef tnlMeshSubentitiesTraits< ConfigTag, + typedef tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag > SubentitiesTraits; + DimensionsTag::value > SubentitiesTraits; typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; typedef typename SharedContainerType::ElementType GlobalIndexType; - typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; - typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; - typedef tnlMeshSubentitySeedsCreator< ConfigTag, EntityTag, DimensionsTag > SubentitySeedsCreatorType; - typedef typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; - typedef typename tnlMeshTraits< ConfigTag >::LocalIndexType LocalIndexType; + typedef tnlMeshEntity< MeshConfig, EntityTag > EntityType; + typedef tnlMeshEntitySeed< MeshConfig, EntityTag > SeedType; + typedef tnlMeshSubentitySeedsCreator< MeshConfig, EntityTag, DimensionsTag > SubentitySeedsCreatorType; + typedef typename tnlMeshTraits< MeshConfig >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; protected: @@ -492,45 +492,45 @@ class tnlMeshEntityInitializerLayer< ConfigTag, }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > -class tnlMeshEntityInitializerLayer< ConfigTag, +class tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, tnlDimensionsTag< 0 >, tnlStorageTraits< false >, tnlStorageTraits< true > > // Forces termination of recursive inheritance (prevents compiler from generating huge error logs) { - typedef tnlMeshInitializer< ConfigTag > InitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; + typedef tnlMeshInitializer< MeshConfig > InitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > EntityInitializerType; typedef tnlDimensionsTag< 0 > DimensionsTag; - typedef tnlMeshSubentitiesTraits< ConfigTag, + typedef tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag > SubentitiesTraits; + DimensionsTag::value > SubentitiesTraits; typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; typedef typename SharedContainerType::ElementType GlobalIndexType; - typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; + typedef tnlMeshEntity< MeshConfig, EntityTag > EntityType; protected: static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, EntityInitializerType&, InitializerType& ) {} }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > -class tnlMeshEntityInitializerLayer< ConfigTag, +class tnlMeshEntityInitializerLayer< MeshConfig, EntityTag, tnlDimensionsTag< 0 >, tnlStorageTraits< false >, tnlStorageTraits< false > > // Forces termination of recursive inheritance (prevents compiler from generating huge error logs) { - typedef tnlMeshInitializer< ConfigTag > InitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; + typedef tnlMeshInitializer< MeshConfig > InitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > EntityInitializerType; typedef tnlDimensionsTag< 0 > DimensionsTag; - typedef tnlMeshSubentitiesTraits< ConfigTag, + typedef tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - DimensionsTag > SubentitiesTraits; + DimensionsTag::value > SubentitiesTraits; typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; typedef typename SharedContainerType::ElementType GlobalIndexType; - typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; + typedef tnlMeshEntity< MeshConfig, EntityTag > EntityType; protected: void initSubentities( EntityType& entity, GlobalIndexType entityIndex, EntityInitializerType&, diff --git a/src/mesh/tnlMeshEntityOrientation.h b/src/mesh/tnlMeshEntityOrientation.h index cf92302f57..12ba48d04a 100644 --- a/src/mesh/tnlMeshEntityOrientation.h +++ b/src/mesh/tnlMeshEntityOrientation.h @@ -18,6 +18,8 @@ #ifndef TNLMESHENTITYORIENTATION_H #define TNLMESHENTITYORIENTATION_H +#include <mesh/traits/tnlMeshTraits.h> + template< typename MeshConfig, typename EntityTopology> class tnlMeshEntityOrientation @@ -25,7 +27,7 @@ class tnlMeshEntityOrientation template< typename, typename> friend class tnlMeshEntityReferenceOrientation; public: - typedef typename tnlMeshConfigTraits< MeshConfig >::IdPermutationArrayAccessorType IdPermutationArrayAccessorType; + typedef typename tnlMeshTraits< MeshConfig >::IdPermutationArrayAccessorType IdPermutationArrayAccessorType; IdPermutationArrayAccessorType getSubvertexPermutation() const { @@ -36,8 +38,8 @@ class tnlMeshEntityOrientation } private: - typedef typename tnlMeshConfigTraits< MeshConfig >::LocalIndexType LocalIndexType; - typedef typename tnlMeshConfigTraits< MeshConfig >::template SubentityTraits< EntityTopology, tnlDimensionsTag< 0 > >::IdPermutationArrayType IdPermutationArrayType; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; + typedef typename tnlMeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, 0 >::IdPermutationArrayType IdPermutationArrayType; void setPermutationValue( LocalIndexType index, LocalIndexType value ) { diff --git a/src/mesh/tnlMeshEntityReferenceOrientation.h b/src/mesh/tnlMeshEntityReferenceOrientation.h index 1afe006e40..4cd6c8cb5e 100644 --- a/src/mesh/tnlMeshEntityReferenceOrientation.h +++ b/src/mesh/tnlMeshEntityReferenceOrientation.h @@ -21,8 +21,8 @@ template< typename MeshConfig, typename EntityTopology > class tnlMeshEntityReferenceOrientation { - typedef typename tnlMeshConfigTraits< MeshConfig >::LocalIndexType LocalIndexType; - typedef typename tnlMeshConfigTraits< MeshConfig >::GlobalIndexType GlobalIndexType; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; + typedef typename tnlMeshTraits< MeshConfig >::GlobalIndexType GlobalIndexType; public: typedef tnlMeshEntitySeed< MeshConfig, EntityTopology > SeedType; diff --git a/src/mesh/tnlMeshEntitySeed.h b/src/mesh/tnlMeshEntitySeed.h index d2638e420c..9eda53f8ec 100644 --- a/src/mesh/tnlMeshEntitySeed.h +++ b/src/mesh/tnlMeshEntitySeed.h @@ -18,22 +18,19 @@ #ifndef TNLMESHENTITYSEED_H #define TNLMESHENTITYSEED_H -#include <mesh/traits/tnlMeshConfigTraits.h> - -template< typename MeshConfig > -class tnlMeshConfigTraits; +#include <mesh/traits/tnlMeshTraits.h> template< typename MeshConfig, typename EntityTopology > class tnlMeshEntitySeed { - typedef tnlMeshConfigTraits< MeshConfig > MeshConfigTraits; - typedef typename tnlMeshConfigTraits< MeshConfig >::template SubentityTraits< EntityTopology, tnlDimensionsTag< 0 > > SubvertexTraits; + typedef tnlMeshTraits< MeshConfig > MeshConfigTraits; + typedef typename tnlMeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, 0 > SubvertexTraits; public: - typedef typename tnlMeshConfigTraits< MeshConfig >::GlobalIndexType GlobalIndexType; - typedef typename tnlMeshConfigTraits< MeshConfig >::LocalIndexType LocalIndexType; - typedef typename tnlMeshConfigTraits< MeshConfig >::IdArrayAccessorType IdArrayAccessorType; + typedef typename tnlMeshTraits< MeshConfig >::GlobalIndexType GlobalIndexType; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; + typedef typename tnlMeshTraits< MeshConfig >::IdArrayAccessorType IdArrayAccessorType; typedef typename SubvertexTraits::ContainerType IdArrayType; static tnlString getType() { return tnlString( "tnlMeshEntitySeed<>" ); } diff --git a/src/mesh/tnlMeshEntityKey.h b/src/mesh/tnlMeshEntitySeedKey.h similarity index 86% rename from src/mesh/tnlMeshEntityKey.h rename to src/mesh/tnlMeshEntitySeedKey.h index 55588a030c..f5680291ba 100644 --- a/src/mesh/tnlMeshEntityKey.h +++ b/src/mesh/tnlMeshEntitySeedKey.h @@ -20,30 +20,30 @@ #include <mesh/tnlDimensionsTag.h> -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > class tnlMeshEntitySeed; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, - typename DimensionsTag > + int Dimensions > class tnlMeshSubentitiesTraits; /**** * Unique identification of a mesh entity by its vertices. * Uniqueness is preserved for entities of the same type only. */ -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > class tnlMeshEntitySeedKey { typedef - tnlMeshEntitySeed< ConfigTag, EntityTag > EntitySeedType; + tnlMeshEntitySeed< MeshConfig, EntityTag > EntitySeedType; typedef typename - tnlMeshSubentitiesTraits< ConfigTag, + tnlMeshSubentitiesTraits< MeshConfig, EntityTag, - tnlDimensionsTag< 0 > >::ContainerType ContainerType; + 0 >::ContainerType ContainerType; public: diff --git a/src/mesh/tnlMeshInitializer.h b/src/mesh/tnlMeshInitializer.h index c27ae4b55c..15601ab2f2 100644 --- a/src/mesh/tnlMeshInitializer.h +++ b/src/mesh/tnlMeshInitializer.h @@ -29,28 +29,29 @@ #include <mesh/tnlMeshSuperentityStorageInitializer.h> #include <mesh/tnlMeshEntityReferenceOrientation.h> #include <mesh/tnlMeshEntitySeed.h> +#include <mesh/tnlMeshEntitySeedKey.h> -template< typename ConfigTag, +template< typename MeshConfig, typename DimensionsTag, typename EntityStorageTag = - typename tnlMeshEntitiesTraits< ConfigTag, DimensionsTag >::EntityStorageTag, + typename tnlMeshEntitiesTraits< MeshConfig, DimensionsTag::value >::EntityStorageTag, typename EntityReferenceOrientationStorage = - tnlStorageTraits< tnlMeshConfigTraits< ConfigTag >::template EntityTraits< DimensionsTag >::orientationNeeded > > + tnlStorageTraits< tnlMeshTraits< MeshConfig >::template EntityTraits< DimensionsTag::value >::orientationNeeded > > class tnlMeshInitializerLayer; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag> class tnlMeshEntityInitializer; -template< typename ConfigTag > +template< typename MeshConfig > class tnlMeshInitializer - : public tnlMeshInitializerLayer< ConfigTag, - typename tnlMeshTraits< ConfigTag >::DimensionsTag > + : public tnlMeshInitializerLayer< MeshConfig, + typename tnlMeshTraits< MeshConfig >::DimensionsTag > { - typedef tnlMesh< ConfigTag > MeshType; - typedef tnlMeshInitializerLayer< ConfigTag, - typename tnlMeshTraits< ConfigTag >::DimensionsTag > BaseType; + typedef tnlMesh< MeshConfig > MeshType; + typedef tnlMeshInitializerLayer< MeshConfig, + typename tnlMeshTraits< MeshConfig >::DimensionsTag > BaseType; public: @@ -64,8 +65,8 @@ class tnlMeshInitializer this->verbose = verbose; } - typedef typename tnlMeshConfigTraits< ConfigTag >::PointArrayType PointArrayType; - typedef typename tnlMeshTraits< ConfigTag >::CellSeedArrayType CellSeedArrayType; + typedef typename tnlMeshTraits< MeshConfig >::PointArrayType PointArrayType; + typedef typename tnlMeshTraits< MeshConfig >::CellSeedArrayType CellSeedArrayType; bool createMesh( const PointArrayType& points, const CellSeedArrayType& cellSeeds, @@ -87,35 +88,35 @@ class tnlMeshInitializer } template<typename SubDimensionsTag, typename EntityType > - static typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< typename EntityType::Tag, SubDimensionsTag >::IdArrayType& + static typename tnlMeshTraits< MeshConfig >::template SubentityTraits< typename EntityType::Tag, SubDimensionsTag::value >::IdArrayType& subentityIdsArray( EntityType& entity ) { return entity.template subentityIdsArray< SubDimensionsTag >(); } template< typename SuperDimensionsTag, typename MeshEntity> - static typename tnlMeshConfigTraits< ConfigTag >::IdArrayAccessorType& + static typename tnlMeshTraits< MeshConfig >::IdArrayAccessorType& superentityIdsArray( MeshEntity& entity ) { return entity.template superentityIdsArray< SuperDimensionsTag >(); } template<typename SubDimensionsTag, typename MeshEntity > - static typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< typename MeshEntity::Tag, SubDimensionsTag >::OrientationArrayType& + static typename tnlMeshTraits< MeshConfig >::template SubentityTraits< typename MeshEntity::Tag, SubDimensionsTag::value >::OrientationArrayType& subentityOrientationsArray( MeshEntity &entity ) { return entity.template subentityOrientationsArray< SubDimensionsTag >(); } template< typename DimensionsTag > - typename tnlMeshConfigTraits< ConfigTag >::template EntityTraits< DimensionsTag>::ContainerType& + typename tnlMeshTraits< MeshConfig >::template EntityTraits< DimensionsTag::value >::StorageArrayType& meshEntitiesArray() { return mesh->template entitiesArray< DimensionsTag >(); } template< typename DimensionsTag, typename SuperDimensionsTag > - typename tnlMeshConfigTraits< ConfigTag >::GlobalIdArrayType& + typename tnlMeshTraits< MeshConfig >::GlobalIdArrayType& meshSuperentityIdsArray() { return mesh->template superentityIdsArray< DimensionsTag, SuperDimensionsTag >(); @@ -128,15 +129,15 @@ class tnlMeshInitializer } template< typename DimensionsTag > - tnlMeshSuperentityStorageInitializer< ConfigTag, typename tnlMeshConfigTraits< ConfigTag >::template EntityTraits< DimensionsTag >::Tag >& + tnlMeshSuperentityStorageInitializer< MeshConfig, typename tnlMeshTraits< MeshConfig >::template EntityTraits< DimensionsTag::value >::Tag >& getSuperentityInitializer() { return BaseType::getSuperentityInitializer( DimensionsTag() ); } - typedef typename tnlMeshTraits< ConfigTag >::GlobalIndexType GlobalIndexType; + typedef typename tnlMeshTraits< MeshConfig >::GlobalIndexType GlobalIndexType; template< typename DimensionsTag > - const tnlMeshEntityReferenceOrientation< ConfigTag, typename tnlMeshConfigTraits< ConfigTag >::template EntityTraits< DimensionsTag >::Tag >& + const tnlMeshEntityReferenceOrientation< MeshConfig, typename tnlMeshTraits< MeshConfig >::template EntityTraits< DimensionsTag::value >::Tag >& getReferenceOrientation( GlobalIndexType index) const { return BaseType::getReferenceOrientation( DimensionsTag(), index); @@ -154,35 +155,35 @@ class tnlMeshInitializer * - entities storage must turned on (cells must always be stored ) * - entities orientation does not make sense for cells => it is turned off */ -template< typename ConfigTag > -class tnlMeshInitializerLayer< ConfigTag, - typename tnlMeshTraits< ConfigTag >::DimensionsTag, +template< typename MeshConfig > +class tnlMeshInitializerLayer< MeshConfig, + typename tnlMeshTraits< MeshConfig >::DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< false > > - : public tnlMeshInitializerLayer< ConfigTag, - typename tnlMeshTraits< ConfigTag >::DimensionsTag::Decrement > + : public tnlMeshInitializerLayer< MeshConfig, + typename tnlMeshTraits< MeshConfig >::DimensionsTag::Decrement > { - typedef typename tnlMeshTraits< ConfigTag >::DimensionsTag DimensionsTag; + typedef typename tnlMeshTraits< MeshConfig >::DimensionsTag DimensionsTag; - typedef tnlMeshInitializerLayer< ConfigTag, + typedef tnlMeshInitializerLayer< MeshConfig, typename DimensionsTag::Decrement > BaseType; - typedef tnlMeshEntitiesTraits< ConfigTag, DimensionsTag > EntityTraits; + typedef tnlMeshEntitiesTraits< MeshConfig, DimensionsTag::value > EntityTraits; typedef typename EntityTraits::Tag EntityTag; - typedef typename EntityTraits::ContainerType ContainerType; + typedef typename EntityTraits::StorageArrayType ContainerType; typedef typename ContainerType::IndexType GlobalIndexType; - typedef typename tnlMeshConfigTraits< ConfigTag >::CellTopology CellTopology; - typedef typename EntityTraits::ContainerType EntityArrayType; + typedef typename tnlMeshTraits< MeshConfig >::CellTopology CellTopology; + typedef typename EntityTraits::StorageArrayType EntityArrayType; - typedef tnlMeshInitializer< ConfigTag > InitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > CellInitializerType; + typedef tnlMeshInitializer< MeshConfig > InitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > EntityInitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > CellInitializerType; typedef tnlArray< CellInitializerType, tnlHost, GlobalIndexType > CellInitializerContainerType; - typedef typename tnlMeshConfigTraits< ConfigTag >::CellSeedArrayType CellSeedArrayType; - typedef typename tnlMeshConfigTraits< ConfigTag >::LocalIndexType LocalIndexType; - typedef typename tnlMeshTraits< ConfigTag >::PointArrayType PointArrayType; - typedef tnlMeshEntitySeed< ConfigTag, CellTopology > SeedType; - typedef tnlMeshSuperentityStorageInitializer< ConfigTag, EntityTag > SuperentityInitializerType; + typedef typename tnlMeshTraits< MeshConfig >::CellSeedArrayType CellSeedArrayType; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; + typedef typename tnlMeshTraits< MeshConfig >::PointArrayType PointArrayType; + typedef tnlMeshEntitySeed< MeshConfig, CellTopology > SeedType; + typedef tnlMeshSuperentityStorageInitializer< MeshConfig, EntityTag > SuperentityInitializerType; public: using BaseType::getEntityInitializer; @@ -227,7 +228,7 @@ class tnlMeshInitializerLayer< ConfigTag, bool checkCells() { - typedef typename tnlMeshEntity< ConfigTag, EntityTag >::template SubentitiesTraits< 0 >::LocalIndexType LocalIndexType; + typedef typename tnlMeshEntity< MeshConfig, EntityTag >::template SubentitiesTraits< 0 >::LocalIndexType LocalIndexType; const GlobalIndexType numberOfVertices( this->getMesh().getNumberOfVertices() ); for( GlobalIndexType cell = 0; cell < this->getMesh().getNumberOfCells(); @@ -254,7 +255,7 @@ class tnlMeshInitializerLayer< ConfigTag, } private: - typedef typename tnlMeshEntitiesTraits< ConfigTag, DimensionsTag >::SeedIndexedSetType SeedIndexedSet; + typedef typename tnlMeshEntitiesTraits< MeshConfig, DimensionsTag::value >::SeedIndexedSetType SeedIndexedSet; SeedIndexedSet seedsIndexedSet; SuperentityInitializerType superentityInitializer; @@ -265,45 +266,45 @@ class tnlMeshInitializerLayer< ConfigTag, * - entities storage is turned on * - entities orientation storage is turned off */ -template< typename ConfigTag, +template< typename MeshConfig, typename DimensionsTag > -class tnlMeshInitializerLayer< ConfigTag, +class tnlMeshInitializerLayer< MeshConfig, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< false > > - : public tnlMeshInitializerLayer< ConfigTag, + : public tnlMeshInitializerLayer< MeshConfig, typename DimensionsTag::Decrement > { - typedef tnlMeshInitializerLayer< ConfigTag, + typedef tnlMeshInitializerLayer< MeshConfig, typename DimensionsTag::Decrement > BaseType; - typedef tnlMeshEntitiesTraits< ConfigTag, DimensionsTag > Tag; + typedef tnlMeshEntitiesTraits< MeshConfig, DimensionsTag::value > Tag; typedef typename Tag::Tag EntityTag; typedef typename Tag::Type EntityType; typedef typename Tag::ContainerType ContainerType; typedef typename Tag::UniqueContainerType UniqueContainerType; typedef typename ContainerType::IndexType GlobalIndexType; - typedef typename tnlMeshConfigTraits< ConfigTag >::CellTopology CellTopology; + typedef typename tnlMeshTraits< MeshConfig >::CellTopology CellTopology; - typedef tnlMeshInitializer< ConfigTag > InitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, - typename ConfigTag::CellTopology > CellInitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; + typedef tnlMeshInitializer< MeshConfig > InitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, + typename MeshConfig::CellTopology > CellInitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > EntityInitializerType; typedef tnlArray< EntityInitializerType, tnlHost, GlobalIndexType > EntityInitializerContainerType; - typedef typename tnlMeshConfigTraits< ConfigTag >::CellSeedArrayType CellSeedArrayType; - typedef typename tnlMeshConfigTraits< ConfigTag >::LocalIndexType LocalIndexType; - typedef typename tnlMeshTraits< ConfigTag >::PointArrayType PointArrayType; - typedef tnlMeshEntitiesTraits< ConfigTag, DimensionsTag > EntityTraits; + typedef typename tnlMeshTraits< MeshConfig >::CellSeedArrayType CellSeedArrayType; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; + typedef typename tnlMeshTraits< MeshConfig >::PointArrayType PointArrayType; + typedef tnlMeshEntitiesTraits< MeshConfig, DimensionsTag::value > EntityTraits; typedef typename EntityTraits::ContainerType EntityArrayType; typedef typename EntityTraits::SeedArrayType SeedArrayType; - typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; - typedef tnlMeshSuperentityStorageInitializer< ConfigTag, EntityTag > SuperentityInitializerType; + typedef tnlMeshEntitySeed< MeshConfig, EntityTag > SeedType; + typedef tnlMeshSuperentityStorageInitializer< MeshConfig, EntityTag > SuperentityInitializerType; typedef typename - tnlMeshSubentitiesTraits< ConfigTag, - typename ConfigTag::CellTopology, - DimensionsTag >::SubentityContainerType SubentitiesContainerType; + tnlMeshSubentitiesTraits< MeshConfig, + typename MeshConfig::CellTopology, + DimensionsTag::value >::SubentityContainerType SubentitiesContainerType; public: @@ -315,7 +316,7 @@ class tnlMeshInitializerLayer< ConfigTag, void createEntitySeedsFromCellSeeds( const CellSeedArrayType& cellSeeds ) { - typedef tnlMeshSubentitySeedsCreator< ConfigTag, CellTopology, DimensionsTag > SubentitySeedsCreator; + typedef tnlMeshSubentitySeedsCreator< MeshConfig, CellTopology, DimensionsTag > SubentitySeedsCreator; //cout << " Creating mesh entities with " << DimensionsTag::value << " dimensions ... " << endl; for( GlobalIndexType i = 0; i < cellSeeds.getSize(); i++ ) { @@ -369,7 +370,7 @@ class tnlMeshInitializerLayer< ConfigTag, void createEntityReferenceOrientations() const {} private: - typedef typename tnlMeshEntitiesTraits< ConfigTag, DimensionsTag >::SeedIndexedSetType SeedIndexedSet; + typedef typename tnlMeshEntitiesTraits< MeshConfig, DimensionsTag::value >::SeedIndexedSetType SeedIndexedSet; SeedIndexedSet seedsIndexedSet; SuperentityInitializerType superentityInitializer; }; @@ -379,47 +380,47 @@ class tnlMeshInitializerLayer< ConfigTag, * - entities storage is turned on * - entities orientation storage is turned on */ -template< typename ConfigTag, +template< typename MeshConfig, typename DimensionsTag > -class tnlMeshInitializerLayer< ConfigTag, +class tnlMeshInitializerLayer< MeshConfig, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< true > > - : public tnlMeshInitializerLayer< ConfigTag, + : public tnlMeshInitializerLayer< MeshConfig, typename DimensionsTag::Decrement > { - typedef tnlMeshInitializerLayer< ConfigTag, + typedef tnlMeshInitializerLayer< MeshConfig, typename DimensionsTag::Decrement > BaseType; - typedef tnlMeshEntitiesTraits< ConfigTag, DimensionsTag > Tag; + typedef tnlMeshEntitiesTraits< MeshConfig, DimensionsTag::value > Tag; typedef typename Tag::Tag EntityTag; - typedef typename Tag::Type EntityType; - typedef typename Tag::ContainerType ContainerType; + typedef typename Tag::EntityType EntityType; + typedef typename Tag::StorageArrayType ContainerType; typedef typename Tag::UniqueContainerType UniqueContainerType; typedef typename ContainerType::IndexType GlobalIndexType; - typedef typename tnlMeshConfigTraits< ConfigTag >::CellTopology CellTopology; + typedef typename tnlMeshTraits< MeshConfig >::CellTopology CellTopology; - typedef tnlMeshInitializer< ConfigTag > InitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, - typename ConfigTag::CellTopology > CellInitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; + typedef tnlMeshInitializer< MeshConfig > InitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, + typename MeshConfig::CellTopology > CellInitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > EntityInitializerType; typedef tnlArray< EntityInitializerType, tnlHost, GlobalIndexType > EntityInitializerContainerType; - typedef typename tnlMeshConfigTraits< ConfigTag >::CellSeedArrayType CellSeedArrayType; - typedef typename tnlMeshConfigTraits< ConfigTag >::LocalIndexType LocalIndexType; - typedef typename tnlMeshTraits< ConfigTag >::PointArrayType PointArrayType; - typedef tnlMeshEntitiesTraits< ConfigTag, DimensionsTag > EntityTraits; - typedef typename EntityTraits::ContainerType EntityArrayType; + typedef typename tnlMeshTraits< MeshConfig >::CellSeedArrayType CellSeedArrayType; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; + typedef typename tnlMeshTraits< MeshConfig >::PointArrayType PointArrayType; + typedef tnlMeshEntitiesTraits< MeshConfig, DimensionsTag::value > EntityTraits; + typedef typename EntityTraits::StorageArrayType EntityArrayType; typedef typename EntityTraits::SeedArrayType SeedArrayType; - typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; - typedef tnlMeshSuperentityStorageInitializer< ConfigTag, EntityTag > SuperentityInitializerType; + typedef tnlMeshEntitySeed< MeshConfig, EntityTag > SeedType; + typedef tnlMeshSuperentityStorageInitializer< MeshConfig, EntityTag > SuperentityInitializerType; typedef typename EntityTraits::ReferenceOrientationType ReferenceOrientationType; typedef typename EntityTraits::ReferenceOrientationArrayType ReferenceOrientationArrayType; typedef typename - tnlMeshSubentitiesTraits< ConfigTag, - typename ConfigTag::CellTopology, - DimensionsTag >::SubentityContainerType SubentitiesContainerType; + tnlMeshSubentitiesTraits< MeshConfig, + typename MeshConfig::CellTopology, + DimensionsTag::value >::SubentityContainerType SubentitiesContainerType; public: @@ -431,7 +432,7 @@ class tnlMeshInitializerLayer< ConfigTag, void createEntitySeedsFromCellSeeds( const CellSeedArrayType& cellSeeds ) { - typedef tnlMeshSubentitySeedsCreator< ConfigTag, CellTopology, DimensionsTag > SubentitySeedsCreator; + typedef tnlMeshSubentitySeedsCreator< MeshConfig, CellTopology, DimensionsTag > SubentitySeedsCreator; //cout << " Creating mesh entities with " << DimensionsTag::value << " dimensions ... " << endl; for( GlobalIndexType i = 0; i < cellSeeds.getSize(); i++ ) { @@ -505,7 +506,7 @@ class tnlMeshInitializerLayer< ConfigTag, private: - typedef typename tnlMeshEntitiesTraits< ConfigTag, DimensionsTag >::SeedIndexedSetType SeedIndexedSet; + typedef typename tnlMeshEntitiesTraits< MeshConfig, DimensionsTag::value >::SeedIndexedSetType SeedIndexedSet; SeedIndexedSet seedsIndexedSet; SuperentityInitializerType superentityInitializer; ReferenceOrientationArrayType referenceOrientations; @@ -514,13 +515,13 @@ class tnlMeshInitializerLayer< ConfigTag, /**** * Mesh initializer layer for entities not being stored */ -template< typename ConfigTag, +template< typename MeshConfig, typename DimensionsTag > -class tnlMeshInitializerLayer< ConfigTag, +class tnlMeshInitializerLayer< MeshConfig, DimensionsTag, tnlStorageTraits< false >, tnlStorageTraits< false > > - : public tnlMeshInitializerLayer< ConfigTag, + : public tnlMeshInitializerLayer< MeshConfig, typename DimensionsTag::Decrement > {}; @@ -529,35 +530,35 @@ class tnlMeshInitializerLayer< ConfigTag, * - vertices must always be stored * - their orientation does not make sense */ -template< typename ConfigTag > -class tnlMeshInitializerLayer< ConfigTag, +template< typename MeshConfig > +class tnlMeshInitializerLayer< MeshConfig, tnlDimensionsTag< 0 >, tnlStorageTraits< true >, tnlStorageTraits< false > > { - typedef tnlMesh< ConfigTag > MeshType; + typedef tnlMesh< MeshConfig > MeshType; typedef tnlDimensionsTag< 0 > DimensionsTag; - typedef tnlMeshEntitiesTraits< ConfigTag, DimensionsTag > Tag; + typedef tnlMeshEntitiesTraits< MeshConfig, DimensionsTag::value > Tag; typedef typename Tag::Tag EntityTag; - typedef typename Tag::ContainerType ContainerType; - typedef typename Tag::SharedContainerType SharedContainerType; + typedef typename Tag::StorageArrayType ContainerType; + typedef typename Tag::AccessArrayType SharedContainerType; typedef typename ContainerType::IndexType GlobalIndexType; - typedef typename tnlMeshTraits< ConfigTag >::CellTopology CellTopology; + typedef typename tnlMeshTraits< MeshConfig >::CellTopology CellTopology; - typedef tnlMeshInitializer< ConfigTag > InitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, - typename ConfigTag::CellTopology > CellInitializerType; - typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > VertexInitializerType; + typedef tnlMeshInitializer< MeshConfig > InitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, + typename MeshConfig::CellTopology > CellInitializerType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > VertexInitializerType; typedef tnlArray< VertexInitializerType, tnlHost, GlobalIndexType > VertexInitializerContainerType; - typedef typename tnlMeshConfigTraits< ConfigTag >::CellSeedArrayType CellSeedArrayType; - typedef typename tnlMeshConfigTraits< ConfigTag >::LocalIndexType LocalIndexType; - typedef typename tnlMeshTraits< ConfigTag >::PointArrayType PointArrayType; - typedef tnlMeshEntitiesTraits< ConfigTag, DimensionsTag > EntityTraits; - typedef typename EntityTraits::ContainerType EntityArrayType; - typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; - typedef tnlMeshSuperentityStorageInitializer< ConfigTag, EntityTag > SuperentityInitializerType; + typedef typename tnlMeshTraits< MeshConfig >::CellSeedArrayType CellSeedArrayType; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; + typedef typename tnlMeshTraits< MeshConfig >::PointArrayType PointArrayType; + typedef tnlMeshEntitiesTraits< MeshConfig, DimensionsTag::value > EntityTraits; + typedef typename EntityTraits::StorageArrayType EntityArrayType; + typedef tnlMeshEntityInitializer< MeshConfig, EntityTag > EntityInitializerType; + typedef tnlMeshSuperentityStorageInitializer< MeshConfig, EntityTag > SuperentityInitializerType; public: diff --git a/src/mesh/tnlMeshIntegrityCheckerLayer.h b/src/mesh/tnlMeshIntegrityCheckerLayer.h index 9966a26081..42582afba3 100644 --- a/src/mesh/tnlMeshIntegrityCheckerLayer.h +++ b/src/mesh/tnlMeshIntegrityCheckerLayer.h @@ -25,7 +25,7 @@ template< typename MeshType, typename DimensionsTag, typename EntityStorageTag = typename tnlMeshEntitiesTraits< typename MeshType::Config, - DimensionsTag >::EntityStorageTag > + DimensionsTag::value >::EntityStorageTag > class tnlMeshIntegrityCheckerLayer; template< typename MeshType, diff --git a/src/mesh/tnlMeshReaderNetgen.h b/src/mesh/tnlMeshReaderNetgen.h index b22fab8f36..007c607af9 100644 --- a/src/mesh/tnlMeshReaderNetgen.h +++ b/src/mesh/tnlMeshReaderNetgen.h @@ -158,7 +158,7 @@ class tnlMeshReaderNetgen return false; getline( inputFile, line ); iss.str( line ); - typedef typename MeshType::template EntitiesTraits< 0 >::GlobalIndexType VertexIndexType; + typedef typename MeshType::MeshTraits::template EntityTraits< 0 >::GlobalIndexType VertexIndexType; VertexIndexType pointsCount; iss >> pointsCount; if( ! meshBuilder.setPointsCount( pointsCount ) ) @@ -192,7 +192,7 @@ class tnlMeshReaderNetgen /**** * Read number of cells */ - typedef typename MeshType::template EntitiesTraits< dimensions >::GlobalIndexType CellIndexType; + typedef typename MeshType::MeshTraits::template EntityTraits< dimensions >::GlobalIndexType CellIndexType; if( ! inputFile ) { cerr << "I cannot read the mesh cells." << endl; diff --git a/src/mesh/tnlMeshSubentitySeedCreator.h b/src/mesh/tnlMeshSubentitySeedCreator.h index dfa7f24de2..1cd50f44bf 100644 --- a/src/mesh/tnlMeshSubentitySeedCreator.h +++ b/src/mesh/tnlMeshSubentitySeedCreator.h @@ -25,11 +25,11 @@ template< typename MeshConfig, typename SubDimensionsTag > class tnlMeshSubentitySeedsCreator { - typedef typename tnlMeshConfigTraits< MeshConfig >::LocalIndexType LocalIndexType; - typedef typename tnlMeshConfigTraits< MeshConfig >::template SubentityTraits< EntityTopology, SubDimensionsTag > SubentityTraits; + typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType LocalIndexType; + typedef typename tnlMeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, SubDimensionsTag::value > SubentityTraits; typedef typename SubentityTraits::SubentityTag Subtopology; - typedef typename tnlMeshConfigTraits< MeshConfig >::IdArrayAccessorType IdArrayAccessorType; - typedef typename tnlMeshConfigTraits< MeshConfig >::template SubentityTraits< Subtopology, tnlDimensionsTag< 0 > > SubentityVertexTraits; + typedef typename tnlMeshTraits< MeshConfig >::IdArrayAccessorType IdArrayAccessorType; + typedef typename tnlMeshTraits< MeshConfig >::template SubentityTraits< Subtopology, 0 > SubentityVertexTraits; static const LocalIndexType SUBENTITIES_COUNT = SubentityTraits::count; static const LocalIndexType SUBENTITY_VERTICES_COUNT = SubentityVertexTraits::count; diff --git a/src/mesh/tnlMeshSuperentityStorageInitializer.h b/src/mesh/tnlMeshSuperentityStorageInitializer.h index ad55764b93..c532b9282f 100644 --- a/src/mesh/tnlMeshSuperentityStorageInitializer.h +++ b/src/mesh/tnlMeshSuperentityStorageInitializer.h @@ -22,43 +22,43 @@ #include <mesh/tnlDimensionsTag.h> #include <algorithm> -template< typename ConfigTag > +template< typename MeshConfig > class tnlMeshInitializer; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag, - typename SuperentityStorageTag = typename tnlMeshSuperentitiesTraits< ConfigTag, EntityTag, DimensionsTag >::SuperentityStorageTag > + typename SuperentityStorageTag = typename tnlMeshSuperentitiesTraits< MeshConfig, EntityTag, DimensionsTag >::SuperentityStorageTag > class tnlMeshSuperentityStorageInitializerLayer; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > class tnlMeshSuperentityStorageInitializer : - public tnlMeshSuperentityStorageInitializerLayer< ConfigTag, EntityTag, tnlDimensionsTag< tnlMeshConfigTraits< ConfigTag >::meshDimensions > > + public tnlMeshSuperentityStorageInitializerLayer< MeshConfig, EntityTag, tnlDimensionsTag< tnlMeshTraits< MeshConfig >::meshDimensions > > {}; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag > -class tnlMeshSuperentityStorageInitializerLayer< ConfigTag, +class tnlMeshSuperentityStorageInitializerLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< true > > - : public tnlMeshSuperentityStorageInitializerLayer< ConfigTag, + : public tnlMeshSuperentityStorageInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > { - typedef tnlMeshSuperentityStorageInitializerLayer< ConfigTag, + typedef tnlMeshSuperentityStorageInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > BaseType; typedef tnlDimensionsTag< EntityTag::dimensions > EntityDimensions; - typedef typename tnlMeshConfigTraits< ConfigTag >::GlobalIdArrayType GlobalIdArrayType; + typedef typename tnlMeshTraits< MeshConfig >::GlobalIdArrayType GlobalIdArrayType; - typedef typename tnlMeshConfigTraits< ConfigTag >::GlobalIndexType GlobalIndexType; - typedef tnlMeshInitializer< ConfigTag > MeshInitializer; + typedef typename tnlMeshTraits< MeshConfig >::GlobalIndexType GlobalIndexType; + typedef tnlMeshInitializer< MeshConfig > MeshInitializer; public: using BaseType::addSuperentity; @@ -110,21 +110,21 @@ class tnlMeshSuperentityStorageInitializerLayer< ConfigTag, }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag > -class tnlMeshSuperentityStorageInitializerLayer< ConfigTag, +class tnlMeshSuperentityStorageInitializerLayer< MeshConfig, EntityTag, DimensionsTag, tnlStorageTraits< false > > - : public tnlMeshSuperentityStorageInitializerLayer< ConfigTag, + : public tnlMeshSuperentityStorageInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > { - typedef tnlMeshSuperentityStorageInitializerLayer< ConfigTag, + typedef tnlMeshSuperentityStorageInitializerLayer< MeshConfig, EntityTag, typename DimensionsTag::Decrement > BaseType; - typedef tnlMeshInitializer< ConfigTag > MeshInitializerType; + typedef tnlMeshInitializer< MeshConfig > MeshInitializerType; public: void addSuperentity() {} // This method is due to 'using BaseType::...;' in the derived classes. @@ -132,28 +132,28 @@ class tnlMeshSuperentityStorageInitializerLayer< ConfigTag, void initSuperentities( MeshInitializerType& ) {cerr << "***" << endl;} }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > -class tnlMeshSuperentityStorageInitializerLayer< ConfigTag, +class tnlMeshSuperentityStorageInitializerLayer< MeshConfig, EntityTag, tnlDimensionsTag< EntityTag::dimensions >, tnlStorageTraits< true > > { - typedef tnlMeshInitializer< ConfigTag > MeshInitializerType; + typedef tnlMeshInitializer< MeshConfig > MeshInitializerType; public: void addSuperentity() {} // This method is due to 'using BaseType::...;' in the derived classes. void initSuperentities( MeshInitializerType& ) {} }; -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag > -class tnlMeshSuperentityStorageInitializerLayer< ConfigTag, +class tnlMeshSuperentityStorageInitializerLayer< MeshConfig, EntityTag, tnlDimensionsTag< EntityTag::dimensions >, tnlStorageTraits< false > > { - typedef tnlMeshInitializer< ConfigTag > MeshInitializerType; + typedef tnlMeshInitializer< MeshConfig > MeshInitializerType; public: void addSuperentity() {} // This method is due to 'using BaseType::...;' in the derived classes. diff --git a/src/mesh/tnlMeshWriterVTKLegacy.h b/src/mesh/tnlMeshWriterVTKLegacy.h index 2b854936c2..4ad1aecd91 100644 --- a/src/mesh/tnlMeshWriterVTKLegacy.h +++ b/src/mesh/tnlMeshWriterVTKLegacy.h @@ -51,10 +51,10 @@ enum tnlVTKMeshEntities { tnlVTKVertex = 1, template< typename MeshEntity > struct tnlMeshEntityVTKType{}; -template< typename ConfigTag > struct tnlMeshEntityVTKType< tnlMeshEntity< ConfigTag, tnlMeshTriangleTag > > { enum { VTKType = tnlVTKTriangle }; }; -template< typename ConfigTag > struct tnlMeshEntityVTKType< tnlMeshEntity< ConfigTag, tnlMeshQuadrilateralTag > >{ enum { VTKType = tnlVTKQuad }; }; -template< typename ConfigTag > struct tnlMeshEntityVTKType< tnlMeshEntity< ConfigTag, tnlMeshTetrahedronTag > > { enum { VTKType = tnlVTKTetra }; }; -template< typename ConfigTag > struct tnlMeshEntityVTKType< tnlMeshEntity< ConfigTag, tnlMeshHexahedronTag > > { enum { VTKType = tnlVTKHexahedron }; }; +template< typename MeshConfig > struct tnlMeshEntityVTKType< tnlMeshEntity< MeshConfig, tnlMeshTriangleTag > > { enum { VTKType = tnlVTKTriangle }; }; +template< typename MeshConfig > struct tnlMeshEntityVTKType< tnlMeshEntity< MeshConfig, tnlMeshQuadrilateralTag > >{ enum { VTKType = tnlVTKQuad }; }; +template< typename MeshConfig > struct tnlMeshEntityVTKType< tnlMeshEntity< MeshConfig, tnlMeshTetrahedronTag > > { enum { VTKType = tnlVTKTetra }; }; +template< typename MeshConfig > struct tnlMeshEntityVTKType< tnlMeshEntity< MeshConfig, tnlMeshHexahedronTag > > { enum { VTKType = tnlVTKHexahedron }; }; class tnlMeshWriterVTKLegacy { @@ -90,8 +90,7 @@ class tnlMeshWriterVTKLegacy MeshType& mesh, bool verbose ) { - typedef typename MeshType::CellTraits MeshEntitiesTraits; - typedef typename MeshEntitiesTraits::Type CellType; + typedef typename MeshType::MeshTraits::CellEntity CellEntityType; file << "# vtk DataFile Version 2.0" << endl; file << "TNL Mesh" << endl; file << "ASCII" << endl; @@ -123,7 +122,7 @@ class tnlMeshWriterVTKLegacy file << "CELL_TYPES " << mesh.template getNumberOfCells() << endl; for( int i = 0; i < mesh.template getNumberOfCells(); i++ ) { - file << tnlMeshEntityVTKType< CellType >::VTKType << endl; + file << tnlMeshEntityVTKType< CellEntityType >::VTKType << endl; } file << endl; return true; diff --git a/src/mesh/topologies/tnlMeshVertexTag.h b/src/mesh/topologies/tnlMeshVertexTag.h index 4737680768..06459a4658 100644 --- a/src/mesh/topologies/tnlMeshVertexTag.h +++ b/src/mesh/topologies/tnlMeshVertexTag.h @@ -20,7 +20,7 @@ struct tnlMeshVertexTag { - enum { dimensions = 0 }; + static const int dimensions = 0; }; diff --git a/src/mesh/traits/tnlMeshConfigTraits.h b/src/mesh/traits/tnlMeshConfigTraits.h deleted file mode 100644 index dab0bcf266..0000000000 --- a/src/mesh/traits/tnlMeshConfigTraits.h +++ /dev/null @@ -1,63 +0,0 @@ -/*************************************************************************** - tnlMeshConfigTraits.h - description - ------------------- - begin : Aug 14, 2015 - copyright : (C) 2015 by Tomas Oberhuber et al. - email : tomas.oberhuber@fjfi.cvut.cz - ***************************************************************************/ - -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - -#ifndef TNLMESHCONFIGTRAITS_H -#define TNLMESHCONFIGTRAITS_H - -#include <core/tnlHost.h> -#include <mesh/traits/tnlMeshEntitiesTraits.h> -#include <mesh/traits/tnlMeshSubentitiesTraits.h> -#include <mesh/traits/tnlMeshSuperentitiesTraits.h> - -template< typename MeshConfig > -class tnlMeshConfigTraits -{ - public: - static const int meshDimensions = MeshConfig::CellTopology::dimensions; - static const int worldDimensions = MeshConfig::worldDimensions; - - typedef typename MeshConfig::RealType RealType; - typedef typename MeshConfig::GlobalIndexType GlobalIndexType; - typedef typename MeshConfig::LocalIndexType LocalIndexType; - typedef typename tnlMeshEntitiesTag< MeshConfig, - tnlDimensionsTag< 0 > >::Tag VertexType; - typedef typename MeshConfig::CellTopology CellTopology; - - typedef tnlDimensionsTag< meshDimensions > MeshDimensions; - typedef typename tnlMeshTraits< MeshConfig >::PointType Point; - //typedef Entity<TConfig, TVertexTopology> TVertex; - typedef tnlMeshEntitySeed< MeshConfig, CellTopology > CellSeed; - - // TODO: to asi presunout do implementace, stejne to bude vazane na TNL - typedef tnlArray< GlobalIndexType, tnlHost, GlobalIndexType > GlobalIdArrayType; - typedef tnlConstSharedArray< GlobalIndexType, tnlHost, LocalIndexType > IdArrayAccessorType; - typedef tnlConstSharedArray< LocalIndexType, tnlHost, LocalIndexType > IdPermutationArrayAccessorType; - typedef tnlArray< Point, tnlHost, GlobalIndexType> PointArrayType; - typedef tnlArray< CellSeed, tnlHost, GlobalIndexType > CellSeedArrayType; - - template< typename Dimensions > using EntityTraits = - tnlMeshEntitiesTraits< MeshConfig, Dimensions >; - - template< typename MeshEntity, typename SubDimensions > using SubentityTraits = - tnlMeshSubentitiesTraits< MeshConfig, MeshEntity, SubDimensions >; - - template< typename MeshEntity, typename SuperDimensions > using SuperentityTraits = - tnlMeshSuperentitiesTraits< MeshConfig, MeshEntity, SuperDimensions >; -}; - -#endif /* TNLMESHCONFIGTRAITS_H */ - diff --git a/src/mesh/traits/tnlMeshEntitiesTag.h b/src/mesh/traits/tnlMeshEntitiesTag.h index f7bcbe5684..d5585f13e2 100644 --- a/src/mesh/traits/tnlMeshEntitiesTag.h +++ b/src/mesh/traits/tnlMeshEntitiesTag.h @@ -21,23 +21,23 @@ #include <mesh/traits/tnlMeshTraits.h> #include <mesh/topologies/tnlMeshEntityTopology.h> -template< typename ConfigTag, +template< typename MeshConfig, typename DimensionsTag > class tnlMeshEntitiesTag { public: - typedef typename tnlSubentities< typename ConfigTag::CellTopology, + typedef typename tnlSubentities< typename MeshConfig::CellTopology, DimensionsTag::value >::Tag Tag; }; -template< typename ConfigTag > -class tnlMeshEntitiesTag< ConfigTag, - typename tnlMeshTraits< ConfigTag >::DimensionsTag > +template< typename MeshConfig > +class tnlMeshEntitiesTag< MeshConfig, + tnlDimensionsTag< MeshConfig::CellTopology::dimensions > > { public: - typedef typename ConfigTag::CellTopology Tag; + typedef typename MeshConfig::CellTopology Tag; }; diff --git a/src/mesh/traits/tnlMeshEntitiesTraits.h b/src/mesh/traits/tnlMeshEntitiesTraits.h index ebc2663843..54a029b0c4 100644 --- a/src/mesh/traits/tnlMeshEntitiesTraits.h +++ b/src/mesh/traits/tnlMeshEntitiesTraits.h @@ -18,30 +18,33 @@ #ifndef TNLMESHENTITIESTRAITS_H_ #define TNLMESHENTITIESTRAITS_H_ +#include <core/vectors/tnlStaticVector.h> #include <core/arrays/tnlArray.h> +#include <core/arrays/tnlSharedArray.h> #include <core/arrays/tnlConstSharedArray.h> #include <core/tnlIndexedSet.h> #include <mesh/traits/tnlMeshEntitiesTag.h> #include <mesh/config/tnlMeshConfigBase.h> -#include <mesh/tnlMeshEntityKey.h> -#include <mesh/tnlMeshEntitySeed.h> +#include <mesh/traits/tnlStorageTraits.h> +#include <mesh/traits/tnlMeshTraits.h> -template< typename MeshConfig > class tnlMeshConfigTraits; +template< typename MeshConfig, typename EntityTopology > class tnlMeshEntity; template< typename MeshConfig, typename EntityTopology > class tnlMeshEntitySeed; +template< typename MeshConfig, typename EntityTopology > class tnlMeshEntitySeedKey; template< typename MeshConfig, typename EntityTopology > class tnlMeshEntityReferenceOrientation; template< typename MeshConfig, typename DimensionsTag, - typename SuperDimensionsTag = tnlDimensionsTag< tnlMeshConfigTraits< MeshConfig >::meshDimensions > > + typename SuperDimensionsTag = tnlDimensionsTag< MeshConfig::meshDimensions > > class tnlMeshEntityOrientationNeeded { static_assert( 0 <= DimensionsTag::value && DimensionsTag::value < MeshConfig::CellTopology::dimensions, "invalid dimensions" ); static_assert( DimensionsTag::value < SuperDimensionsTag::value && SuperDimensionsTag::value <= MeshConfig::CellTopology::dimensions, "invalid superentity dimensions"); - typedef typename tnlMeshConfigTraits< MeshConfig >::template EntityTraits< SuperDimensionsTag >::Tag SuperentityTopology; + typedef typename tnlMeshTraits< MeshConfig >::template EntityTraits< SuperDimensionsTag::value >::Tag SuperentityTopology; static const bool previousSuperDimensionsValue = tnlMeshEntityOrientationNeeded< MeshConfig, DimensionsTag, typename SuperDimensionsTag::Decrement >::value; - static const bool thisSuperDimensionsValue = tnlMeshConfigTraits< MeshConfig >::template SubentityTraits< SuperentityTopology, DimensionsTag >::orientationEnabled; + static const bool thisSuperDimensionsValue = tnlMeshTraits< MeshConfig >::template SubentityTraits< SuperentityTopology, DimensionsTag::value >::orientationEnabled; public: static const bool value = ( previousSuperDimensionsValue || thisSuperDimensionsValue ); @@ -57,37 +60,36 @@ class tnlMeshEntityOrientationNeeded< MeshConfig, DimensionsTag, DimensionsTag > }; -template< typename ConfigTag, - typename DimensionsTag > +template< typename MeshConfig, + int Dimensions > class tnlMeshEntitiesTraits { public: - static const bool storageEnabled = ConfigTag::entityStorage( DimensionsTag::value ); - static const bool orientationNeeded = tnlMeshEntityOrientationNeeded< ConfigTag, DimensionsTag >::value; - - typedef typename ConfigTag::GlobalIndexType GlobalIndexType; - typedef typename ConfigTag::LocalIndexType LocalIndexType; - typedef typename tnlMeshEntitiesTag< ConfigTag, - DimensionsTag >::Tag EntityTag; - typedef tnlMeshEntitySeedKey< ConfigTag, EntityTag > Key; - + static const bool storageEnabled = MeshConfig::entityStorage( Dimensions ); + static const bool orientationNeeded = tnlMeshEntityOrientationNeeded< MeshConfig, tnlDimensionsTag< Dimensions > >::value; + typedef typename MeshConfig::GlobalIndexType GlobalIndexType; + typedef typename MeshConfig::LocalIndexType LocalIndexType; + typedef typename tnlMeshEntitiesTag< MeshConfig, + tnlDimensionsTag< Dimensions > >::Tag EntityTag; + typedef EntityTag Tag; - typedef tnlMeshEntity< ConfigTag, Tag > Type; - typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; - typedef tnlMeshEntityReferenceOrientation< ConfigTag, EntityTag > ReferenceOrientationType; + typedef tnlMeshEntity< MeshConfig, Tag > EntityType; + typedef tnlMeshEntitySeed< MeshConfig, EntityTag > SeedType; + typedef tnlMeshEntityReferenceOrientation< MeshConfig, EntityTag > ReferenceOrientationType; + typedef tnlMeshEntitySeedKey< MeshConfig, EntityTag > Key; typedef tnlStorageTraits< storageEnabled > EntityStorageTag; - typedef tnlArray< Type, tnlHost, GlobalIndexType > ContainerType; - typedef tnlSharedArray< Type, tnlHost, GlobalIndexType > SharedContainerType; - typedef tnlIndexedSet< Type, GlobalIndexType, Key > UniqueContainerType; + typedef tnlArray< EntityType, tnlHost, GlobalIndexType > StorageArrayType; + typedef tnlSharedArray< EntityType, tnlHost, GlobalIndexType > AccessArrayType; + typedef tnlIndexedSet< EntityType, GlobalIndexType, Key > UniqueContainerType; typedef tnlIndexedSet< SeedType, GlobalIndexType, Key > SeedIndexedSetType; typedef tnlArray< SeedType, tnlHost, GlobalIndexType > SeedArrayType; typedef tnlArray< ReferenceOrientationType, tnlHost, GlobalIndexType > ReferenceOrientationArrayType; - typedef tnlConstSharedArray< Type, tnlHost, GlobalIndexType > SharedArrayType; + typedef tnlConstSharedArray< EntityType, tnlHost, GlobalIndexType > SharedArrayType; }; diff --git a/src/mesh/traits/tnlMeshSubentitiesTraits.h b/src/mesh/traits/tnlMeshSubentitiesTraits.h index c9aebcb92b..fef2e4b06f 100644 --- a/src/mesh/traits/tnlMeshSubentitiesTraits.h +++ b/src/mesh/traits/tnlMeshSubentitiesTraits.h @@ -23,28 +23,29 @@ #include <mesh/tnlMeshEntity.h> #include <mesh/config/tnlMeshConfigBase.h> #include <mesh/topologies/tnlMeshEntityTopology.h> -#include <mesh/tnlMeshEntitySeed.h> -#include <mesh/tnlMeshEntityOrientation.h> -template< typename ConfigTag, + +template< typename MeshConfig, typename EntityTopology > class tnlMeshEntityOrientation; + +template< typename MeshConfig, typename EntityTag, - typename DimensionsTag > + int Dimensions > class tnlMeshSubentitiesTraits { public: - static const bool storageEnabled = ConfigTag::subentityStorage( EntityTag(), DimensionsTag::value ); - static const bool orientationEnabled = ConfigTag::subentityOrientationStorage( EntityTag(), DimensionsTag::value ); + static const bool storageEnabled = MeshConfig::subentityStorage( EntityTag(), Dimensions ); + static const bool orientationEnabled = MeshConfig::subentityOrientationStorage( EntityTag(), Dimensions ); - typedef typename ConfigTag::GlobalIndexType GlobalIndexType; - typedef typename ConfigTag::LocalIndexType LocalIndexType; - typedef tnlSubentities< EntityTag, DimensionsTag::value > Tag; + typedef typename MeshConfig::GlobalIndexType GlobalIndexType; + typedef typename MeshConfig::LocalIndexType LocalIndexType; + typedef tnlSubentities< EntityTag, Dimensions > Tag; - typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; + typedef tnlMeshEntity< MeshConfig, EntityTag > EntityType; typedef typename Tag::Tag SubentityTag; - typedef tnlMeshEntity< ConfigTag, SubentityTag > SubentityType; - typedef tnlMeshEntitySeed< ConfigTag, SubentityTag > Seed; - typedef tnlMeshEntityOrientation< ConfigTag, SubentityTag > Orientation; + typedef tnlMeshEntity< MeshConfig, SubentityTag > SubentityType; + typedef tnlMeshEntitySeed< MeshConfig, SubentityTag > Seed; + typedef tnlMeshEntityOrientation< MeshConfig, SubentityTag > Orientation; typedef tnlStorageTraits< storageEnabled > SubentityStorageTag; @@ -70,7 +71,7 @@ class tnlMeshSubentitiesTraits subentityVertexIndex>::index }; }; - static_assert( EntityTag::dimensions > DimensionsTag::value, "You try to create subentities traits where subentity dimensions are not smaller than the entity dimensions." ); + static_assert( EntityTag::dimensions > Dimensions, "You try to create subentities traits where subentity dimensions are not smaller than the entity dimensions." ); }; diff --git a/src/mesh/traits/tnlMeshSuperentitiesTraits.h b/src/mesh/traits/tnlMeshSuperentitiesTraits.h index 131991d48c..3af7ec8c71 100644 --- a/src/mesh/traits/tnlMeshSuperentitiesTraits.h +++ b/src/mesh/traits/tnlMeshSuperentitiesTraits.h @@ -26,24 +26,24 @@ #include <mesh/topologies/tnlMeshEntityTopology.h> #include <mesh/traits/tnlMeshEntitiesTraits.h> -template< typename ConfigTag, +template< typename MeshConfig, typename EntityTag, typename DimensionsTag > class tnlMeshSuperentitiesTraits { - typedef typename ConfigTag::GlobalIndexType GlobalIndexType; - typedef typename ConfigTag::LocalIndexType LocalIndexType; + typedef typename MeshConfig::GlobalIndexType GlobalIndexType; + typedef typename MeshConfig::LocalIndexType LocalIndexType; public: - static const bool storageEnabled = ConfigTag::template superentityStorage< EntityTag >( EntityTag(), DimensionsTag::value ); - typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; + static const bool storageEnabled = MeshConfig::template superentityStorage< EntityTag >( EntityTag(), DimensionsTag::value ); + typedef tnlMeshEntity< MeshConfig, EntityTag > EntityType; typedef typename - tnlMeshEntitiesTraits< ConfigTag, - DimensionsTag >::Tag SuperentityTag; + tnlMeshEntitiesTraits< MeshConfig, + DimensionsTag::value >::Tag SuperentityTag; typedef typename - tnlMeshEntitiesTraits< ConfigTag, - DimensionsTag >::Type SuperentityType; + tnlMeshEntitiesTraits< MeshConfig, + DimensionsTag::value >::EntityType SuperentityType; typedef tnlStorageTraits< storageEnabled > SuperentityStorageTag; diff --git a/src/mesh/traits/tnlMeshTraits.h b/src/mesh/traits/tnlMeshTraits.h index adf701250f..dd2b737233 100644 --- a/src/mesh/traits/tnlMeshTraits.h +++ b/src/mesh/traits/tnlMeshTraits.h @@ -20,18 +20,16 @@ #include <core/vectors/tnlStaticVector.h> #include <core/arrays/tnlArray.h> +#include <core/arrays/tnlSharedArray.h> +#include <core/arrays/tnlConstSharedArray.h> #include <mesh/tnlDimensionsTag.h> -#include <mesh/topologies/tnlMeshVertexTag.h> - - -template< typename ConfigTag, - typename EntityTag > -class tnlMeshEntity; - -template< typename ConfigTag, - typename EntityTag > -class tnlMeshEntitySeed; +struct tnlMeshVertexTag; +template< typename MeshConfig, typename EntityTag > class tnlMeshEntity; +template< typename MeshConfig, typename EntityTag > class tnlMeshEntitySeed; +template< typename MeshConfig, int Dimensions > class tnlMeshEntitiesTraits; +template< typename MeshConfig, typename MeshEntity, int SubDimensions > class tnlMeshSubentitiesTraits; +template< typename MeshConfig, typename MeshEntity, typename SuperDimensions > class tnlMeshSuperentitiesTraits; template< typename MeshConfig, typename Device = tnlHost > @@ -56,6 +54,19 @@ class tnlMeshTraits typedef tnlArray< PointType, tnlHost, GlobalIndexType > PointArrayType; typedef tnlArray< CellSeedType, tnlHost, GlobalIndexType > CellSeedArrayType; + typedef tnlArray< GlobalIndexType, tnlHost, GlobalIndexType > GlobalIdArrayType; + typedef tnlConstSharedArray< GlobalIndexType, tnlHost, LocalIndexType > IdArrayAccessorType; + typedef tnlConstSharedArray< LocalIndexType, tnlHost, LocalIndexType > IdPermutationArrayAccessorType; + + template< int Dimensions > using EntityTraits = + tnlMeshEntitiesTraits< MeshConfig, Dimensions >; + + template< typename MeshEntity, int SubDimensions > using SubentityTraits = + tnlMeshSubentitiesTraits< MeshConfig, MeshEntity, SubDimensions >; + + template< typename MeshEntity, typename SuperDimensions > using SuperentityTraits = + tnlMeshSuperentitiesTraits< MeshConfig, MeshEntity, SuperDimensions >; + }; diff --git a/src/solvers/tnlBuildConfigTags.h b/src/solvers/tnlBuildConfigTags.h index 5b094846fb..f19daad01d 100644 --- a/src/solvers/tnlBuildConfigTags.h +++ b/src/solvers/tnlBuildConfigTags.h @@ -1,5 +1,5 @@ /*************************************************************************** - tnlConfigTags.h - description + tnlMeshConfigs.h - description ------------------- begin : Jul 7, 2014 copyright : (C) 2014 by Tomas Oberhuber @@ -15,56 +15,56 @@ * * ***************************************************************************/ -#ifndef TNLCONFIGTAGS_H_ -#define TNLCONFIGTAGS_H_ +#ifndef TNLMeshConfigS_H_ +#define TNLMeshConfigS_H_ #include <mesh/tnlGrid.h> -class tnlDefaultBuildConfigTag{}; +class tnlDefaultBuildMeshConfig{}; /**** * All devices are enabled by default. Those which are not available * are disabled. */ -template< typename ConfigTag, typename Device > struct tnlConfigTagDevice{ enum { enabled = true }; }; +template< typename MeshConfig, typename Device > struct tnlMeshConfigDevice{ enum { enabled = true }; }; #ifndef HAVE_CUDA -template< typename ConfigTag > struct tnlConfigTagDevice< ConfigTag, tnlCuda >{ enum { enabled = false }; }; +template< typename MeshConfig > struct tnlMeshConfigDevice< MeshConfig, tnlCuda >{ enum { enabled = false }; }; #endif /**** * All real types are enabled by default. */ -template< typename ConfigTag, typename Real > struct tnlConfigTagReal{ enum { enabled = true }; }; +template< typename MeshConfig, typename Real > struct tnlMeshConfigReal{ enum { enabled = true }; }; /**** * All index types are enabled ba default. */ -template< typename ConfigTag, typename Index > struct tnlConfigTagIndex{ enum { enabled = true }; }; +template< typename MeshConfig, typename Index > struct tnlMeshConfigIndex{ enum { enabled = true }; }; /**** * The mesh type will be resolved by the tnlSolver by default. */ -template< typename ConfigTag > struct tnlConfigTagMeshResolve{ enum { enabled = true }; }; +template< typename MeshConfig > struct tnlMeshConfigMeshResolve{ enum { enabled = true }; }; /**** * 1, 2, and 3 dimensions are enabled by default */ -template< typename ConfigTag, int Dimensions > struct tnlConfigTagDimensions{ enum { enabled = false }; }; - template< typename ConfigTag > struct tnlConfigTagDimensions< ConfigTag, 1 >{ enum { enabled = true }; }; - template< typename ConfigTag > struct tnlConfigTagDimensions< ConfigTag, 2 >{ enum { enabled = true }; }; - template< typename ConfigTag > struct tnlConfigTagDimensions< ConfigTag, 3 >{ enum { enabled = true }; }; +template< typename MeshConfig, int Dimensions > struct tnlMeshConfigDimensions{ enum { enabled = false }; }; + template< typename MeshConfig > struct tnlMeshConfigDimensions< MeshConfig, 1 >{ enum { enabled = true }; }; + template< typename MeshConfig > struct tnlMeshConfigDimensions< MeshConfig, 2 >{ enum { enabled = true }; }; + template< typename MeshConfig > struct tnlMeshConfigDimensions< MeshConfig, 3 >{ enum { enabled = true }; }; /**** * Up to the exceptions enlisted below, all mesh types are disabled by default. */ -template< typename ConfigTag, typename MeshType > struct tnlConfigTagMesh{ enum { enabled = false }; }; +template< typename MeshConfig, typename MeshType > struct tnlMeshConfigMesh{ enum { enabled = false }; }; /**** * Use of tnlGrid is enabled for allowed dimensions by default. */ -template< typename ConfigTag, int Dimensions, typename Real, typename Device, typename Index > - struct tnlConfigTagMesh< ConfigTag, tnlGrid< Dimensions, Real, Device, Index > > - { enum { enabled = tnlConfigTagDimensions< ConfigTag, Dimensions >::enabled }; }; +template< typename MeshConfig, int Dimensions, typename Real, typename Device, typename Index > + struct tnlMeshConfigMesh< MeshConfig, tnlGrid< Dimensions, Real, Device, Index > > + { enum { enabled = tnlMeshConfigDimensions< MeshConfig, Dimensions >::enabled }; }; /**** * All time discretisations (explicit, semi-impicit and implicit ) are @@ -74,7 +74,7 @@ class tnlExplicitTimeDiscretisationTag{}; class tnlSemiImplicitTimeDiscretisationTag{}; class tnlImplicitTimeDiscretisationTag{}; -template< typename ConfigTag, typename TimeDiscretisation > struct tnlConfigTagTimeDiscretisation{ enum { enabled = true }; }; +template< typename MeshConfig, typename TimeDiscretisation > struct tnlMeshConfigTimeDiscretisation{ enum { enabled = true }; }; /**** * All explicit solvers are enabled by default @@ -82,7 +82,7 @@ template< typename ConfigTag, typename TimeDiscretisation > struct tnlConfigTagT class tnlExplicitEulerSolverTag{}; class tnlExplicitMersonSolverTag{}; -template< typename ConfigTag, typename ExplicitSolver > struct tnlConfigTagExplicitSolver{ enum { enabled = true }; }; +template< typename MeshConfig, typename ExplicitSolver > struct tnlMeshConfigExplicitSolver{ enum { enabled = true }; }; /**** * All semi-implicit solvers are enabled by default @@ -93,6 +93,6 @@ class tnlSemiImplicitCGSolverTag{}; class tnlSemiImplicitBICGStabSolverTag{}; class tnlSemiImplicitGMRESSolverTag{}; -template< typename ConfigTag, typename SemiImplicitSolver > struct tnlConfigTagSemiImplicitSolver{ enum { enabled = true }; }; +template< typename MeshConfig, typename SemiImplicitSolver > struct tnlMeshConfigSemiImplicitSolver{ enum { enabled = true }; }; -#endif /* TNLCONFIGTAGS_H_ */ +#endif /* TNLMeshConfigS_H_ */ diff --git a/src/solvers/tnlFastBuildConfigTag.h b/src/solvers/tnlFastBuildConfigTag.h index 23b603cf7a..11b8977539 100644 --- a/src/solvers/tnlFastBuildConfigTag.h +++ b/src/solvers/tnlFastBuildConfigTag.h @@ -30,35 +30,35 @@ class tnlFastBuildConfig /**** * Turn off support for float and long double. */ -template<> struct tnlConfigTagReal< tnlFastBuildConfig, float > { enum { enabled = false }; }; -template<> struct tnlConfigTagReal< tnlFastBuildConfig, long double > { enum { enabled = false }; }; +template<> struct tnlMeshConfigReal< tnlFastBuildConfig, float > { enum { enabled = false }; }; +template<> struct tnlMeshConfigReal< tnlFastBuildConfig, long double > { enum { enabled = false }; }; /**** * Turn off support for short int and long int indexing. */ -template<> struct tnlConfigTagIndex< tnlFastBuildConfig, short int >{ enum { enabled = false }; }; -template<> struct tnlConfigTagIndex< tnlFastBuildConfig, long int >{ enum { enabled = false }; }; +template<> struct tnlMeshConfigIndex< tnlFastBuildConfig, short int >{ enum { enabled = false }; }; +template<> struct tnlMeshConfigIndex< tnlFastBuildConfig, long int >{ enum { enabled = false }; }; /**** * Use of tnlGrid is enabled for allowed dimensions and Real, Device and Index types. */ template< int Dimensions, typename Real, typename Device, typename Index > - struct tnlConfigTagMesh< tnlFastBuildConfig, tnlGrid< Dimensions, Real, Device, Index > > - { enum { enabled = tnlConfigTagDimensions< tnlFastBuildConfig, Dimensions >::enabled && - tnlConfigTagReal< tnlFastBuildConfig, Real >::enabled && - tnlConfigTagDevice< tnlFastBuildConfig, Device >::enabled && - tnlConfigTagIndex< tnlFastBuildConfig, Index >::enabled }; }; + struct tnlMeshConfigMesh< tnlFastBuildConfig, tnlGrid< Dimensions, Real, Device, Index > > + { enum { enabled = tnlMeshConfigDimensions< tnlFastBuildConfig, Dimensions >::enabled && + tnlMeshConfigReal< tnlFastBuildConfig, Real >::enabled && + tnlMeshConfigDevice< tnlFastBuildConfig, Device >::enabled && + tnlMeshConfigIndex< tnlFastBuildConfig, Index >::enabled }; }; /**** * Please, chose your preferred time discretisation here. */ -template<> struct tnlConfigTagTimeDiscretisation< tnlFastBuildConfig, tnlExplicitTimeDiscretisationTag >{ enum { enabled = true }; }; -template<> struct tnlConfigTagTimeDiscretisation< tnlFastBuildConfig, tnlSemiImplicitTimeDiscretisationTag >{ enum { enabled = true }; }; -template<> struct tnlConfigTagTimeDiscretisation< tnlFastBuildConfig, tnlImplicitTimeDiscretisationTag >{ enum { enabled = false }; }; +template<> struct tnlMeshConfigTimeDiscretisation< tnlFastBuildConfig, tnlExplicitTimeDiscretisationTag >{ enum { enabled = true }; }; +template<> struct tnlMeshConfigTimeDiscretisation< tnlFastBuildConfig, tnlSemiImplicitTimeDiscretisationTag >{ enum { enabled = true }; }; +template<> struct tnlMeshConfigTimeDiscretisation< tnlFastBuildConfig, tnlImplicitTimeDiscretisationTag >{ enum { enabled = false }; }; /**** * Only the Runge-Kutta-Merson solver is enabled by default. */ -template<> struct tnlConfigTagExplicitSolver< tnlFastBuildConfig, tnlExplicitEulerSolverTag >{ enum { enabled = false }; }; +template<> struct tnlMeshConfigExplicitSolver< tnlFastBuildConfig, tnlExplicitEulerSolverTag >{ enum { enabled = false }; }; #endif /* TNLDEFAULTCONFIG_H_ */ diff --git a/src/solvers/tnlMeshTypeResolver.h b/src/solvers/tnlMeshTypeResolver.h index f10b8d8ab3..702fab91e6 100644 --- a/src/solvers/tnlMeshTypeResolver.h +++ b/src/solvers/tnlMeshTypeResolver.h @@ -20,34 +20,34 @@ #include <config/tnlParameterContainer.h> -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, - typename ConfigTag, - bool ResolveMesh = tnlConfigTagMeshResolve< ConfigTag >::enabled > + typename MeshConfig, + bool ResolveMesh = tnlMeshConfigMeshResolve< MeshConfig >::enabled > class tnlMeshTypeResolver { }; -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, - typename ConfigTag > -class tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, false > + typename MeshConfig > +class tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, false > { public: static bool run( const tnlParameterContainer& parameters ); }; -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, - typename ConfigTag > -class tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true > + typename MeshConfig > +class tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, true > { public: diff --git a/src/solvers/tnlMeshTypeResolver_impl.h b/src/solvers/tnlMeshTypeResolver_impl.h index 427fff4265..a50b15df3a 100644 --- a/src/solvers/tnlMeshTypeResolver_impl.h +++ b/src/solvers/tnlMeshTypeResolver_impl.h @@ -23,37 +23,37 @@ #include <mesh/tnlDummyMesh.h> #include <solvers/tnlSolverStarter.h> -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, typename MeshType, - typename ConfigTag, - bool MeshTypeSupported = tnlConfigTagMesh< ConfigTag, MeshType >::enabled > + typename MeshConfig, + bool MeshTypeSupported = tnlMeshConfigMesh< MeshConfig, MeshType >::enabled > class tnlMeshResolverTerminator{}; -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, - typename ConfigTag > -bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, false >::run( const tnlParameterContainer& parameters ) + typename MeshConfig > +bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, false >::run( const tnlParameterContainer& parameters ) { return ProblemSetter< Real, Device, Index, tnlDummyMesh< Real, Device, Index >, - ConfigTag, - tnlSolverStarter< ConfigTag > >::template run< Real, Device, Index, ConfigTag >( parameters ); + MeshConfig, + tnlSolverStarter< MeshConfig > >::template run< Real, Device, Index, MeshConfig >( parameters ); }; -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, - typename ConfigTag > -bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >::run( const tnlParameterContainer& parameters ) + typename MeshConfig > +bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, true >::run( const tnlParameterContainer& parameters ) { const tnlString& meshFileName = parameters.getParameter< tnlString >( "mesh" ); @@ -73,12 +73,12 @@ bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >: return resolveMeshDimensions( parameters, parsedMeshType ); } -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, - typename ConfigTag > -bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >::resolveMeshDimensions( const tnlParameterContainer& parameters, + typename MeshConfig > +bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, true >::resolveMeshDimensions( const tnlParameterContainer& parameters, const tnlList< tnlString >& parsedMeshType ) { int dimensions = atoi( parsedMeshType[ 1 ].getString() ); @@ -93,13 +93,13 @@ bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >: return false; } -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, - typename ConfigTag > + typename MeshConfig > template< int MeshDimensions > -bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >::resolveMeshRealType( const tnlParameterContainer& parameters, +bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, true >::resolveMeshRealType( const tnlParameterContainer& parameters, const tnlList< tnlString >& parsedMeshType ) { if( parsedMeshType[ 2 ] == "float" ) @@ -112,14 +112,14 @@ bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >: return false; } -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, - typename ConfigTag > + typename MeshConfig > template< int MeshDimensions, typename MeshRealType > -bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, 1 >::resolveMeshIndexType( const tnlParameterContainer& parameters, +bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, 1 >::resolveMeshIndexType( const tnlParameterContainer& parameters, const tnlList< tnlString >& parsedMeshType ) { if( parsedMeshType[ 4 ] == "short int" ) @@ -132,33 +132,33 @@ bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, 1 >::re return false; } -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, - typename ConfigTag > + typename MeshConfig > template< int MeshDimensions, typename MeshRealType, typename MeshIndexType > -bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >::resolveMeshType( const tnlParameterContainer& parameters, +bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, true >::resolveMeshType( const tnlParameterContainer& parameters, const tnlList< tnlString >& parsedMeshType ) { if( parsedMeshType[ 0 ] == "tnlGrid" ) { typedef tnlGrid< MeshDimensions, MeshRealType, Device, MeshIndexType > MeshType; - return tnlMeshResolverTerminator< ProblemSetter, Real, Device, Index, MeshType, ConfigTag >::run( parameters ); + return tnlMeshResolverTerminator< ProblemSetter, Real, Device, Index, MeshType, MeshConfig >::run( parameters ); } cerr << "Unknown mesh type " << parsedMeshType[ 0 ] << "." << endl; return false; } -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, typename MeshType, - typename ConfigTag > -class tnlMeshResolverTerminator< ProblemSetter, Real, Device, Index, MeshType, ConfigTag, false > + typename MeshConfig > +class tnlMeshResolverTerminator< ProblemSetter, Real, Device, Index, MeshType, MeshConfig, false > { public: static bool run( const tnlParameterContainer& parameters ) @@ -168,18 +168,18 @@ class tnlMeshResolverTerminator< ProblemSetter, Real, Device, Index, MeshType, C }; }; -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, typename MeshType, - typename ConfigTag > -class tnlMeshResolverTerminator< ProblemSetter, Real, Device, Index, MeshType, ConfigTag, true > + typename MeshConfig > +class tnlMeshResolverTerminator< ProblemSetter, Real, Device, Index, MeshType, MeshConfig, true > { public: static bool run( const tnlParameterContainer& parameters ) { - return ProblemSetter< Real, Device, Index, MeshType, ConfigTag, tnlSolverStarter< ConfigTag > >::run( parameters ); + return ProblemSetter< Real, Device, Index, MeshType, MeshConfig, tnlSolverStarter< MeshConfig > >::run( parameters ); } }; diff --git a/src/solvers/tnlSolver.h b/src/solvers/tnlSolver.h index 9e4040d87a..aeff94b700 100644 --- a/src/solvers/tnlSolver.h +++ b/src/solvers/tnlSolver.h @@ -20,9 +20,9 @@ #include <solvers/tnlBuildConfigTags.h> -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, template< typename ConfTag > class ProblemConfig, - typename ConfigTag = tnlDefaultBuildConfigTag > + typename MeshConfig = tnlDefaultBuildMeshConfig > class tnlSolver { public: diff --git a/src/solvers/tnlSolverConfig.h b/src/solvers/tnlSolverConfig.h index d266fa8021..446bb65632 100644 --- a/src/solvers/tnlSolverConfig.h +++ b/src/solvers/tnlSolverConfig.h @@ -20,7 +20,7 @@ #include <config/tnlConfigDescription.h> -template< typename ConfigTag, +template< typename MeshConfig, typename ProblemConfig > class tnlSolverConfig { diff --git a/src/solvers/tnlSolverConfig_impl.h b/src/solvers/tnlSolverConfig_impl.h index 329b033591..728de597cd 100644 --- a/src/solvers/tnlSolverConfig_impl.h +++ b/src/solvers/tnlSolverConfig_impl.h @@ -24,9 +24,9 @@ #include <solvers/pde/tnlExplicitTimeStepper.h> #include <solvers/pde/tnlPDESolver.h> -template< typename ConfigTag, +template< typename MeshConfig, typename ProblemConfig > -bool tnlSolverConfig< ConfigTag, ProblemConfig >::configSetup( tnlConfigDescription& config ) +bool tnlSolverConfig< MeshConfig, ProblemConfig >::configSetup( tnlConfigDescription& config ) { typedef tnlDummyProblem< double, tnlHost, int > DummyProblem; @@ -37,11 +37,11 @@ bool tnlSolverConfig< ConfigTag, ProblemConfig >::configSetup( tnlConfigDescript config.addEntry< tnlString >( "real-type", "Precision of the floating point arithmetics.", "double" ); - if( tnlConfigTagReal< ConfigTag, float >::enabled ) + if( tnlMeshConfigReal< MeshConfig, float >::enabled ) config.addEntryEnum( "float" ); - if( tnlConfigTagReal< ConfigTag, double >::enabled ) + if( tnlMeshConfigReal< MeshConfig, double >::enabled ) config.addEntryEnum( "double" ); - if( tnlConfigTagReal< ConfigTag, long double >::enabled ) + if( tnlMeshConfigReal< MeshConfig, long double >::enabled ) config.addEntryEnum( "long-double" ); /**** @@ -50,10 +50,10 @@ bool tnlSolverConfig< ConfigTag, ProblemConfig >::configSetup( tnlConfigDescript config.addEntry< tnlString >( "device", "Device to use for the computations.", "host" ); - if( tnlConfigTagDevice< ConfigTag, tnlHost >::enabled ) + if( tnlMeshConfigDevice< MeshConfig, tnlHost >::enabled ) config.addEntryEnum( "host" ); #ifdef HAVE_CUDA - if( tnlConfigTagDevice< ConfigTag, tnlCuda >::enabled ) + if( tnlMeshConfigDevice< MeshConfig, tnlCuda >::enabled ) config.addEntryEnum( "cuda" ); #endif @@ -63,13 +63,13 @@ bool tnlSolverConfig< ConfigTag, ProblemConfig >::configSetup( tnlConfigDescript config.addEntry< tnlString >( "index-type", "Indexing type for arrays, vectors, matrices etc.", "int" ); - if( tnlConfigTagIndex< ConfigTag, short int >::enabled ) + if( tnlMeshConfigIndex< MeshConfig, short int >::enabled ) config.addEntryEnum( "short-int" ); - if( tnlConfigTagIndex< ConfigTag, int >::enabled ) + if( tnlMeshConfigIndex< MeshConfig, int >::enabled ) config.addEntryEnum( "int" ); - if( tnlConfigTagIndex< ConfigTag, long int >::enabled ) + if( tnlMeshConfigIndex< MeshConfig, long int >::enabled ) config.addEntryEnum( "long-int" ); /**** @@ -86,64 +86,64 @@ bool tnlSolverConfig< ConfigTag, ProblemConfig >::configSetup( tnlConfigDescript typedef tnlExplicitTimeStepper< DummyProblem, tnlEulerSolver > ExplicitTimeStepper; tnlPDESolver< DummyProblem, ExplicitTimeStepper >::configSetup( config ); ExplicitTimeStepper::configSetup( config ); - if( tnlConfigTagTimeDiscretisation< ConfigTag, tnlExplicitTimeDiscretisationTag >::enabled || - tnlConfigTagTimeDiscretisation< ConfigTag, tnlSemiImplicitTimeDiscretisationTag >::enabled || - tnlConfigTagTimeDiscretisation< ConfigTag, tnlImplicitTimeDiscretisationTag >::enabled ) + if( tnlMeshConfigTimeDiscretisation< MeshConfig, tnlExplicitTimeDiscretisationTag >::enabled || + tnlMeshConfigTimeDiscretisation< MeshConfig, tnlSemiImplicitTimeDiscretisationTag >::enabled || + tnlMeshConfigTimeDiscretisation< MeshConfig, tnlImplicitTimeDiscretisationTag >::enabled ) { config.addRequiredEntry< tnlString >( "time-discretisation", "Discratisation in time."); - if( tnlConfigTagTimeDiscretisation< ConfigTag, tnlExplicitTimeDiscretisationTag >::enabled ) + if( tnlMeshConfigTimeDiscretisation< MeshConfig, tnlExplicitTimeDiscretisationTag >::enabled ) config.addEntryEnum( "explicit" ); - if( tnlConfigTagTimeDiscretisation< ConfigTag, tnlSemiImplicitTimeDiscretisationTag >::enabled ) + if( tnlMeshConfigTimeDiscretisation< MeshConfig, tnlSemiImplicitTimeDiscretisationTag >::enabled ) config.addEntryEnum( "semi-implicit" ); - if( tnlConfigTagTimeDiscretisation< ConfigTag, tnlImplicitTimeDiscretisationTag >::enabled ) + if( tnlMeshConfigTimeDiscretisation< MeshConfig, tnlImplicitTimeDiscretisationTag >::enabled ) config.addEntryEnum( "implicit" ); } config.addRequiredEntry< tnlString >( "discrete-solver", "The solver of the discretised problem:" ); - if( tnlConfigTagTimeDiscretisation< ConfigTag, tnlExplicitTimeDiscretisationTag >::enabled ) + if( tnlMeshConfigTimeDiscretisation< MeshConfig, tnlExplicitTimeDiscretisationTag >::enabled ) { - if( tnlConfigTagExplicitSolver< ConfigTag, tnlExplicitEulerSolverTag >::enabled ) + if( tnlMeshConfigExplicitSolver< MeshConfig, tnlExplicitEulerSolverTag >::enabled ) config.addEntryEnum( "euler" ); - if( tnlConfigTagExplicitSolver< ConfigTag, tnlExplicitMersonSolverTag >::enabled ) + if( tnlMeshConfigExplicitSolver< MeshConfig, tnlExplicitMersonSolverTag >::enabled ) config.addEntryEnum( "merson" ); } - if( tnlConfigTagTimeDiscretisation< ConfigTag, tnlSemiImplicitTimeDiscretisationTag >::enabled ) + if( tnlMeshConfigTimeDiscretisation< MeshConfig, tnlSemiImplicitTimeDiscretisationTag >::enabled ) { - if( tnlConfigTagSemiImplicitSolver< ConfigTag, tnlSemiImplicitCGSolverTag >::enabled ) + if( tnlMeshConfigSemiImplicitSolver< MeshConfig, tnlSemiImplicitCGSolverTag >::enabled ) config.addEntryEnum( "cg" ); - if( tnlConfigTagSemiImplicitSolver< ConfigTag, tnlSemiImplicitBICGStabSolverTag >::enabled ) + if( tnlMeshConfigSemiImplicitSolver< MeshConfig, tnlSemiImplicitBICGStabSolverTag >::enabled ) config.addEntryEnum( "bicgstab" ); - if( tnlConfigTagSemiImplicitSolver< ConfigTag, tnlSemiImplicitGMRESSolverTag >::enabled ) + if( tnlMeshConfigSemiImplicitSolver< MeshConfig, tnlSemiImplicitGMRESSolverTag >::enabled ) config.addEntryEnum( "gmres" ); - if( tnlConfigTagSemiImplicitSolver< ConfigTag, tnlSemiImplicitSORSolverTag >::enabled ) + if( tnlMeshConfigSemiImplicitSolver< MeshConfig, tnlSemiImplicitSORSolverTag >::enabled ) config.addEntryEnum( "sor" ); } - if( tnlConfigTagTimeDiscretisation< ConfigTag, tnlExplicitTimeDiscretisationTag >::enabled || - tnlConfigTagTimeDiscretisation< ConfigTag, tnlSemiImplicitTimeDiscretisationTag >::enabled ) + if( tnlMeshConfigTimeDiscretisation< MeshConfig, tnlExplicitTimeDiscretisationTag >::enabled || + tnlMeshConfigTimeDiscretisation< MeshConfig, tnlSemiImplicitTimeDiscretisationTag >::enabled ) { config.addDelimiter( " === Iterative solvers parameters === " ); tnlIterativeSolver< double, int >::configSetup( config ); } - if( tnlConfigTagTimeDiscretisation< ConfigTag, tnlExplicitTimeDiscretisationTag >::enabled ) + if( tnlMeshConfigTimeDiscretisation< MeshConfig, tnlExplicitTimeDiscretisationTag >::enabled ) { config.addDelimiter( " === Explicit solvers parameters === " ); tnlExplicitSolver< tnlDummyProblem< double, tnlHost, int > >::configSetup( config ); - if( tnlConfigTagExplicitSolver< ConfigTag, tnlExplicitEulerSolverTag >::enabled ) + if( tnlMeshConfigExplicitSolver< MeshConfig, tnlExplicitEulerSolverTag >::enabled ) tnlEulerSolver< tnlDummyProblem< double, tnlHost, int > >::configSetup( config ); - if( tnlConfigTagExplicitSolver< ConfigTag, tnlExplicitMersonSolverTag >::enabled ) + if( tnlMeshConfigExplicitSolver< MeshConfig, tnlExplicitMersonSolverTag >::enabled ) tnlMersonSolver< tnlDummyProblem< double, tnlHost, int > >::configSetup( config ); } - if( tnlConfigTagTimeDiscretisation< ConfigTag, tnlSemiImplicitTimeDiscretisationTag >::enabled ) + if( tnlMeshConfigTimeDiscretisation< MeshConfig, tnlSemiImplicitTimeDiscretisationTag >::enabled ) { config.addDelimiter( " === Semi-implicit solvers parameters === " ); typedef tnlCSRMatrix< double, tnlHost, int > MatrixType; - if( tnlConfigTagSemiImplicitSolver< ConfigTag, tnlSemiImplicitCGSolverTag >::enabled ) + if( tnlMeshConfigSemiImplicitSolver< MeshConfig, tnlSemiImplicitCGSolverTag >::enabled ) tnlCGSolver< MatrixType >::configSetup( config ); - if( tnlConfigTagSemiImplicitSolver< ConfigTag, tnlSemiImplicitBICGStabSolverTag >::enabled ) + if( tnlMeshConfigSemiImplicitSolver< MeshConfig, tnlSemiImplicitBICGStabSolverTag >::enabled ) tnlBICGStabSolver< MatrixType >::configSetup( config ); - if( tnlConfigTagSemiImplicitSolver< ConfigTag, tnlSemiImplicitGMRESSolverTag >::enabled ) + if( tnlMeshConfigSemiImplicitSolver< MeshConfig, tnlSemiImplicitGMRESSolverTag >::enabled ) tnlGMRESSolver< MatrixType >::configSetup( config ); - if( tnlConfigTagSemiImplicitSolver< ConfigTag, tnlSemiImplicitSORSolverTag >::enabled ) + if( tnlMeshConfigSemiImplicitSolver< MeshConfig, tnlSemiImplicitSORSolverTag >::enabled ) tnlSORSolver< MatrixType >::configSetup( config ); } diff --git a/src/solvers/tnlSolverInitiator.h b/src/solvers/tnlSolverInitiator.h index 525d304c9d..5cad3ee815 100644 --- a/src/solvers/tnlSolverInitiator.h +++ b/src/solvers/tnlSolverInitiator.h @@ -22,8 +22,8 @@ #include <config/tnlParameterContainer.h> #include <solvers/tnlBuildConfigTags.h> -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, - typename ConfigTag > +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, + typename MeshConfig > class tnlSolverInitiator : public tnlObject { public: diff --git a/src/solvers/tnlSolverInitiator_impl.h b/src/solvers/tnlSolverInitiator_impl.h index 0876bd2752..634336602f 100644 --- a/src/solvers/tnlSolverInitiator_impl.h +++ b/src/solvers/tnlSolverInitiator_impl.h @@ -25,48 +25,48 @@ #include <core/tnlHost.h> #include <core/tnlCuda.h> -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, - typename ConfigTag, - bool enabled = tnlConfigTagReal< ConfigTag, Real >::enabled > + typename MeshConfig, + bool enabled = tnlMeshConfigReal< MeshConfig, Real >::enabled > class tnlSolverInitiatorRealResolver{}; -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, - typename ConfigTag, - bool enabled = tnlConfigTagDevice< ConfigTag, Device >::enabled > + typename MeshConfig, + bool enabled = tnlMeshConfigDevice< MeshConfig, Device >::enabled > class tnlSolverInitiatorDeviceResolver{}; -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, - typename ConfigTag, - bool enabled = tnlConfigTagIndex< ConfigTag, Index >::enabled > + typename MeshConfig, + bool enabled = tnlMeshConfigIndex< MeshConfig, Index >::enabled > class tnlSolverInitiatorIndexResolver{}; -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, - typename ConfigTag > -bool tnlSolverInitiator< ProblemSetter, ConfigTag > :: run( const tnlParameterContainer& parameters ) +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, + typename MeshConfig > +bool tnlSolverInitiator< ProblemSetter, MeshConfig > :: run( const tnlParameterContainer& parameters ) { const tnlString& realType = parameters. getParameter< tnlString >( "real-type" ); if( parameters. getParameter< int >( "verbose" ) ) cout << "Setting RealType to ... " << realType << endl; if( realType == "float" ) - return tnlSolverInitiatorRealResolver< ProblemSetter, float, ConfigTag >::run( parameters ); + return tnlSolverInitiatorRealResolver< ProblemSetter, float, MeshConfig >::run( parameters ); if( realType == "double" ) - return tnlSolverInitiatorRealResolver< ProblemSetter, double, ConfigTag >::run( parameters ); + return tnlSolverInitiatorRealResolver< ProblemSetter, double, MeshConfig >::run( parameters ); if( realType == "long-double" ) - return tnlSolverInitiatorRealResolver< ProblemSetter, long double, ConfigTag >::run( parameters ); + return tnlSolverInitiatorRealResolver< ProblemSetter, long double, MeshConfig >::run( parameters ); cerr << "The real type '" << realType << "' is not defined. " << endl; return false; }; -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, - typename ConfigTag > -class tnlSolverInitiatorRealResolver< ProblemSetter, Real, ConfigTag, true > + typename MeshConfig > +class tnlSolverInitiatorRealResolver< ProblemSetter, Real, MeshConfig, true > { public: static bool run( const tnlParameterContainer& parameters ) @@ -76,18 +76,18 @@ class tnlSolverInitiatorRealResolver< ProblemSetter, Real, ConfigTag, true > cout << "Setting DeviceType to ... " << device << endl; if( device == "host" ) - return tnlSolverInitiatorDeviceResolver< ProblemSetter, Real, tnlHost, ConfigTag >::run( parameters ); + return tnlSolverInitiatorDeviceResolver< ProblemSetter, Real, tnlHost, MeshConfig >::run( parameters ); if( device == "cuda" ) - return tnlSolverInitiatorDeviceResolver< ProblemSetter, Real, tnlCuda, ConfigTag >::run( parameters ); + return tnlSolverInitiatorDeviceResolver< ProblemSetter, Real, tnlCuda, MeshConfig >::run( parameters ); cerr << "The device '" << device << "' is not defined. " << endl; return false; } }; -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, - typename ConfigTag > -class tnlSolverInitiatorRealResolver< ProblemSetter, Real, ConfigTag, false > + typename MeshConfig > +class tnlSolverInitiatorRealResolver< ProblemSetter, Real, MeshConfig, false > { public: static bool run( const tnlParameterContainer& parameters ) @@ -97,11 +97,11 @@ class tnlSolverInitiatorRealResolver< ProblemSetter, Real, ConfigTag, false > } }; -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, - typename ConfigTag > -class tnlSolverInitiatorDeviceResolver< ProblemSetter, Real, Device, ConfigTag, true > + typename MeshConfig > +class tnlSolverInitiatorDeviceResolver< ProblemSetter, Real, Device, MeshConfig, true > { public: static bool run( const tnlParameterContainer& parameters ) @@ -110,21 +110,21 @@ class tnlSolverInitiatorDeviceResolver< ProblemSetter, Real, Device, ConfigTag, if( parameters. getParameter< int >( "verbose" ) ) cout << "Setting IndexType to ... " << indexType << endl; if( indexType == "short-int" ) - return tnlSolverInitiatorIndexResolver< ProblemSetter, Real, Device, short int, ConfigTag >::run( parameters ); + return tnlSolverInitiatorIndexResolver< ProblemSetter, Real, Device, short int, MeshConfig >::run( parameters ); if( indexType == "int" ) - return tnlSolverInitiatorIndexResolver< ProblemSetter, Real, Device, int, ConfigTag >::run( parameters ); + return tnlSolverInitiatorIndexResolver< ProblemSetter, Real, Device, int, MeshConfig >::run( parameters ); if( indexType == "long int" ) - return tnlSolverInitiatorIndexResolver< ProblemSetter, Real, Device, long int, ConfigTag >::run( parameters ); + return tnlSolverInitiatorIndexResolver< ProblemSetter, Real, Device, long int, MeshConfig >::run( parameters ); cerr << "The index type '" << indexType << "' is not defined. " << endl; return false; } }; -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, - typename ConfigTag > -class tnlSolverInitiatorDeviceResolver< ProblemSetter, Real, Device, ConfigTag, false > + typename MeshConfig > +class tnlSolverInitiatorDeviceResolver< ProblemSetter, Real, Device, MeshConfig, false > { public: static bool run( const tnlParameterContainer& parameters ) @@ -134,12 +134,12 @@ class tnlSolverInitiatorDeviceResolver< ProblemSetter, Real, Device, ConfigTag, } }; -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, - typename ConfigTag > -class tnlSolverInitiatorIndexResolver< ProblemSetter, Real, Device, Index, ConfigTag, false > + typename MeshConfig > +class tnlSolverInitiatorIndexResolver< ProblemSetter, Real, Device, Index, MeshConfig, false > { public: static bool run( const tnlParameterContainer& parameters ) @@ -149,17 +149,17 @@ class tnlSolverInitiatorIndexResolver< ProblemSetter, Real, Device, Index, Confi } }; -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, typename Real, typename Device, typename Index, - typename ConfigTag > -class tnlSolverInitiatorIndexResolver< ProblemSetter, Real, Device, Index, ConfigTag, true > + typename MeshConfig > +class tnlSolverInitiatorIndexResolver< ProblemSetter, Real, Device, Index, MeshConfig, true > { public: static bool run( const tnlParameterContainer& parameters ) { - return tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag >::run( parameters ); + return tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig >::run( parameters ); } }; diff --git a/src/solvers/tnlSolverStarter.h b/src/solvers/tnlSolverStarter.h index a2f604bedc..7b9bc2d8f3 100644 --- a/src/solvers/tnlSolverStarter.h +++ b/src/solvers/tnlSolverStarter.h @@ -23,7 +23,7 @@ #include <core/tnlTimerCPU.h> #include <ostream> -template< typename ConfigTag > +template< typename MeshConfig > class tnlSolverStarter { public: diff --git a/src/solvers/tnlSolverStarter_impl.h b/src/solvers/tnlSolverStarter_impl.h index 09e61c33e2..2f6d9efedd 100644 --- a/src/solvers/tnlSolverStarter_impl.h +++ b/src/solvers/tnlSolverStarter_impl.h @@ -34,49 +34,49 @@ #include <solvers/ode/tnlODESolverMonitor.h> template< typename Problem, - typename ConfigTag, + typename MeshConfig, typename TimeStepper = typename Problem::TimeStepper > class tnlUserDefinedTimeDiscretisationSetter; template< typename Problem, typename TimeDiscretisation, - typename ConfigTag, - bool enabled = tnlConfigTagTimeDiscretisation< ConfigTag, TimeDiscretisation >::enabled > + typename MeshConfig, + bool enabled = tnlMeshConfigTimeDiscretisation< MeshConfig, TimeDiscretisation >::enabled > class tnlSolverStarterTimeDiscretisationSetter{}; template< typename Problem, typename ExplicitSolver, - typename ConfigTag, - bool enabled = tnlConfigTagExplicitSolver< ConfigTag, ExplicitSolver >::enabled > + typename MeshConfig, + bool enabled = tnlMeshConfigExplicitSolver< MeshConfig, ExplicitSolver >::enabled > class tnlSolverStarterExplicitSolverSetter{}; template< typename Problem, typename SemiImplicitSolver, - typename ConfigTag, - bool enabled = tnlConfigTagSemiImplicitSolver< ConfigTag, SemiImplicitSolver >::enabled > + typename MeshConfig, + bool enabled = tnlMeshConfigSemiImplicitSolver< MeshConfig, SemiImplicitSolver >::enabled > class tnlSolverStarterSemiImplicitSolverSetter{}; template< typename Problem, typename ExplicitSolver, typename TimeStepper, - typename ConfigTag > + typename MeshConfig > class tnlSolverStarterExplicitTimeStepperSetter; template< typename Problem, typename TimeStepper, - typename ConfigTag > + typename MeshConfig > class tnlSolverStarterSemiImplicitTimeStepperSetter; -template< typename ConfigTag > -tnlSolverStarter< ConfigTag > :: tnlSolverStarter() +template< typename MeshConfig > +tnlSolverStarter< MeshConfig > :: tnlSolverStarter() : logWidth( 80 ) { } -template< typename ConfigTag > +template< typename MeshConfig > template< typename Problem > -bool tnlSolverStarter< ConfigTag > :: run( const tnlParameterContainer& parameters ) +bool tnlSolverStarter< MeshConfig > :: run( const tnlParameterContainer& parameters ) { /**** * Create and set-up the problem @@ -88,11 +88,11 @@ bool tnlSolverStarter< ConfigTag > :: run( const tnlParameterContainer& paramete return false; } - return tnlUserDefinedTimeDiscretisationSetter< Problem, ConfigTag >::run( problem, parameters ); + return tnlUserDefinedTimeDiscretisationSetter< Problem, MeshConfig >::run( problem, parameters ); } template< typename Problem, - typename ConfigTag, + typename MeshConfig, typename TimeStepper > class tnlUserDefinedTimeDiscretisationSetter { @@ -106,14 +106,14 @@ class tnlUserDefinedTimeDiscretisationSetter cerr << "The time stepper initiation failed!" << endl; return false; } - tnlSolverStarter< ConfigTag > solverStarter; + tnlSolverStarter< MeshConfig > solverStarter; return solverStarter.template runPDESolver< Problem, TimeStepper >( problem, parameters, timeStepper ); } }; template< typename Problem, - typename ConfigTag > -class tnlUserDefinedTimeDiscretisationSetter< Problem, ConfigTag, void > + typename MeshConfig > +class tnlUserDefinedTimeDiscretisationSetter< Problem, MeshConfig, void > { public: static bool run( Problem& problem, @@ -124,11 +124,11 @@ class tnlUserDefinedTimeDiscretisationSetter< Problem, ConfigTag, void > */ const tnlString& timeDiscretisation = parameters. getParameter< tnlString>( "time-discretisation" ); if( timeDiscretisation == "explicit" ) - return tnlSolverStarterTimeDiscretisationSetter< Problem, tnlExplicitTimeDiscretisationTag, ConfigTag >::run( problem, parameters ); + return tnlSolverStarterTimeDiscretisationSetter< Problem, tnlExplicitTimeDiscretisationTag, MeshConfig >::run( problem, parameters ); if( timeDiscretisation == "semi-implicit" ) - return tnlSolverStarterTimeDiscretisationSetter< Problem, tnlSemiImplicitTimeDiscretisationTag, ConfigTag >::run( problem, parameters ); + return tnlSolverStarterTimeDiscretisationSetter< Problem, tnlSemiImplicitTimeDiscretisationTag, MeshConfig >::run( problem, parameters ); if( timeDiscretisation == "implicit" ) - return tnlSolverStarterTimeDiscretisationSetter< Problem, tnlImplicitTimeDiscretisationTag, ConfigTag >::run( problem, parameters ); + return tnlSolverStarterTimeDiscretisationSetter< Problem, tnlImplicitTimeDiscretisationTag, MeshConfig >::run( problem, parameters ); cerr << "Uknown time discretisation: " << timeDiscretisation << "." << endl; return false; } @@ -140,8 +140,8 @@ class tnlUserDefinedTimeDiscretisationSetter< Problem, ConfigTag, void > template< typename Problem, typename TimeDiscretisation, - typename ConfigTag > -class tnlSolverStarterTimeDiscretisationSetter< Problem, TimeDiscretisation, ConfigTag, false > + typename MeshConfig > +class tnlSolverStarterTimeDiscretisationSetter< Problem, TimeDiscretisation, MeshConfig, false > { public: static bool run( Problem& problem, @@ -153,8 +153,8 @@ class tnlSolverStarterTimeDiscretisationSetter< Problem, TimeDiscretisation, Con }; template< typename Problem, - typename ConfigTag > -class tnlSolverStarterTimeDiscretisationSetter< Problem, tnlExplicitTimeDiscretisationTag, ConfigTag, true > + typename MeshConfig > +class tnlSolverStarterTimeDiscretisationSetter< Problem, tnlExplicitTimeDiscretisationTag, MeshConfig, true > { public: static bool run( Problem& problem, @@ -168,16 +168,16 @@ class tnlSolverStarterTimeDiscretisationSetter< Problem, tnlExplicitTimeDiscreti return false; } if( discreteSolver == "euler" ) - return tnlSolverStarterExplicitSolverSetter< Problem, tnlExplicitEulerSolverTag, ConfigTag >::run( problem, parameters ); + return tnlSolverStarterExplicitSolverSetter< Problem, tnlExplicitEulerSolverTag, MeshConfig >::run( problem, parameters ); if( discreteSolver == "merson" ) - return tnlSolverStarterExplicitSolverSetter< Problem, tnlExplicitMersonSolverTag, ConfigTag >::run( problem, parameters ); + return tnlSolverStarterExplicitSolverSetter< Problem, tnlExplicitMersonSolverTag, MeshConfig >::run( problem, parameters ); return false; } }; template< typename Problem, - typename ConfigTag > -class tnlSolverStarterTimeDiscretisationSetter< Problem, tnlSemiImplicitTimeDiscretisationTag, ConfigTag, true > + typename MeshConfig > +class tnlSolverStarterTimeDiscretisationSetter< Problem, tnlSemiImplicitTimeDiscretisationTag, MeshConfig, true > { public: static bool run( Problem& problem, @@ -194,20 +194,20 @@ class tnlSolverStarterTimeDiscretisationSetter< Problem, tnlSemiImplicitTimeDisc } if( discreteSolver == "sor" ) - return tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitSORSolverTag, ConfigTag >::run( problem, parameters ); + return tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitSORSolverTag, MeshConfig >::run( problem, parameters ); if( discreteSolver == "cg" ) - return tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitCGSolverTag, ConfigTag >::run( problem, parameters ); + return tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitCGSolverTag, MeshConfig >::run( problem, parameters ); if( discreteSolver == "bicgstab" ) - return tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitBICGStabSolverTag, ConfigTag >::run( problem, parameters ); + return tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitBICGStabSolverTag, MeshConfig >::run( problem, parameters ); if( discreteSolver == "gmres" ) - return tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitGMRESSolverTag, ConfigTag >::run( problem, parameters ); + return tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitGMRESSolverTag, MeshConfig >::run( problem, parameters ); return false; } }; template< typename Problem, - typename ConfigTag > -class tnlSolverStarterTimeDiscretisationSetter< Problem, tnlImplicitTimeDiscretisationTag, ConfigTag, true > + typename MeshConfig > +class tnlSolverStarterTimeDiscretisationSetter< Problem, tnlImplicitTimeDiscretisationTag, MeshConfig, true > { public: static bool run( Problem& problem, @@ -224,8 +224,8 @@ class tnlSolverStarterTimeDiscretisationSetter< Problem, tnlImplicitTimeDiscreti template< typename Problem, typename ExplicitSolver, - typename ConfigTag > -class tnlSolverStarterExplicitSolverSetter< Problem, ExplicitSolver, ConfigTag, false > + typename MeshConfig > +class tnlSolverStarterExplicitSolverSetter< Problem, ExplicitSolver, MeshConfig, false > { public: static bool run( Problem& problem, @@ -237,8 +237,8 @@ class tnlSolverStarterExplicitSolverSetter< Problem, ExplicitSolver, ConfigTag, }; template< typename Problem, - typename ConfigTag > -class tnlSolverStarterExplicitSolverSetter< Problem, tnlExplicitEulerSolverTag, ConfigTag, true > + typename MeshConfig > +class tnlSolverStarterExplicitSolverSetter< Problem, tnlExplicitEulerSolverTag, MeshConfig, true > { public: static bool run( Problem& problem, @@ -249,13 +249,13 @@ class tnlSolverStarterExplicitSolverSetter< Problem, tnlExplicitEulerSolverTag, return tnlSolverStarterExplicitTimeStepperSetter< Problem, ExplicitSolver, TimeStepper, - ConfigTag >::run( problem, parameters ); + MeshConfig >::run( problem, parameters ); } }; template< typename Problem, - typename ConfigTag > -class tnlSolverStarterExplicitSolverSetter< Problem, tnlExplicitMersonSolverTag, ConfigTag, true > + typename MeshConfig > +class tnlSolverStarterExplicitSolverSetter< Problem, tnlExplicitMersonSolverTag, MeshConfig, true > { public: static bool run( Problem& problem, @@ -266,7 +266,7 @@ class tnlSolverStarterExplicitSolverSetter< Problem, tnlExplicitMersonSolverTag, return tnlSolverStarterExplicitTimeStepperSetter< Problem, ExplicitSolver, TimeStepper, - ConfigTag >::run( problem, parameters ); + MeshConfig >::run( problem, parameters ); } }; @@ -276,8 +276,8 @@ class tnlSolverStarterExplicitSolverSetter< Problem, tnlExplicitMersonSolverTag, template< typename Problem, typename SemiImplicitSolver, - typename ConfigTag > -class tnlSolverStarterSemiImplicitSolverSetter< Problem, SemiImplicitSolver, ConfigTag, false > + typename MeshConfig > +class tnlSolverStarterSemiImplicitSolverSetter< Problem, SemiImplicitSolver, MeshConfig, false > { public: static bool run( Problem& problem, @@ -289,8 +289,8 @@ class tnlSolverStarterSemiImplicitSolverSetter< Problem, SemiImplicitSolver, Con }; template< typename Problem, - typename ConfigTag > -class tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitSORSolverTag, ConfigTag, true > + typename MeshConfig > +class tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitSORSolverTag, MeshConfig, true > { public: static bool run( Problem& problem, @@ -301,13 +301,13 @@ class tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitSORSolve typedef tnlSemiImplicitTimeStepper< Problem, LinearSystemSolver > TimeStepper; return tnlSolverStarterSemiImplicitTimeStepperSetter< Problem, TimeStepper, - ConfigTag >::run( problem, parameters ); + MeshConfig >::run( problem, parameters ); } }; template< typename Problem, - typename ConfigTag > -class tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitCGSolverTag, ConfigTag, true > + typename MeshConfig > +class tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitCGSolverTag, MeshConfig, true > { public: static bool run( Problem& problem, @@ -318,13 +318,13 @@ class tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitCGSolver typedef tnlSemiImplicitTimeStepper< Problem, LinearSystemSolver > TimeStepper; return tnlSolverStarterSemiImplicitTimeStepperSetter< Problem, TimeStepper, - ConfigTag >::run( problem, parameters ); + MeshConfig >::run( problem, parameters ); } }; template< typename Problem, - typename ConfigTag > -class tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitBICGStabSolverTag, ConfigTag, true > + typename MeshConfig > +class tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitBICGStabSolverTag, MeshConfig, true > { public: static bool run( Problem& problem, @@ -335,13 +335,13 @@ class tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitBICGStab typedef tnlSemiImplicitTimeStepper< Problem, LinearSystemSolver > TimeStepper; return tnlSolverStarterSemiImplicitTimeStepperSetter< Problem, TimeStepper, - ConfigTag >::run( problem, parameters ); + MeshConfig >::run( problem, parameters ); } }; template< typename Problem, - typename ConfigTag > -class tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitGMRESSolverTag, ConfigTag, true > + typename MeshConfig > +class tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitGMRESSolverTag, MeshConfig, true > { public: static bool run( Problem& problem, @@ -352,7 +352,7 @@ class tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitGMRESSol typedef tnlSemiImplicitTimeStepper< Problem, LinearSystemSolver > TimeStepper; return tnlSolverStarterSemiImplicitTimeStepperSetter< Problem, TimeStepper, - ConfigTag >::run( problem, parameters ); + MeshConfig >::run( problem, parameters ); } }; @@ -363,7 +363,7 @@ class tnlSolverStarterSemiImplicitSolverSetter< Problem, tnlSemiImplicitGMRESSol template< typename Problem, typename ExplicitSolver, typename TimeStepper, - typename ConfigTag > + typename MeshConfig > class tnlSolverStarterExplicitTimeStepperSetter { public: @@ -393,7 +393,7 @@ class tnlSolverStarterExplicitTimeStepperSetter } timeStepper.setSolver( explicitSolver ); - tnlSolverStarter< ConfigTag > solverStarter; + tnlSolverStarter< MeshConfig > solverStarter; return solverStarter.template runPDESolver< Problem, TimeStepper >( problem, parameters, timeStepper ); }; }; @@ -403,7 +403,7 @@ class tnlSolverStarterExplicitTimeStepperSetter */ template< typename Problem, typename TimeStepper, - typename ConfigTag > + typename MeshConfig > class tnlSolverStarterSemiImplicitTimeStepperSetter { public: @@ -434,7 +434,7 @@ class tnlSolverStarterSemiImplicitTimeStepperSetter } timeStepper.setSolver( linearSystemSolver ); - tnlSolverStarter< ConfigTag > solverStarter; + tnlSolverStarter< MeshConfig > solverStarter; return solverStarter.template runPDESolver< Problem, TimeStepper >( problem, parameters, timeStepper ); }; }; @@ -445,9 +445,9 @@ class tnlSolverStarterSemiImplicitTimeStepperSetter #ifdef UNDEF -template< typename ConfigTag > +template< typename MeshConfig > template< typename Problem > -bool tnlSolverStarter< ConfigTag > :: setDiscreteSolver( Problem& problem, +bool tnlSolverStarter< MeshConfig > :: setDiscreteSolver( Problem& problem, const tnlParameterContainer& parameters ) { if( ( discreteSolver == "sor" || @@ -509,10 +509,10 @@ bool tnlSolverStarter< ConfigTag > :: setDiscreteSolver( Problem& problem, } #endif -template< typename ConfigTag > +template< typename MeshConfig > template< typename Problem, typename TimeStepper > -bool tnlSolverStarter< ConfigTag > :: runPDESolver( Problem& problem, +bool tnlSolverStarter< MeshConfig > :: runPDESolver( Problem& problem, const tnlParameterContainer& parameters, TimeStepper& timeStepper ) { @@ -625,9 +625,9 @@ bool tnlSolverStarter< ConfigTag > :: runPDESolver( Problem& problem, return returnCode; } -template< typename ConfigTag > +template< typename MeshConfig > template< typename Solver > -bool tnlSolverStarter< ConfigTag > :: writeEpilog( ostream& str, const Solver& solver ) +bool tnlSolverStarter< MeshConfig > :: writeEpilog( ostream& str, const Solver& solver ) { tnlLogger logger( logWidth, str ); logger.writeCurrentTime( "Finished at:" ); diff --git a/src/solvers/tnlSolver_impl.h b/src/solvers/tnlSolver_impl.h index 7fa9f6b970..33d9b2fe8b 100644 --- a/src/solvers/tnlSolver_impl.h +++ b/src/solvers/tnlSolver_impl.h @@ -22,21 +22,21 @@ #include <solvers/tnlSolverStarter.h> #include <solvers/tnlSolverConfig.h> -template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, - template< typename ConfigTag > class ProblemConfig, - typename ConfigTag > +template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, + template< typename MeshConfig > class ProblemConfig, + typename MeshConfig > bool -tnlSolver< ProblemSetter, ProblemConfig, ConfigTag >:: +tnlSolver< ProblemSetter, ProblemConfig, MeshConfig >:: run( int argc, char* argv[] ) { tnlParameterContainer parameters; tnlConfigDescription configDescription; - ProblemConfig< ConfigTag >::configSetup( configDescription ); - tnlSolverConfig< ConfigTag, ProblemConfig< ConfigTag> >::configSetup( configDescription ); + ProblemConfig< MeshConfig >::configSetup( configDescription ); + tnlSolverConfig< MeshConfig, ProblemConfig< MeshConfig> >::configSetup( configDescription ); if( ! parseCommandLine( argc, argv, configDescription, parameters ) ) return false; - tnlSolverInitiator< ProblemSetter, ConfigTag > solverInitiator; + tnlSolverInitiator< ProblemSetter, MeshConfig > solverInitiator; return solverInitiator.run( parameters ); }; -- GitLab