Skip to main content

System Coupling C++ library 2024 R2

SystemCoupling

Last update: 17.07.2025
1/*
2* Copyright 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#include "SystemCouplingParticipant/Parameter.hpp"
14
15#include <cstddef>
16#include <string>
17
18namespace sysc {
19
45class SYSTEM_COUPLING_PARTICIPANT_DLL SystemCoupling {
46public:
58
68 SystemCoupling(std::size_t mpiCommunicator);
69
78 const ParticipantInfo& participantInfo);
79
90 const ParticipantInfo& participantInfo, std::size_t mpiCommunicator);
91
117 const std::string& scHost,
118 unsigned short scPort,
119 const std::string& participantName,
120 const std::string& buildInformation = "Unknown");
121
145 const std::string& scHost,
146 unsigned short scPort,
147 const std::string& participantName,
148 std::size_t mpiCommunicator,
149 const std::string& buildInformation);
150
151 // \brief Provide a destructor for SystemCoupling object.
153
166 void completeSetup(const sysc::SetupInfo& setupInfo);
167
180
192
200
218
239
251
256
258 void fatalError(const std::string& errorMessage);
259
274 void addRegion(const Region& region);
275
296
318
339 void addCouplingInterface(const CouplingInterface& couplingInterface);
340
366 const CouplingInterface& couplingInterface,
367 bool autoGenerateTransfers);
368
375 double getParameterValue(const ParameterName& parameterName);
376
384 const ParameterName& parameterName,
385 double value);
386
394
404 OpaqueDataAccess opaqueDataAccess,
406
414
424 OpaqueDataAccess opaqueDataAccess,
426
434
444 OpaqueDataAccess opaqueDataAccess,
446
454
464 OpaqueDataAccess opaqueDataAccess,
466
474 InputComplexScalarDataAccess* dataAccess);
475
485 OpaqueDataAccess opaqueDataAccess,
487
495 InputComplexVectorDataAccess* dataAccess);
496
506 OpaqueDataAccess opaqueDataAccess,
508
517
527 OpaqueDataAccess opaqueDataAccess,
529
538
548 OpaqueDataAccess opaqueDataAccess,
550
558
568 OpaqueDataAccess opaqueDataAccess,
569 SurfaceMeshAccessWithPointer* meshAccess);
570
571 void registerZoneCountAccess(
572 OpaqueDataAccess opaqueDataAccess,
573 ZoneCountAccess* zoneCountAccess);
574
575 void registerSurfaceMeshAccess(
576 OpaqueDataAccess opaqueDataAccess,
577 SurfaceMeshMultiZoneAccess* dataAccess);
578
579 void registerVolumeMeshAccess(
580 OpaqueDataAccess opaqueDataAccess,
581 VolumeMeshMultiZoneAccess* dataAccess);
582
583 void registerInputScalarDataAccess(
584 OpaqueDataAccess opaqueDataAccess,
586
587 void registerOutputScalarDataAccess(
588 OpaqueDataAccess opaqueDataAccess,
590
591 void registerInputVectorDataAccess(
592 OpaqueDataAccess opaqueDataAccess,
594
604 OpaqueDataAccess opaqueDataAccess,
606
614
624 OpaqueDataAccess opaqueDataAccess,
625 VolumeMeshAccessWithPointer* meshAccess);
626
634
645 OpaqueDataAccess opaqueDataAccess,
646 PointCloudAccessWithPointer* pointCloudAccess);
647
658 OpaqueDataAccess opaqueDataAccess,
659 PointCloudMultiZoneAccess* pointCloudAccess);
660
669
681 bool writeSetupFile(const SetupFileInfo& setupFileInfo) const;
682
684 void writeResults(const ResultsInfo& resultsInfo) const;
685
691 std::size_t getNumRegions() const;
692
700 const Region& getAddedRegion(std::size_t index) const;
701
704
710 std::size_t getNumCouplingInterfaces() const;
711
719 const CouplingInterface& getAddedCouplingInterface(std::size_t index) const;
720
728 const Parameter& getInputParameter(std::size_t index) const;
729
737 const Parameter& getOutputParameter(std::size_t index) const;
738
744 std::size_t getNumInputParameters() const;
745
751 std::size_t getNumOutputParameters() const;
752
753 /* Deprecated functions */
754
758
762
765
768
771
774
777
779 MeshValidityStatus checkMeshValidity(const std::string& regionName);
780
782 const Region& getRegion(std::size_t index) const;
783
786
789
792
795};
796
799} // namespace sysc
Provide a class for a coupling interface.
Provide a class for a System Coupling parameter.
Definition Parameter.hpp:18
Provide a class for a System Coupling region.
Definition Region.hpp:30
Provide the main class for interacting with the System Coupling participant library.
SystemCoupling(std::size_t mpiCommunicator)
Provide a constructor for the SystemCoupling class for non-cosimulation mode with a custom MPI commun...
void registerPointCloudAccess(PointCloudAccess *pointCloudAccess)
Provide a function to register point cloud access.
void registerOutputComplexScalarDataAccess(OpaqueDataAccess opaqueDataAccess, OutputComplexScalarDataAccessWithPointer *dataAccess)
Provide a function to register output complex scalar data access.
bool doIteration()
Provide a function to check whether to do a coupling iteration.
void addInputParameter(Parameter parameter)
Provide a method to add an input parameter that could be used in a coupled analysis.
void registerSurfaceMeshAccess(OpaqueDataAccess opaqueDataAccess, SurfaceMeshAccessWithPointer *meshAccess)
Provide a function to register surface mesh access.
SystemCoupling(const std::string &scHost, unsigned short scPort, const std::string &participantName, std::size_t mpiCommunicator, const std::string &buildInformation)
Provide a constructor for the SystemCoupling class for cosimulation mode with a custom MPI communicat...
void registerPointCloudAccess(OpaqueDataAccess opaqueDataAccess, PointCloudMultiZoneAccess *pointCloudAccess)
Provide a function to register point cloud access.
const Parameter & getInputParameter(std::size_t index) const
Provide a function to return input parameter information.
void completeSetup(const sysc::SetupInfo &setupInfo)
Provide a function to notify System Coupling that setup can be completed.
void registerOutputScalarVariableAccess(OutputScalarVariableAccess *dataAccess)
Deprecated - do not use.
const Region & getAddedRegion(std::size_t index) const
Provide a function to return region information.
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(OpaqueDataAccess opaqueDataAccess, InputVectorDataAccessWithPointer *dataAccess)
Provide a function to register input vector data access.
bool writeSetupFile(const SetupFileInfo &setupFileInfo) const
Provide a function to write the setup file.
void updateOutputs(ConvergenceStatus status)
Provide a function to update the participants output variables.
SystemCoupling & operator=(SystemCoupling &&)=default
Provide the move-assign operator.
void disconnect()
Provide a function to end the analysis and disconnect from System Coupling.
std::size_t getNumInputParameters() const
Provide a function to return the number of input parameters.
void registerInputComplexVectorDataAccess(InputComplexVectorDataAccess *dataAccess)
Provide a function to register input complex vector data access.
void registerInputScalarDataAccess(InputScalarDataAccess *dataAccess)
Provide a function to register input scalar data access.
void registerInputScalarDataAccess(OpaqueDataAccess opaqueDataAccess, InputScalarDataAccessWithPointer *dataAccess)
Provide a function to register input scalar data access.
SystemCoupling(const std::string &scHost, unsigned short scPort, const std::string &participantName, const std::string &buildInformation="Unknown")
Provide a constructor for the SystemCoupling class for cosimulation mode.
SystemCoupling(const SystemCoupling &)=delete
Delete the copy-constructor.
void registerVolumeMeshAccess(VolumeMeshAccess *meshAccess)
Provide a function to register volume mesh access.
sysc::TimeStep getCurrentTimeStep()
Provide a function to get current time step.
std::size_t getNumOutputParameters() const
Provide a function to return the number of output parameters.
void registerOutputComplexVectorDataAccess(OutputComplexVectorDataAccess *dataAccess)
Provide a function to register output complex vector data access.
void completeCouplingSetup()
This function will be deprecated. Use completeSetup() instead.
void registerOutputComplexScalarDataAccess(OutputComplexScalarDataAccess *dataAccess)
Provide a function to register output complex scalar data access.
void registerPointCloudAccess(OpaqueDataAccess opaqueDataAccess, PointCloudAccessWithPointer *pointCloudAccess)
Provide a function to register point cloud access.
void registerInputVectorVariableAccess(InputVectorVariableAccess *dataAccess)
Deprecated - do not use.
void registerOutputVectorDataAccess(OpaqueDataAccess opaqueDataAccess, OutputVectorDataMultiZoneAccess *dataAccess)
Provide a function to register output vector data access.
void registerInputScalarVariableAccess(InputScalarVariableAccess *dataAccess)
Deprecated - do not use.
const Parameter & getOutputParameter(std::size_t index) const
Provide a function to return output parameter information.
std::size_t getNumCouplingInterfaces() const
Provide a function to return the number of coupling interfaces.
void registerOutputComplexVectorDataAccess(OpaqueDataAccess opaqueDataAccess, OutputComplexVectorDataAccessWithPointer *dataAccess)
Provide a function to register output complex vector data access.
void registerInputComplexScalarDataAccess(OpaqueDataAccess opaqueDataAccess, InputComplexScalarDataAccessWithPointer *dataAccess)
Provide a function to register input 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 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.
void registerRestartPointCreation(RestartPointCreation *restartPointCreation)
Provide a function to register a restart point creation callback.
void registerInputVectorDataAccess(InputVectorDataAccess *dataAccess)
Provide a function to register input vector data access.
const Region & getRegion(std::size_t index) const
Deprecated. Use getAddedRegion() instead.
void initializeAnalysis()
Provide a function to notify System Coupling that analysis initialization can be completed.
void registerOutputVectorVariableAccess(OutputVectorVariableAccess *dataAccess)
Deprecated - do not use.
void registerOutputVectorDataAccess(OutputVectorDataAccess *dataAccess)
Provide a function to register output vector data access.
void registerInputComplexVectorDataAccess(OpaqueDataAccess opaqueDataAccess, InputComplexVectorDataAccessWithPointer *dataAccess)
Provide a function to register input complex vector data access.
MeshValidityStatus checkMeshValidity(const std::string &regionName)
Deprecated. Use sysc::SurfaceMesh::checkMeshValidity instead.
void writeResults(const ResultsInfo &resultsInfo) const
Write results to a file.
void setParameterValue(const ParameterName &parameterName, double value)
Provide a function to set a Parameter value.
SolutionControl getSolutionControl() const
Get solution control.
void registerVolumeMeshAccess(OpaqueDataAccess opaqueDataAccess, VolumeMeshAccessWithPointer *meshAccess)
Provide a function to register volume mesh access.
void registerOutputScalarDataAccess(OpaqueDataAccess opaqueDataAccess, OutputScalarDataAccessWithPointer *dataAccess)
Provide a function to register output scalar data access.
void registerOutputScalarDataAccess(OutputScalarDataAccess *dataAccess)
Provide a function to register output scalar data access.
const CouplingInterface & getAddedCouplingInterface(std::size_t index) const
Provide a function to return coupling interface.
void completeCouplingSetup(sysc::AnalysisType analysisType)
This function will be deprecated. Use completeSetup() instead.
void addCouplingInterface(const CouplingInterface &couplingInterface, bool autoGenerateTransfers)
Provide a function to add a coupling interface.
void addCouplingInterface(const CouplingInterface &couplingInterface)
Provide a function to add a coupling interface.
void registerInputComplexScalarDataAccess(InputComplexScalarDataAccess *dataAccess)
Provide a function to register input complex scalar data access.
void registerOutputVectorDataAccess(OpaqueDataAccess opaqueDataAccess, OutputVectorDataAccessWithPointer *dataAccess)
Provide a function to register output vector data access.
double getParameterValue(const ParameterName &parameterName)
Provide a function to get a Parameter value.
void addOutputParameter(Parameter parameter)
Provide a method to add an output parameter that could be used in a coupled analysis.
std::size_t getNumRegions() const
Provide a function to return the number of regions.
void registerSurfaceMeshAccess(SurfaceMeshAccess *meshAccess)
Provide a function to register surface mesh access.
void addRegion(const Region &region)
Provide a function to add a region that could be used in a coupled analysis.
std::uint16_t(OpaqueDataAccess, const RegionName &) ZoneCountAccess
Function prototype to get the number of zones for a given region.
ConvergenceStatus
Provide enum for participant's solver convergence status.
VolumeMesh(OpaqueDataAccess, const RegionName &) VolumeMeshAccessWithPointer
Provide alias for function that provides access to volume mesh.
SurfaceMesh(const RegionName &) SurfaceMeshAccess
Provide alias for function that provides access to surface mesh.
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.
void * OpaqueDataAccess
VolumeMesh(OpaqueDataAccess, const RegionName &, std::uint16_t zoneIndex) VolumeMeshMultiZoneAccess
Function prototype to get the mesh zone, given region name and zone index.
InputComplexScalarData(OpaqueDataAccess, const RegionName &, const VariableName &) InputComplexScalarDataAccessWithPointer
Provide function prototype for access to input complex scalar data.
InputScalarData(const std::string &, const std::string &) InputScalarVariableAccess
This alias will be deprecated - use InputScalarDataAccess instead.
OutputComplexScalarData(OpaqueDataAccess, const RegionName &, const VariableName &) OutputComplexScalarDataAccessWithPointer
Provide function prototype for access to output complex scalar data.
PointCloud(const RegionName &) PointCloudAccess
Provide alias for function that provides access to point cloud.
SurfaceMesh(OpaqueDataAccess, const RegionName &, std::uint16_t zoneIndex) SurfaceMeshMultiZoneAccess
Function prototype to get the mesh zone, given region name and zone index.
SurfaceMesh(OpaqueDataAccess, const RegionName &) SurfaceMeshAccessWithPointer
Provide alias for function that provides access to surface mesh.
PointCloud(OpaqueDataAccess, const RegionName &) PointCloudAccessWithPointer
Provide alias for function that provides access to point cloud.
OutputVectorData(OpaqueDataAccess, const RegionName &, const VariableName &) OutputVectorDataAccessWithPointer
Provide function prototype for access to output vector data.
OutputScalarData(const RegionName &, const VariableName &) OutputScalarDataAccess
Provide function prototype for access to output scalar data.
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.
OutputComplexVectorData(OpaqueDataAccess, const RegionName &, const VariableName &) OutputComplexVectorDataAccessWithPointer
Provide function prototype for access to output complex 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.
InputScalarData(OpaqueDataAccess, const RegionName &, const VariableName &) InputScalarDataAccessWithPointer
Provide function prototype for access to input scalar data.
RestartPoint() RestartPointCreation
Provide an alias for function prototype that creates restart points.
InputScalarData(const RegionName &, const VariableName &) InputScalarDataAccess
Provide function prototype for access to input scalar data.
InputComplexVectorData(const RegionName &, const VariableName &) InputComplexVectorDataAccess
Provide function prototype for access to input complex vector data.
std::string ParameterName
InputComplexVectorData(OpaqueDataAccess, const RegionName &, const VariableName &) InputComplexVectorDataAccessWithPointer
Provide function prototype for access to input complex vector data.
InputVectorData(const RegionName &, const VariableName &) InputVectorDataAccess
Provide function prototype for access to input vector data.
OutputVectorData(const RegionName &, const VariableName &) OutputVectorDataAccess
Provide function prototype for access to output vector data.
OutputScalarData(const std::string &, const std::string &) OutputScalarVariableAccess
This alias will be deprecated - use OutputScalarDataAccess instead.
VolumeMesh(const RegionName &) VolumeMeshAccess
Provide alias for function that provides access to volume mesh.
OutputVectorData(const std::string &, const std::string &) OutputVectorVariableAccess
This alias will be deprecated - use OutputVectorDataAccess instead.
OutputComplexVectorData(const RegionName &, const VariableName &) OutputComplexVectorDataAccess
Provide function prototype for access to output complex vector data.
InputVectorData(const std::string &, const std::string &) InputVectorVariableAccess
This alias will be deprecated - use InputVectorDataAccess instead.
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.
PointCloud(OpaqueDataAccess, const RegionName &, std::uint16_t zoneIndex) PointCloudMultiZoneAccess
Provide alias for function that provides access to point cloud.
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 &) InputVectorDataAccessWithPointer
Provide function prototype for access to input vector data.
OutputScalarData(OpaqueDataAccess, const RegionName &, const VariableName &) OutputScalarDataAccessWithPointer
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.
Provide a structure containing solution control.
Provide a struct for time step.

Connect with Ansys