Commit 710d2dd3 authored by Tomáš Oberhuber's avatar Tomáš Oberhuber
Browse files

Fixing operator composition.

parent 50480bb0
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -221,7 +221,7 @@ class tnlOperatorFunction< Operator, PreimageFunction, BoundaryConditions, false
      static constexpr int getEntitiesDimensions() { return OperatorType::getImageEntitiesDimensions(); };     
      
      tnlOperatorFunction(
         const OperatorType& operator_,
         OperatorType& operator_,
         const BoundaryConditionsType& boundaryConditions,
         PreimageFunctionType& preimageFunction )
      :  operator_( operator_ ), boundaryConditions( boundaryConditions ), preimageFunction( preimageFunction ), imageFunction( preimageFunction.getMesh() )
@@ -240,7 +240,7 @@ class tnlOperatorFunction< Operator, PreimageFunction, BoundaryConditions, false
      bool refresh( const RealType& time = 0.0 )
      {
         OperatorFunction operatorFunction( this->operator_, this->preimageFunction );
         if( ! this->operator_.refresh() ||
         if( ! this->operator_.refresh( time ) ||
             ! operatorFunction.refresh( time )  )
             return false;
         this->imageFunction = operatorFunction;
@@ -278,7 +278,7 @@ class tnlOperatorFunction< Operator, PreimageFunction, BoundaryConditions, false
      
   protected:
      
      const Operator& operator_;
      Operator& operator_;
      
      PreimageFunctionType& preimageFunction;
      
+7 −3
Original line number Diff line number Diff line
@@ -30,14 +30,18 @@ class tnlOperator : public tnlDomain< Mesh::getMeshDimensions(), DomainType >
   public:
      
      typedef Mesh MeshType;
      typedef typename MeshType::RealType RealType;
      typedef typename MeshType::RealType MeshRealType;
      typedef typename MeshType::DeviceType DeviceType;
      typedef typename MeshType::IndexType IndexType;
      typedef typename MeshType::IndexType MeshIndexType;
      typedef Real RealType;
      typedef Index IndexType;
      
      constexpr static int getDomainEntitiesDimensions() { return DomainEntitiesDimensions; }
      constexpr static int getImageEntitiesDimensions() { return ImageEntitiesDimensions; }
      
      void refresh() {}
      bool refresh( const RealType& time = 0.0 ) { return true; }
      
      bool deepRefresh( const RealType& time = 0.0 ) { return true; }
};
#endif	/* TNLOPERATOR_H */
+7 −3
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ class tnlOperatorComposition
      static constexpr int getImageEntitiesDimensions() { return OuterOperator::getImageEntitiesDimensions(); };
      
      tnlOperatorComposition( const OuterOperator& outerOperator,
                              const InnerOperator& innerOperator,
                              InnerOperator& innerOperator,
                              const InnerBoundaryConditions& innerBoundaryConditions,
                              PreimageFunctionType& preimageFunction )
      : outerOperator( outerOperator ),
@@ -68,18 +68,22 @@ class tnlOperatorComposition
      
      bool refresh( const RealType& time = 0.0 )
      {
         return this->innerOperatorFunction.refresh( time );
         if( ! this->innerOperatorFunction.refresh( time ) )
            return false;
         typename InnerOperatorFunction::ImageFunctionType imageFunction( this->innerOperatorFunction.getMesh() );
         imageFunction = this->innerOperatorFunction;
         imageFunction.write( "innerFunction" );         
         return true;
      }
      
      bool deepRefresh( const RealType& time = 0.0 )
      {
         return this->innerOperatorFunction.deepRefresh( time );
         if( ! this->innerOperatorFunction.deepRefresh( time ) )
            return false;
         typename InnerOperatorFunction::ImageFunctionType imageFunction( this->innerOperatorFunction.getMesh() );
         imageFunction = this->innerOperatorFunction;
         imageFunction.write( "innerFunction" );
         return true;
      }
        
      template< typename MeshFunction, typename MeshEntity >