Skip to main content

System Coupling C++ library 2023 R2

SystemCoupling

Last update: 17.07.2025
1/*
2* Copyright 2023 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.
3*/
4
5#pragma once
6
7#include "SystemCouplingParticipant/LibraryType.hpp"
8
9#include "SystemCouplingParticipant/CommonTypes.hpp"
10#include "SystemCouplingParticipant/CouplingInterface.hpp"
11#include "SystemCouplingParticipant/FunctionTypes.hpp"
12#include "SystemCouplingParticipant/Region.hpp"
13
14#include <cstddef>
15#include <string>
16
17namespace sysc {
18
44class SYSTEM_COUPLING_PARTICIPANT_DLL SystemCoupling {
45public:
57
67 SystemCoupling(std::size_t mpiCommunicator);
68
77 const ParticipantInfo& participantInfo);
78
89 const ParticipantInfo& participantInfo, std::size_t mpiCommunicator);
90
116 const std::string& scHost,
117 const unsigned short scPort,
118 const std::string& participantName,
119 const std::string& buildInformation = "Unknown");
120
144 const std::string& scHost,
145 const unsigned short scPort,
146 const std::string& participantName,
147 const std::size_t mpiCommunicator,
148 const std::string& buildInformation);
149
150 // \brief Provide a destructor for SystemCoupling object.
152
165 void completeSetup(const sysc::SetupInfo& setupInfo);
166
179
191
199
217
238
250
255
257 void fatalError(const std::string& errorMessage);
258
273 void addRegion(const Region& region);
274
295 void addCouplingInterface(const CouplingInterface& couplingInterface);
296
322 const CouplingInterface& couplingInterface,
323 bool autoGenerateTransfers);
324
332
342 OpaqueDataAccess opaqueDataAccess,
343 InputScalarDataAccessWithPointer* const dataAccess);
344
352
362 OpaqueDataAccess opaqueDataAccess,
363 InputVectorDataAccessWithPointer* const dataAccess);
364
372
382 OpaqueDataAccess opaqueDataAccess,
383 OutputScalarDataAccessWithPointer* const dataAccess);
384
392
402 OpaqueDataAccess opaqueDataAccess,
403 OutputVectorDataAccessWithPointer* const dataAccess);
404
412 InputComplexScalarDataAccess* const dataAccess);
413
423 OpaqueDataAccess opaqueDataAccess,
425
433 InputComplexVectorDataAccess* const dataAccess);
434
444 OpaqueDataAccess opaqueDataAccess,
446
454 OutputComplexScalarDataAccess* const dataAccess);
455
465 OpaqueDataAccess opaqueDataAccess,
467
475 OutputComplexVectorDataAccess* const dataAccess);
476
486 OpaqueDataAccess opaqueDataAccess,
488
496
506 OpaqueDataAccess opaqueDataAccess,
507 SurfaceMeshAccessWithPointer* const meshAccess);
508
509 void registerZoneCountAccess(
510 OpaqueDataAccess opaqueDataAccess,
511 ZoneCountAccess* const zoneCountAccess);
512
513 void registerSurfaceMeshAccess(
514 OpaqueDataAccess opaqueDataAccess,
515 SurfaceMeshMultiZoneAccess* const dataAccess);
516
517 void registerVolumeMeshAccess(
518 OpaqueDataAccess opaqueDataAccess,
519 VolumeMeshMultiZoneAccess* const dataAccess);
520
521 void registerInputScalarDataAccess(
522 OpaqueDataAccess opaqueDataAccess,
523 InputScalarDataMultiZoneAccess* const dataAccess);
524
525 void registerOutputScalarDataAccess(
526 OpaqueDataAccess opaqueDataAccess,
527 OutputScalarDataMultiZoneAccess* const dataAccess);
528
529 void registerInputVectorDataAccess(
530 OpaqueDataAccess opaqueDataAccess,
531 InputVectorDataMultiZoneAccess* const dataAccess);
532
533 void registerOutputVectorDataAccess(
534 OpaqueDataAccess opaqueDataAccess,
535 OutputVectorDataMultiZoneAccess* const dataAccess);
536
544
554 OpaqueDataAccess opaqueDataAccess,
555 VolumeMeshAccessWithPointer* const meshAccess);
556
563 void registerPointCloudAccess(PointCloudAccess* const pointCloudAccess);
564
575 OpaqueDataAccess opaqueDataAccess,
576 PointCloudAccessWithPointer* const pointCloudAccess);
577
588 OpaqueDataAccess opaqueDataAccess,
589 PointCloudMultiZoneAccess* const pointCloudAccess);
590
598 void registerRestartPointCreation(RestartPointCreation* const restartPointCreation);
599
611 bool writeSetupFile(const SetupFileInfo& setupFileInfo) const;
612
614 void writeResults(const ResultsInfo& resultsInfo) const;
615
621 std::size_t getNumRegions() const;
622
630 const Region& getAddedRegion(std::size_t index) const;
631
634
640 std::size_t getNumCouplingInterfaces() const;
641
649 const CouplingInterface& getAddedCouplingInterface(std::size_t index) const;
650
651 /* Deprecated functions */
652
656
660
663
666
669
672
675
677 MeshValidityStatus checkMeshValidity(const std::string& regionName);
678
680 const Region& getRegion(std::size_t index) const;
681
684
687
690
693};
694
697} // namespace sysc
Provide a class for a coupling interface.
Provide a class for a System Coupling region.
Definition: Region.hpp:30
Provide the main class for interacting with the System Coupling participant library.
void registerPointCloudAccess(OpaqueDataAccess opaqueDataAccess, PointCloudAccessWithPointer *const pointCloudAccess)
Provide a function to register point cloud access.
SystemCoupling(std::size_t mpiCommunicator)
Provide a constructor for the SystemCoupling class for non-cosimulation mode with a custom MPI commun...
SystemCoupling(const std::string &scHost, const unsigned short scPort, const std::string &participantName, const std::string &buildInformation="Unknown")
Provide a constructor for the SystemCoupling class for cosimulation mode.
void registerPointCloudAccess(PointCloudAccess *const pointCloudAccess)
Provide a function to register point cloud access.
bool doIteration()
Provide a function to check whether to do a coupling iteration.
void registerInputComplexVectorDataAccess(OpaqueDataAccess opaqueDataAccess, InputComplexVectorDataAccessWithPointer *const dataAccess)
Provide a function to register input complex vector data access.
void completeSetup(const sysc::SetupInfo &setupInfo)
Provide a function to notify System Coupling that setup can be completed.
void registerOutputVectorDataAccess(OpaqueDataAccess opaqueDataAccess, OutputVectorDataAccessWithPointer *const dataAccess)
Provide a function to register output vector data access.
const Region & getAddedRegion(std::size_t index) const
Provide a function to return region information.
void registerOutputComplexScalarDataAccess(OutputComplexScalarDataAccess *const dataAccess)
Provide a function to register output complex scalar data access.
SystemCoupling(const ParticipantInfo &participantInfo, std::size_t mpiCommunicator)
Provide a constructor for the SystemCoupling class with an mpiCommunicator object set to non default.
bool doTimeStep()
Provide a function to check whether to do a coupling time step.
void registerInputVectorDataAccess(InputVectorDataAccess *const dataAccess)
Provide a function to register input vector data access.
void registerOutputVectorDataAccess(OutputVectorDataAccess *const dataAccess)
Provide a function to register output vector data access.
void registerOutputScalarDataAccess(OutputScalarDataAccess *const dataAccess)
Provide a function to register output scalar data access.
void registerVolumeMeshAccess(VolumeMeshAccess *const meshAccess)
Provide a function to register volume mesh access.
bool writeSetupFile(const SetupFileInfo &setupFileInfo) const
Provide a function to write the setup file.
void registerOutputComplexVectorDataAccess(OpaqueDataAccess opaqueDataAccess, OutputComplexVectorDataAccessWithPointer *const dataAccess)
Provide a function to register output complex vector data access.
void updateOutputs(ConvergenceStatus status)
Provide a function to update the participants output variables.
SystemCoupling & operator=(SystemCoupling &&)=default
Provide the move-assign operator.
void registerSurfaceMeshAccess(OpaqueDataAccess opaqueDataAccess, SurfaceMeshAccessWithPointer *const meshAccess)
Provide a function to register surface mesh access.
void disconnect()
Provide a function to end the analysis and disconnect from System Coupling.
void registerInputScalarVariableAccess(InputScalarVariableAccess *const dataAccess)
Deprecated - do not use.
void registerOutputScalarVariableAccess(OutputScalarVariableAccess *const dataAccess)
Deprecated - do not use.
void registerInputComplexScalarDataAccess(OpaqueDataAccess opaqueDataAccess, InputComplexScalarDataAccessWithPointer *const dataAccess)
Provide a function to register input complex scalar data access.
void completeCouplingSetup(const sysc::AnalysisType analysisType)
This function will be deprecated. Use completeSetup() instead.
SystemCoupling(const SystemCoupling &)=delete
Delete the copy-constructor.
sysc::TimeStep getCurrentTimeStep()
Provide a function to get current time step.
void completeCouplingSetup()
This function will be deprecated. Use completeSetup() instead.
void registerInputVectorDataAccess(OpaqueDataAccess opaqueDataAccess, InputVectorDataAccessWithPointer *const dataAccess)
Provide a function to register input vector data access.
void registerInputVectorVariableAccess(InputVectorVariableAccess *const dataAccess)
Deprecated - do not use.
void registerInputScalarDataAccess(OpaqueDataAccess opaqueDataAccess, InputScalarDataAccessWithPointer *const dataAccess)
Provide a function to register input scalar data access.
void registerVolumeMeshAccess(OpaqueDataAccess opaqueDataAccess, VolumeMeshAccessWithPointer *const meshAccess)
Provide a function to register volume mesh access.
std::size_t getNumCouplingInterfaces() const
Provide a function to return the number of coupling interfaces.
void registerOutputComplexScalarDataAccess(OpaqueDataAccess opaqueDataAccess, OutputComplexScalarDataAccessWithPointer *const dataAccess)
Provide a function to register output complex scalar data access.
MeshValidityStatus checkMeshValidity(const Region &region)
Deprecated. Use sysc::SurfaceMesh::checkMeshValidity instead.
SystemCoupling(SystemCoupling &&)=default
Provide the move-constructor.
void updateInputs()
Provide a function to update the participants input variables.
void registerSurfaceMeshAccess(SurfaceMeshAccess *const meshAccess)
Provide a function to register surface mesh access.
void fatalError(const std::string &errorMessage)
Provide a function to notify System Coupling about a fatal error.
SystemCoupling(const ParticipantInfo &participantInfo)
Provide a constructor for the SystemCoupling class with a custom struct representing the default inpu...
SystemCoupling()
Provide a (default) constructor for the SystemCoupling class for non-cosimulation mode.
SystemCoupling & operator=(const SystemCoupling &)=delete
Delete the copy-assign operator.
const Region & getRegion(std::size_t index) const
Deprecated. Use getAddedRegion() instead.
void registerOutputComplexVectorDataAccess(OutputComplexVectorDataAccess *const dataAccess)
Provide a function to register output complex vector data access.
void initializeAnalysis()
Provide a function to notify System Coupling that analysis initialization can be completed.
void registerRestartPointCreation(RestartPointCreation *const restartPointCreation)
Provide a function to register a restart point creation callback.
MeshValidityStatus checkMeshValidity(const std::string &regionName)
Deprecated. Use sysc::SurfaceMesh::checkMeshValidity instead.
void writeResults(const ResultsInfo &resultsInfo) const
Write results to a file.
SystemCoupling(const std::string &scHost, const unsigned short scPort, const std::string &participantName, const std::size_t mpiCommunicator, const std::string &buildInformation)
Provide a constructor for the SystemCoupling class for cosimulation mode with a custom MPI communicat...
SolutionControl getSolutionControl() const
Get solution control.
void registerInputComplexVectorDataAccess(InputComplexVectorDataAccess *const dataAccess)
Provide a function to register input complex vector data access.
void registerInputComplexScalarDataAccess(InputComplexScalarDataAccess *const dataAccess)
Provide a function to register input complex scalar data access.
void registerOutputVectorVariableAccess(OutputVectorVariableAccess *const dataAccess)
Deprecated - do not use.
const CouplingInterface & getAddedCouplingInterface(std::size_t index) const
Provide a function to return coupling interface.
void addCouplingInterface(const CouplingInterface &couplingInterface, bool autoGenerateTransfers)
Provide a function to add a coupling interface.
void registerPointCloudAccess(OpaqueDataAccess opaqueDataAccess, PointCloudMultiZoneAccess *const pointCloudAccess)
Provide a function to register point cloud access.
void addCouplingInterface(const CouplingInterface &couplingInterface)
Provide a function to add a coupling interface.
void registerOutputScalarDataAccess(OpaqueDataAccess opaqueDataAccess, OutputScalarDataAccessWithPointer *const dataAccess)
Provide a function to register output scalar data access.
std::size_t getNumRegions() const
Provide a function to return the number of regions.
void registerInputScalarDataAccess(InputScalarDataAccess *const dataAccess)
Provide a function to register input scalar data access.
void addRegion(const Region &region)
Provide a function to add a region that could be used in a coupled analysis.
OutputScalarData(OpaqueDataAccess, const RegionName &, const VariableName &) OutputScalarDataAccessWithPointer
Provide function prototype for access to output scalar data.
ConvergenceStatus
Provide enum for participant's solver convergence status.
Definition: CommonTypes.hpp:25
InputComplexVectorData(const RegionName &, const VariableName &) InputComplexVectorDataAccess
Provide function prototype for access to input complex vector data.
InputVectorData(OpaqueDataAccess, const RegionName &, const VariableName &) InputVectorDataAccessWithPointer
Provide function prototype for access to input vector data.
OutputScalarData OutputScalarVariableAccess(const std::string &, const std::string &)
This alias will be deprecated - use OutputScalarDataAccess instead.
PointCloud(const RegionName &) PointCloudAccess
Provide alias for function that provides access to point cloud.
PointCloud(OpaqueDataAccess, const RegionName &) PointCloudAccessWithPointer
Provide alias for function that provides access to point cloud.
PointCloud(OpaqueDataAccess, const RegionName &, std::uint16_t zoneIndex) PointCloudMultiZoneAccess
Provide alias for function that provides access to point cloud.
void * OpaqueDataAccess
SurfaceMesh(const RegionName &) SurfaceMeshAccess
Provide alias for function that provides access to surface mesh.
InputScalarData(OpaqueDataAccess, const RegionName &, const VariableName &) InputScalarDataAccessWithPointer
Provide function prototype for access to input scalar data.
OutputVectorData(const RegionName &, const VariableName &) OutputVectorDataAccess
Provide function prototype for access to output vector data.
InputScalarData(OpaqueDataAccess, const RegionName &, const VariableName &, std::uint16_t zoneIndex) InputScalarDataMultiZoneAccess
Function prototype to get the input scalar data, given region name and zone index.
OutputVectorData(OpaqueDataAccess, const RegionName &, const VariableName &, std::uint16_t zoneIndex) OutputVectorDataMultiZoneAccess
Function prototype to get the input vector data, given region name and zone index.
InputVectorData(OpaqueDataAccess, const RegionName &, const VariableName &, std::uint16_t zoneIndex) InputVectorDataMultiZoneAccess
Function prototype to get the input vector data, given region name and zone index.
std::uint16_t(OpaqueDataAccess, const RegionName &) ZoneCountAccess
Function prototype to get the number of zones for a given region.
VolumeMesh(OpaqueDataAccess, const RegionName &) VolumeMeshAccessWithPointer
Provide alias for function that provides access to volume mesh.
OutputComplexScalarData(OpaqueDataAccess, const RegionName &, const VariableName &) OutputComplexScalarDataAccessWithPointer
Provide function prototype for access to output complex scalar data.
SurfaceMesh(OpaqueDataAccess, const RegionName &, std::uint16_t zoneIndex) SurfaceMeshMultiZoneAccess
Function prototype to get the mesh zone, given region name and zone index.
VolumeMesh(const RegionName &) VolumeMeshAccess
Provide alias for function that provides access to volume mesh.
InputScalarData InputScalarVariableAccess(const std::string &, const std::string &)
This alias will be deprecated - use InputScalarDataAccess instead.
InputScalarData(const RegionName &, const VariableName &) InputScalarDataAccess
Provide function prototype for access to input scalar data.
OutputVectorData(OpaqueDataAccess, const RegionName &, const VariableName &) OutputVectorDataAccessWithPointer
Provide function prototype for access to output vector data.
InputComplexScalarData(OpaqueDataAccess, const RegionName &, const VariableName &) InputComplexScalarDataAccessWithPointer
Provide function prototype for access to input complex scalar data.
RestartPoint(void) RestartPointCreation
Provide an alias for function prototype that creates restart points.
InputVectorData InputVectorVariableAccess(const std::string &, const std::string &)
This alias will be deprecated - use InputVectorDataAccess instead.
OutputVectorData OutputVectorVariableAccess(const std::string &, const std::string &)
This alias will be deprecated - use OutputVectorDataAccess instead.
OutputComplexVectorData(OpaqueDataAccess, const RegionName &, const VariableName &) OutputComplexVectorDataAccessWithPointer
Provide function prototype for access to output complex vector data.
OutputScalarData(OpaqueDataAccess, const RegionName &, const VariableName &, std::uint16_t zoneIndex) OutputScalarDataMultiZoneAccess
Function prototype to get the output scalar data, given region name and zone index.
InputVectorData(const RegionName &, const VariableName &) InputVectorDataAccess
Provide function prototype for access to input vector data.
InputComplexScalarData(const RegionName &, const VariableName &) InputComplexScalarDataAccess
Provide function prototype for access to input complex scalar data.
OutputComplexScalarData(const RegionName &, const VariableName &) OutputComplexScalarDataAccess
Provide function prototype for access to output complex scalar data.
OutputComplexVectorData(const RegionName &, const VariableName &) OutputComplexVectorDataAccess
Provide function prototype for access to output complex vector data.
SurfaceMesh(OpaqueDataAccess, const RegionName &) SurfaceMeshAccessWithPointer
Provide alias for function that provides access to surface mesh.
InputComplexVectorData(OpaqueDataAccess, const RegionName &, const VariableName &) InputComplexVectorDataAccessWithPointer
Provide function prototype for access to input complex vector data.
VolumeMesh(OpaqueDataAccess, const RegionName &, std::uint16_t zoneIndex) VolumeMeshMultiZoneAccess
Function prototype to get the mesh zone, given region name and zone index.
OutputScalarData(const RegionName &, const VariableName &) OutputScalarDataAccess
Provide function prototype for access to output scalar data.
AnalysisType
Provide an enum for coupled analysis type.
Provide a struct that contains information about mesh validity.
provide a structure for the participant information needed to connect to a System Coupling object
Provide a structure for writing System Coupling results files.
Provide a structure for writing System Coupling setup files.
Provide a structure for System Coupling setup information.
Definition: CommonTypes.hpp:74
Provide a structure containing solution control.
Definition: CommonTypes.hpp:68
Provide a struct for time step.
Definition: CommonTypes.hpp:40

Connect with Ansys