24class CompositionalCouplingScheme;
25class BiCouplingScheme;
30namespace CplSchemeTests {
31namespace ParallelImplicitCouplingSchemeTests {
32struct testParseConfigurationWithRelaxation;
34namespace SerialImplicitCouplingSchemeTests {
35struct testParseConfigurationWithRelaxation;
42class MultiCouplingScheme;
168 return ex.from == totest.from && ex.to == totest.to && ex.data->getName() == totest.data->getName() && ex.mesh->getName() == totest.mesh->getName();
300 friend struct CplSchemeTests::ParallelImplicitCouplingSchemeTests::testParseConfigurationWithRelaxation;
301 friend struct CplSchemeTests::SerialImplicitCouplingSchemeTests::testParseConfigurationWithRelaxation;
Abstract base class for standard coupling schemes.
Abstract base class for coupling schemes with two participants.
Configuration for coupling schemes.
const std::string TAG_ABS_CONV_MEASURE
const std::string ATTR_NAME
PtrCouplingScheme createSerialExplicitCouplingScheme(const std::string &accessor) const
void checkIterationLimits() const
Helper function to check iteration limits in conjunction with convergence measures.
const std::string VALUE_PARALLEL_IMPLICIT
const PtrCouplingScheme & getCouplingScheme(const std::string &participantName) const
Returns the configured coupling scheme.
precice::config::PtrParticipantConfiguration _participantConfig
const std::string TAG_MAX_TIME_WINDOWS
void addMultiDataToBeExchanged(MultiCouplingScheme &scheme, const std::string &accessor) const
Adds configured exchange data to be sent or received to scheme. Only used specifically for MultiCoupl...
PtrCouplingScheme createSerialImplicitCouplingScheme(const std::string &accessor) const
void addBaseAttributesTagConvergenceMeasure(xml::XMLTag &tag)
const std::string TAG_TIME_WINDOW_SIZE
void setSerialAcceleration(BaseCouplingScheme *scheme, const std::string &first, const std::string &second) const
void addResidualRelativeConvergenceMeasure(const std::string &dataName, const std::string &meshName, double limit, bool suffices, bool strict)
void addTagMinIterations(xml::XMLTag &tag)
const std::string ATTR_SECOND
const std::string ATTR_REL_LIMIT
void addAbsoluteConvergenceMeasure(const std::string &dataName, const std::string &meshName, double limit, bool suffices, bool strict)
const std::string ATTR_INITIALIZE
const std::string TAG_RES_REL_CONV_MEASURE
void addDataToBeExchanged(BiCouplingScheme &scheme, const std::string &accessor) const
Adds configured exchange data to be sent or received to scheme.
void addTagRelativeConvergenceMeasure(xml::XMLTag &tag)
void addTagAcceleration(xml::XMLTag &tag)
const std::string ATTR_METHOD
void addTagParticipant(xml::XMLTag &tag)
struct precice::cplscheme::CouplingSchemeConfiguration::Config _config
void checkSubstepExchangeWaveformDegree(const Config::Exchange &exchange) const
Helper function to check that waveform-degree and substep exchange are compatible.
const std::string VALUE_SERIAL_EXPLICIT
const std::string TAG_REL_CONV_MEASURE
const std::string ATTR_TYPE
const std::string ATTR_VALUE
const std::string VALUE_PARALLEL_EXPLICIT
constants::TimesteppingMethod getTimesteppingMethod(const std::string &method) const
void checkSerialImplicitAccelerationData(DataID dataID, const std::string &first, const std::string &second) const
void addTagAbsoluteConvergenceMeasure(xml::XMLTag &tag)
acceleration::PtrAccelerationConfiguration _accelerationConfig
std::map< std::string, PtrCouplingScheme > _couplingSchemes
Map from participant name to coupling scheme (composition).
const std::string ATTR_LIMIT
const std::string TAG_MIN_ITERATIONS
const std::string TAG_EXCHANGE
CouplingSchemeConfiguration(xml::XMLTag &parent, mesh::PtrMeshConfiguration meshConfig, m2n::M2NConfiguration::SharedPointer m2nConfig, config::PtrParticipantConfiguration participantConfig)
Constructor.
virtual void xmlEndTagCallback(const xml::ConfigurationContext &context, xml::XMLTag &callingTag)
Callback method required when using xml::XMLTag.
void checkIfDataIsExchanged(DataID dataID) const
mesh::PtrData findDataByID(int ID) const
const std::string TAG_PARTICIPANT
void addTypespecifcSubtags(const std::string &type, xml::XMLTag &tag)
PtrCouplingScheme createMultiCouplingScheme(const std::string &accessor) const
const std::string ATTR_STRICT
mesh::PtrMeshConfiguration _meshConfig
const std::string ATTR_CONTROL
void addCouplingScheme(const PtrCouplingScheme &cplScheme, const std::string &participantName)
Adds a manually configured coupling scheme for a participant.
const std::string ATTR_MESH
const std::string ATTR_SUFFICES
const std::string TAG_PARTICIPANTS
bool hasCouplingScheme(const std::string &participantName) const
Check, if a coupling scheme is configured for a participant.
static const int DEFAULT_MAX_ITERATIONS
void updateConfigForImplicitCoupling()
Helper to update some configs which may have a different meaning in implicit coupling.
const std::string VALUE_FIXED
m2n::M2NConfiguration::SharedPointer _m2nConfig
void addAbsoluteOrRelativeConvergenceMeasure(const std::string &dataName, const std::string &meshName, double absLimit, double relLimit, bool suffices, bool strict)
static const int DEFAULT_MIN_ITERATIONS
void addTagParticipants(xml::XMLTag &tag)
PtrCouplingScheme createParallelImplicitCouplingScheme(const std::string &accessor) const
const std::string VALUE_SERIAL_IMPLICIT
const std::string ATTR_ABS_LIMIT
const std::string ATTR_PARTICIPANT
const std::string ATTR_TO
void addTagExchange(xml::XMLTag &tag)
const std::string VALUE_MULTI
void addTagResidualRelativeConvergenceMeasure(xml::XMLTag &tag)
const std::string TAG_MAX_TIME
PtrCouplingScheme createParallelExplicitCouplingScheme(const std::string &accessor) const
void setExperimental(bool experimental)
void addTransientLimitTags(const std::string &type, xml::XMLTag &tag)
void addTagAbsoluteOrRelativeConvergenceMeasure(xml::XMLTag &tag)
const std::string TAG_MAX_ITERATIONS
const std::string ATTR_FROM
const std::string & getDataToExchange(int index) const
Returns the name of one dataset exchanged in the coupling scheme.
void addTagMaxIterations(xml::XMLTag &tag)
const std::string ATTR_EXCHANGE_SUBSTEPS
virtual void xmlTagCallback(const xml::ConfigurationContext &context, xml::XMLTag &callingTag)
Callback method required when using xml::XMLTag.
void addRelativeConvergenceMeasure(const std::string &dataName, const std::string &meshName, double limit, bool suffices, bool strict)
const std::string ATTR_FIRST
std::map< std::string, CompositionalCouplingScheme * > _couplingSchemeCompositions
If a participant has more than one coupling scheme, a composition is created.
void addConvergenceMeasures(BaseCouplingScheme *scheme, const std::string &participant, const std::vector< ConvergenceMeasureDefintion > &convergenceMeasureDefinitions) const
void setParallelAcceleration(BaseCouplingScheme *scheme, const std::string &participant) const
virtual ~CouplingSchemeConfiguration()
Destructor, empty.
const std::string VALUE_FIRST_PARTICIPANT
const std::string ATTR_DATA
const std::string TAG_ABS_OR_REL_CONV_MEASURE
static const double UNDEFINED_MAX_TIME
Does not define a time limit for the coupled simulation.
static const double UNDEFINED_TIME_WINDOW_SIZE
To be used, when the time window size is determined dynamically during the coupling.
static const int UNDEFINED_TIME_WINDOWS
Does not define limit on time windows for the coupled simulation.
A coupling scheme with multiple participants.
This class provides a lightweight logger.
Represents an XML tag to be configured automatically.
vector< double > getData()
Main namespace of the precice library.
bool requiresInitialization
bool hasExchange(const Exchange &totest) const
std::vector< Exchange > exchanges
std::vector< std::string > participants
std::vector< ConvergenceMeasureDefintion > convergenceMeasureDefinitions
constants::TimesteppingMethod dtMethod
impl::PtrConvergenceMeasure measure
Tightly coupled to the parameters of Participant()
Callback interface for configuration classes using XMLTag.