Skip to main content

System Coupling Participant library 2025 R2

File SystemCoupling.hpp

Last update: 17.07.2025

Location: SystemCoupling.hpp

Classes

Namespaces

Includes

  • SystemCouplingParticipant/LibraryType.hpp
  • SystemCouplingParticipant/CommonTypes.hpp
  • SystemCouplingParticipant/CouplingInterface.hpp
  • SystemCouplingParticipant/Datashipper.hpp
  • SystemCouplingParticipant/FunctionTypes.hpp
  • SystemCouplingParticipant/Region.hpp
  • SystemCouplingParticipant/Parameter.hpp
  • SystemCouplingParticipant/SyscComm.hpp
graph LR
9["SystemCouplingParticipant/SyscComm.hpp"]

5["SystemCouplingParticipant/Datashipper.hpp"]

1["SystemCoupling.hpp"]
click 1 "SystemCoupling_8hpp.md#SystemCoupling_8hpp"
1 --> 2
1 --> 3
1 --> 4
1 --> 5
1 --> 6
1 --> 7
1 --> 8
1 --> 9
1 --> 10
1 --> 11

6["SystemCouplingParticipant/FunctionTypes.hpp"]

11["string"]

3["SystemCouplingParticipant/CommonTypes.hpp"]

7["SystemCouplingParticipant/Region.hpp"]

2["SystemCouplingParticipant/LibraryType.hpp"]

8["SystemCouplingParticipant/Parameter.hpp"]

10["cstddef"]

4["SystemCouplingParticipant/CouplingInterface.hpp"]

Source

/*
* Copyright ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.
*/

#pragma once

#include "SystemCouplingParticipant/LibraryType.hpp"

#include "SystemCouplingParticipant/CommonTypes.hpp"
#include "SystemCouplingParticipant/CouplingInterface.hpp"
#include "SystemCouplingParticipant/Datashipper.hpp"
#include "SystemCouplingParticipant/FunctionTypes.hpp"
#include "SystemCouplingParticipant/Region.hpp"
#include "SystemCouplingParticipant/Parameter.hpp"
#include "SystemCouplingParticipant/SyscComm.hpp"

#include <cstddef>
#include <string>

namespace sysc {

class SYSTEM_COUPLING_PARTICIPANT_DLL SystemCoupling {
public:
  SystemCoupling();

  SystemCoupling(std::size_t mpiCommunicator);

  SystemCoupling(
    const ParticipantInfo& participantInfo);

  SystemCoupling(
    const ParticipantInfo& participantInfo, std::size_t mpiCommunicator);

  SystemCoupling(
    const std::string& scHost,
    unsigned short scPort,
    const std::string& participantName,
    const std::string& buildInformation = "Unknown");

  SystemCoupling(
    const std::string& scHost,
    unsigned short scPort,
    const std::string& participantName,
    std::size_t mpiCommunicator,
    const std::string& buildInformation);

  // \brief Provide a destructor for SystemCoupling object.
  ~SystemCoupling();

  void completeSetup(const sysc::SetupInfo& setupInfo);

  void initializeAnalysis();

  sysc::TimeStep getCurrentTimeStep();

  bool doIteration();

  bool doTimeStep();

  void updateInputs();

  void updateOutputs(ConvergenceStatus status);

  void disconnect();

  void fatalError(const std::string& errorMessage);

  void addRegion(const Region& region);

  void addInputParameter(Parameter parameter);

  void addOutputParameter(Parameter parameter);

  void addRealAttribute(const RealAttribute& realAttribute);

  void addIntegerAttribute(const IntegerAttribute& integerAttribute);

  void addStringAttribute(const StringAttribute& stringAttribute);

  void addCouplingInterface(const CouplingInterface& couplingInterface);

  void addCouplingInterface(
    const CouplingInterface& couplingInterface,
    bool autoGenerateTransfers);

  double getParameterValue(const ParameterName& parameterName);

  void setParameterValue(
    const ParameterName& parameterName,
    double value);

  double getRealAttributeValue(const AttributeName& attributeName);

  int64_t getIntegerAttributeValue(const AttributeName& attributeName);

  std::string getStringAttributeValue(const AttributeName& attributeName);

  void registerInputScalarDataAccess(InputScalarDataAccess* dataAccess);

  void registerInputScalarDataAccess(
    OpaqueDataAccess opaqueDataAccess,
    InputScalarDataAccessWithPointer* dataAccess);

  void registerInputVectorDataAccess(InputVectorDataAccess* dataAccess);

  void registerInputVectorDataAccess(
    OpaqueDataAccess opaqueDataAccess,
    InputVectorDataAccessWithPointer* dataAccess);

  void registerOutputScalarDataAccess(OutputScalarDataAccess* dataAccess);

  void registerOutputScalarDataAccess(
    OpaqueDataAccess opaqueDataAccess,
    OutputScalarDataAccessWithPointer* dataAccess);

  void registerOutputVectorDataAccess(OutputVectorDataAccess* dataAccess);

  void registerOutputVectorDataAccess(
    OpaqueDataAccess opaqueDataAccess,
    OutputVectorDataAccessWithPointer* dataAccess);

  void registerInputComplexScalarDataAccess(
    InputComplexScalarDataAccess* dataAccess);

  void registerInputComplexScalarDataAccess(
    OpaqueDataAccess opaqueDataAccess,
    InputComplexScalarDataAccessWithPointer* dataAccess);

  void registerInputComplexVectorDataAccess(
    InputComplexVectorDataAccess* dataAccess);

  void registerInputComplexVectorDataAccess(
    OpaqueDataAccess opaqueDataAccess,
    InputComplexVectorDataAccessWithPointer* dataAccess);

  void registerOutputComplexScalarDataAccess(
    OutputComplexScalarDataAccess* dataAccess);

  void registerOutputComplexScalarDataAccess(
    OpaqueDataAccess opaqueDataAccess,
    OutputComplexScalarDataAccessWithPointer* dataAccess);

  void registerOutputComplexVectorDataAccess(
    OutputComplexVectorDataAccess* dataAccess);

  void registerOutputComplexVectorDataAccess(
    OpaqueDataAccess opaqueDataAccess,
    OutputComplexVectorDataAccessWithPointer* dataAccess);

  void registerSurfaceMeshAccess(SurfaceMeshAccess* meshAccess);

  void registerSurfaceMeshAccess(
    OpaqueDataAccess opaqueDataAccess,
    SurfaceMeshAccessWithPointer* meshAccess);

  void registerZoneCountAccess(
    OpaqueDataAccess opaqueDataAccess,
    ZoneCountAccess* zoneCountAccess);

  void registerSurfaceMeshAccess(
    OpaqueDataAccess opaqueDataAccess,
    SurfaceMeshMultiZoneAccess* dataAccess);

  void registerVolumeMeshAccess(
    OpaqueDataAccess opaqueDataAccess,
    VolumeMeshMultiZoneAccess* dataAccess);

  void registerInputScalarDataAccess(
    OpaqueDataAccess opaqueDataAccess,
    InputScalarDataMultiZoneAccess* dataAccess);

  void registerOutputScalarDataAccess(
    OpaqueDataAccess opaqueDataAccess,
    OutputScalarDataMultiZoneAccess* dataAccess);

  void registerInputVectorDataAccess(
    OpaqueDataAccess opaqueDataAccess,
    InputVectorDataMultiZoneAccess* dataAccess);

  void registerOutputVectorDataAccess(
    OpaqueDataAccess opaqueDataAccess,
    OutputVectorDataMultiZoneAccess* dataAccess);

  void registerVolumeMeshAccess(VolumeMeshAccess* meshAccess);

  void registerVolumeMeshAccess(
    OpaqueDataAccess opaqueDataAccess,
    VolumeMeshAccessWithPointer* meshAccess);

  void registerPointCloudAccess(PointCloudAccess* pointCloudAccess);

  void registerPointCloudAccess(
    OpaqueDataAccess opaqueDataAccess,
    PointCloudAccessWithPointer* pointCloudAccess);

  void registerPointCloudAccess(
    OpaqueDataAccess opaqueDataAccess,
    PointCloudMultiZoneAccess* pointCloudAccess);

  void registerRestartPointCreation(RestartPointCreation* restartPointCreation);

  void registerTargetDataCreation(TargetDataCreation* targetDataCreation);

  void registerTargetDataCreation(
    OpaqueDataAccess opaqueDataAccess,
    TargetDataCreationWithPointer* targetDataCreation);

  void registerDoesTargetDataExist(TargetDataExistenceChecker* doesTargetDataExist);

  void registerDoesTargetDataExist(
    OpaqueDataAccess opaqueDataAccess,
    TargetDataExistenceCheckerWithPointer* doesTargetDataExist);

  bool writeSetupFile(const SetupFileInfo& setupFileInfo) const;

  void writeResults(const ResultsInfo& resultsInfo) const;

  std::size_t getNumRegions() const;

  const Region& getAddedRegion(std::size_t index) const;

  SolutionControl getSolutionControl() const;

  const SetupInfo& getSetupInfo() const;

  std::size_t getNumCouplingInterfaces() const;

  const CouplingInterface& getAddedCouplingInterface(std::size_t index) const;

  const Parameter& getInputParameter(std::size_t index) const;

  const Parameter& getOutputParameter(std::size_t index) const;

  std::size_t getNumInputParameters() const;

  std::size_t getNumOutputParameters() const;

  std::size_t getNumRealAttributes() const;

  std::size_t getNumIntegerAttributes() const;

  std::size_t getNumStringAttributes() const;

  const RealAttribute& getRealAttribute(std::size_t index) const;

  const IntegerAttribute& getIntegerAttribute(std::size_t index) const;

  const StringAttribute& getStringAttribute(std::size_t index) const;

  /* Deprecated functions */

  void completeCouplingSetup();

  void completeCouplingSetup(sysc::AnalysisType analysisType);

  void registerInputScalarVariableAccess(InputScalarVariableAccess* dataAccess);

  void registerInputVectorVariableAccess(InputVectorVariableAccess* dataAccess);

  void registerOutputScalarVariableAccess(OutputScalarVariableAccess* dataAccess);

  void registerOutputVectorVariableAccess(OutputVectorVariableAccess* dataAccess);

  MeshValidityStatus checkMeshValidity(const Region& region);

  MeshValidityStatus checkMeshValidity(const std::string& regionName);

  const Region& getRegion(std::size_t index) const;

  SystemCoupling(const SystemCoupling&) = delete;

  SystemCoupling(SystemCoupling&&) = default;

  SystemCoupling& operator=(const SystemCoupling&) = delete;

  SystemCoupling& operator=(SystemCoupling&&) = default;
};

}  // namespace sysc

Connect with Ansys