Plugins
Loading...
Searching...
No Matches
ug::d3f::ISubmoduleBridge< TGridFunction, dim > Class Template Referenceabstract

Orchestrates the coupling between the main solver and a submodule. More...

#include <i_coupling_bridge.h>

Public Types

typedef TGridFunction::domain_type domain_type
 
typedef domain_type::position_type position_type
 

Public Member Functions

bool apply (SmartPtr< TGridFunction > u, int step, number time, number dt)
 Core coupling step called by the main time integrator. Performs communication, executes the submodule, and finalizes the step.
 
virtual void communicate (number time)=0
 Synchronizes data from the primary domain to the submodule.
 
virtual void finalize (number time)=0
 Performs any final operations after the submodule has finished its step.
 
virtual bool finalize_timestep (SmartPtr< TGridFunction > u, int step, number time, number dt)=0
 
virtual bool init_timestep (SmartPtr< TGridFunction > u, int step, number time, number dt)=0
 
 ISubmoduleBridge ()=default
 
void set_interface (SmartPtr< ISurjectiveInterface< domain_type > > interface)
 Attaches the surjective interface for vertex mapping.
 
void set_submodule (SmartPtr< ISubmodule< TGridFunction > > submodule)
 Attaches the submodule to the bridge.
 
virtual ~ISubmoduleBridge ()=default
 

Protected Attributes

SmartPtr< ISurjectiveInterface< domain_type > > m_interface
 
SmartPtr< ISubmodule< TGridFunction > > m_submodule
 

Friends

class ISubmodule< TGridFunction, dim >
 

Detailed Description

template<typename TGridFunction, int dim = TGridFunction::dim>
class ug::d3f::ISubmoduleBridge< TGridFunction, dim >

Orchestrates the coupling between the main solver and a submodule.

The bridge handles the synchronization points: communication (sending data to the submodule), execution of the submodule, and finalization (reading results back to the main domain).

Template Parameters
TGridFunctionThe grid function type of the primary solver.
dimThe spatial dimension.

Member Typedef Documentation

◆ domain_type

template<typename TGridFunction , int dim = TGridFunction::dim>
typedef TGridFunction::domain_type ug::d3f::ISubmoduleBridge< TGridFunction, dim >::domain_type

◆ position_type

template<typename TGridFunction , int dim = TGridFunction::dim>
typedef domain_type::position_type ug::d3f::ISubmoduleBridge< TGridFunction, dim >::position_type

Constructor & Destructor Documentation

◆ ISubmoduleBridge()

template<typename TGridFunction , int dim = TGridFunction::dim>
ug::d3f::ISubmoduleBridge< TGridFunction, dim >::ISubmoduleBridge ( )
default

◆ ~ISubmoduleBridge()

template<typename TGridFunction , int dim = TGridFunction::dim>
virtual ug::d3f::ISubmoduleBridge< TGridFunction, dim >::~ISubmoduleBridge ( )
virtualdefault

Member Function Documentation

◆ apply()

template<typename TGridFunction , int dim = TGridFunction::dim>
bool ug::d3f::ISubmoduleBridge< TGridFunction, dim >::apply ( SmartPtr< TGridFunction >  u,
int  step,
number  time,
number  dt 
)
inline

Core coupling step called by the main time integrator. Performs communication, executes the submodule, and finalizes the step.

References ug::d3f::ISubmoduleBridge< TGridFunction, dim >::communicate(), and ug::d3f::ISubmoduleBridge< TGridFunction, dim >::finalize().

◆ communicate()

template<typename TGridFunction , int dim = TGridFunction::dim>
virtual void ug::d3f::ISubmoduleBridge< TGridFunction, dim >::communicate ( number  time)
pure virtual

Synchronizes data from the primary domain to the submodule.

Referenced by ug::d3f::ISubmoduleBridge< TGridFunction, dim >::apply().

◆ finalize()

template<typename TGridFunction , int dim = TGridFunction::dim>
virtual void ug::d3f::ISubmoduleBridge< TGridFunction, dim >::finalize ( number  time)
pure virtual

Performs any final operations after the submodule has finished its step.

Referenced by ug::d3f::ISubmoduleBridge< TGridFunction, dim >::apply().

◆ finalize_timestep()

template<typename TGridFunction , int dim = TGridFunction::dim>
virtual bool ug::d3f::ISubmoduleBridge< TGridFunction, dim >::finalize_timestep ( SmartPtr< TGridFunction >  u,
int  step,
number  time,
number  dt 
)
pure virtual

◆ init_timestep()

template<typename TGridFunction , int dim = TGridFunction::dim>
virtual bool ug::d3f::ISubmoduleBridge< TGridFunction, dim >::init_timestep ( SmartPtr< TGridFunction >  u,
int  step,
number  time,
number  dt 
)
pure virtual

◆ set_interface()

template<typename TGridFunction , int dim = TGridFunction::dim>
void ug::d3f::ISubmoduleBridge< TGridFunction, dim >::set_interface ( SmartPtr< ISurjectiveInterface< domain_type > >  interface)
inline

Attaches the surjective interface for vertex mapping.

References ug::d3f::ISubmoduleBridge< TGridFunction, dim >::m_interface.

◆ set_submodule()

template<typename TGridFunction , int dim = TGridFunction::dim>
void ug::d3f::ISubmoduleBridge< TGridFunction, dim >::set_submodule ( SmartPtr< ISubmodule< TGridFunction > >  submodule)
inline

Attaches the submodule to the bridge.

References ug::d3f::ISubmoduleBridge< TGridFunction, dim >::m_submodule.

Friends And Related Symbol Documentation

◆ ISubmodule< TGridFunction, dim >

template<typename TGridFunction , int dim = TGridFunction::dim>
friend class ISubmodule< TGridFunction, dim >
friend

Member Data Documentation

◆ m_interface

template<typename TGridFunction , int dim = TGridFunction::dim>
SmartPtr<ISurjectiveInterface<domain_type> > ug::d3f::ISubmoduleBridge< TGridFunction, dim >::m_interface
protected

◆ m_submodule

template<typename TGridFunction , int dim = TGridFunction::dim>
SmartPtr<ISubmodule<TGridFunction> > ug::d3f::ISubmoduleBridge< TGridFunction, dim >::m_submodule
protected

The documentation for this class was generated from the following file: