    

 ## On this page

  

 

 # sysc::SystemCoupling Class Reference

 Last update: 17.07.2025 

Provide the main class for interacting with the System Coupling participant library. [More...](classsysc_1_1SystemCoupling.xhtml#details)

`#include <<a class="el" href="SystemCoupling_8hpp_source.xhtml">SystemCoupling.hpp</a>>`

## <a id="pub-methods" name="pub-methods"></a>Public Member Functions

 [SystemCoupling](classsysc_1_1SystemCoupling.xhtml#aa85c07a47dbf3cccce8049e8c8fe86cc) () Provide a (default) constructor for the [SystemCoupling](classsysc_1_1SystemCoupling.xhtml "Provide the main class for interacting with the System Coupling participant library.") class for non-cosimulation mode. [More...](classsysc_1_1SystemCoupling.xhtml#aa85c07a47dbf3cccce8049e8c8fe86cc)  
  [SystemCoupling](classsysc_1_1SystemCoupling.xhtml#a0381ca6fb1dcf81258ada4e95c354ab9) (std::size\_t mpiCommunicator) Provide a constructor for the [SystemCoupling](classsysc_1_1SystemCoupling.xhtml "Provide the main class for interacting with the System Coupling participant library.") class for non-cosimulation mode with a custom MPI communicator. [More...](classsysc_1_1SystemCoupling.xhtml#a0381ca6fb1dcf81258ada4e95c354ab9)  
  [SystemCoupling](classsysc_1_1SystemCoupling.xhtml#a9f7e98bb312a412ae7bc81f0a49afa1a) (const [ParticipantInfo](structsysc_1_1ParticipantInfo.xhtml) &amp;participantInfo) Provide a constructor for the [SystemCoupling](classsysc_1_1SystemCoupling.xhtml "Provide the main class for interacting with the System Coupling participant library.") class with a custom struct representing the default input parameters. [More...](classsysc_1_1SystemCoupling.xhtml#a9f7e98bb312a412ae7bc81f0a49afa1a)  
  [SystemCoupling](classsysc_1_1SystemCoupling.xhtml#a28570e0829c5d0c2177d1b25b55b2da0) (const [ParticipantInfo](structsysc_1_1ParticipantInfo.xhtml) &amp;participantInfo, std::size\_t mpiCommunicator) Provide a constructor for the [SystemCoupling](classsysc_1_1SystemCoupling.xhtml "Provide the main class for interacting with the System Coupling participant library.") class with an mpiCommunicator object set to non default. [More...](classsysc_1_1SystemCoupling.xhtml#a28570e0829c5d0c2177d1b25b55b2da0)  
  [SystemCoupling](classsysc_1_1SystemCoupling.xhtml#a072c72997a85450479b102c3575c1c4f) (const std::string &amp;scHost, const unsigned short scPort, const std::string &amp;participantName, const std::string &amp;buildInformation="Unknown") Provide a constructor for the [SystemCoupling](classsysc_1_1SystemCoupling.xhtml "Provide the main class for interacting with the System Coupling participant library.") class for cosimulation mode. [More...](classsysc_1_1SystemCoupling.xhtml#a072c72997a85450479b102c3575c1c4f)  
  [SystemCoupling](classsysc_1_1SystemCoupling.xhtml#aca2f3a90d56d6e186a1aae119ce57495) (const std::string &amp;scHost, const unsigned short scPort, const std::string &amp;participantName, const std::size\_t mpiCommunicator, const std::string &amp;buildInformation) Provide a constructor for the [SystemCoupling](classsysc_1_1SystemCoupling.xhtml "Provide the main class for interacting with the System Coupling participant library.") class for cosimulation mode with a custom MPI communicator. [More...](classsysc_1_1SystemCoupling.xhtml#aca2f3a90d56d6e186a1aae119ce57495)  
 void [completeSetup](classsysc_1_1SystemCoupling.xhtml#a204a3a8145961af7bc28d2cfd58a4358) (const [sysc::SetupInfo](structsysc_1_1SetupInfo.xhtml) &amp;setupInfo) Provide a function to notify System Coupling that setup can be completed. [More...](classsysc_1_1SystemCoupling.xhtml#a204a3a8145961af7bc28d2cfd58a4358)  
 void [initializeAnalysis](classsysc_1_1SystemCoupling.xhtml#ab47a6eaf83eae538e17290a5c2582b8e) () Provide a function to notify System Coupling that analysis initialization can be completed. [More...](classsysc_1_1SystemCoupling.xhtml#ab47a6eaf83eae538e17290a5c2582b8e)  
 [sysc::TimeStep](structsysc_1_1TimeStep.xhtml) [getCurrentTimeStep](classsysc_1_1SystemCoupling.xhtml#a6ab306d83db2610887c8fb18c554eba6) () Provide a function to get current time step. [More...](classsysc_1_1SystemCoupling.xhtml#a6ab306d83db2610887c8fb18c554eba6)  
 bool [doIteration](classsysc_1_1SystemCoupling.xhtml#a0cb8cd28d752af2cfd0b4d27511ea306) () Provide a function to check whether to do a coupling iteration. [More...](classsysc_1_1SystemCoupling.xhtml#a0cb8cd28d752af2cfd0b4d27511ea306)  
 bool [doTimeStep](classsysc_1_1SystemCoupling.xhtml#a285a15756651ef5027191ca69dfab7e0) () Provide a function to check whether to do a coupling time step. [More...](classsysc_1_1SystemCoupling.xhtml#a285a15756651ef5027191ca69dfab7e0)  
 void [updateInputs](classsysc_1_1SystemCoupling.xhtml#a9c768f6965f14e8ab3308c7df4144da7) () Provide a function to update the participants input variables. [More...](classsysc_1_1SystemCoupling.xhtml#a9c768f6965f14e8ab3308c7df4144da7)  
 void [updateOutputs](classsysc_1_1SystemCoupling.xhtml#a468e5e084477cdaca2adee6c50edf7e9) ([ConvergenceStatus](group__SystemCouplingParticipantAPIs.xhtml#ga0b8801743579159eb41cf07d8372a734) status) Provide a function to update the participants output variables. [More...](classsysc_1_1SystemCoupling.xhtml#a468e5e084477cdaca2adee6c50edf7e9)  
 <a id="a4f15e4d02257cde7717b9fffae806311" name="a4f15e4d02257cde7717b9fffae806311"></a>void **disconnect** () Provide a function to end the analysis and disconnect from System Coupling.   
 <a id="a9d5c081a6a43f86de3aef366d6527730" name="a9d5c081a6a43f86de3aef366d6527730"></a>void **fatalError** (const std::string &amp;errorMessage) Provide a function to notify System Coupling about a fatal error.   
 void [addRegion](classsysc_1_1SystemCoupling.xhtml#afd8d4beebb3a46d80c9f9fcddc385db2) (const [Region](classsysc_1_1Region.xhtml) &amp;region) Provide a function to add a region that could be used in a coupled analysis. [More...](classsysc_1_1SystemCoupling.xhtml#afd8d4beebb3a46d80c9f9fcddc385db2)  
 void [addCouplingInterface](classsysc_1_1SystemCoupling.xhtml#ae4c93f4502c9df950fddddab3aab5eec) (const [CouplingInterface](classsysc_1_1CouplingInterface.xhtml) &amp;couplingInterface) Provide a function to add a coupling interface. [More...](classsysc_1_1SystemCoupling.xhtml#ae4c93f4502c9df950fddddab3aab5eec)  
 void [addCouplingInterface](classsysc_1_1SystemCoupling.xhtml#ae1f7fe88e678c07cde61acff8742b608) (const [CouplingInterface](classsysc_1_1CouplingInterface.xhtml) &amp;couplingInterface, bool autoGenerateTransfers) Provide a function to add a coupling interface. [More...](classsysc_1_1SystemCoupling.xhtml#ae1f7fe88e678c07cde61acff8742b608)  
 void [registerInputScalarDataAccess](classsysc_1_1SystemCoupling.xhtml#afa62b0864a1c2d99d6ddca9bd7111ffe) ([InputScalarDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga7dd9c918ef6adb34c5e7832dfb077cf2) \*const dataAccess) Provide a function to register input scalar data access. [More...](classsysc_1_1SystemCoupling.xhtml#afa62b0864a1c2d99d6ddca9bd7111ffe)  
 void [registerInputScalarDataAccess](classsysc_1_1SystemCoupling.xhtml#a76e7a0a0df2bb39824c48fd9ab96b0ca) ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [InputScalarDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga31d70598dce8c2bef6ec3f0c167ab271) \*const dataAccess) Provide a function to register input scalar data access. [More...](classsysc_1_1SystemCoupling.xhtml#a76e7a0a0df2bb39824c48fd9ab96b0ca)  
 void [registerInputVectorDataAccess](classsysc_1_1SystemCoupling.xhtml#a2e23606ee1a491fe0c2ba5f05ce0ee57) ([InputVectorDataAccess](group__SystemCouplingParticipantAPIs.xhtml#gab7625786f580e802bcae651a9e6b8ab6) \*const dataAccess) Provide a function to register input vector data access. [More...](classsysc_1_1SystemCoupling.xhtml#a2e23606ee1a491fe0c2ba5f05ce0ee57)  
 void [registerInputVectorDataAccess](classsysc_1_1SystemCoupling.xhtml#a6e75ee51746af2186e32f1297923a6e7) ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [InputVectorDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga12662b1595f7ffd8429f9e6d6cdcf4e5) \*const dataAccess) Provide a function to register input vector data access. [More...](classsysc_1_1SystemCoupling.xhtml#a6e75ee51746af2186e32f1297923a6e7)  
 void [registerOutputScalarDataAccess](classsysc_1_1SystemCoupling.xhtml#a314683b79ffddf7b82863c7d313b432d) ([OutputScalarDataAccess](group__SystemCouplingParticipantAPIs.xhtml#gaf919dd1650fbc5b6cede63027640a40f) \*const dataAccess) Provide a function to register output scalar data access. [More...](classsysc_1_1SystemCoupling.xhtml#a314683b79ffddf7b82863c7d313b432d)  
 void [registerOutputScalarDataAccess](classsysc_1_1SystemCoupling.xhtml#af101b406937d56e6e088aed31a935ea3) ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [OutputScalarDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga0198dfa2f53816088cfc3c0f94b33fb5) \*const dataAccess) Provide a function to register output scalar data access. [More...](classsysc_1_1SystemCoupling.xhtml#af101b406937d56e6e088aed31a935ea3)  
 void [registerOutputVectorDataAccess](classsysc_1_1SystemCoupling.xhtml#a304e501223c4c100625f7d599ef95a20) ([OutputVectorDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga3af176d8520259b81f0460e1299e04b6) \*const dataAccess) Provide a function to register output vector data access. [More...](classsysc_1_1SystemCoupling.xhtml#a304e501223c4c100625f7d599ef95a20)  
 void [registerOutputVectorDataAccess](classsysc_1_1SystemCoupling.xhtml#a21ee710a21628b3d10a2bc8b1e2aba94) ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [OutputVectorDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga816b3979bcee14cdb92a88c0621a8e1e) \*const dataAccess) Provide a function to register output vector data access. [More...](classsysc_1_1SystemCoupling.xhtml#a21ee710a21628b3d10a2bc8b1e2aba94)  
 void [registerInputComplexScalarDataAccess](classsysc_1_1SystemCoupling.xhtml#ad34d0e99d563866302168a500fc25f87) ([InputComplexScalarDataAccess](group__SystemCouplingParticipantAPIs.xhtml#gac45104dcb153caae0c4edac26e46351e) \*const dataAccess) Provide a function to register input complex scalar data access. [More...](classsysc_1_1SystemCoupling.xhtml#ad34d0e99d563866302168a500fc25f87)  
 void [registerInputComplexScalarDataAccess](classsysc_1_1SystemCoupling.xhtml#a680da341bf7ac88ec2915d8b8829d4fe) ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [InputComplexScalarDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga90ec216c6ff3f8ada5d0b0b4ea362b15) \*const dataAccess) Provide a function to register input complex scalar data access. [More...](classsysc_1_1SystemCoupling.xhtml#a680da341bf7ac88ec2915d8b8829d4fe)  
 void [registerInputComplexVectorDataAccess](classsysc_1_1SystemCoupling.xhtml#ad01282a8ac2f02ce29ec04c4658bf17e) ([InputComplexVectorDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga0cc318418bce4c3aa356f91798e962e7) \*const dataAccess) Provide a function to register input complex vector data access. [More...](classsysc_1_1SystemCoupling.xhtml#ad01282a8ac2f02ce29ec04c4658bf17e)  
 void [registerInputComplexVectorDataAccess](classsysc_1_1SystemCoupling.xhtml#a16dea92d21d3ca877ca8bfd81e18e94e) ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [InputComplexVectorDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#gaf213c1ae6a1bff131c598f99ad9320b4) \*const dataAccess) Provide a function to register input complex vector data access. [More...](classsysc_1_1SystemCoupling.xhtml#a16dea92d21d3ca877ca8bfd81e18e94e)  
 void [registerOutputComplexScalarDataAccess](classsysc_1_1SystemCoupling.xhtml#a24670b63201163eac7c03db3a0c15ff4) ([OutputComplexScalarDataAccess](group__SystemCouplingParticipantAPIs.xhtml#gaeb662bc24c2d2c6f4248f038eee43e74) \*const dataAccess) Provide a function to register output complex scalar data access. [More...](classsysc_1_1SystemCoupling.xhtml#a24670b63201163eac7c03db3a0c15ff4)  
 void [registerOutputComplexScalarDataAccess](classsysc_1_1SystemCoupling.xhtml#a8c245c51f9126744d65249e6a2312b99) ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [OutputComplexScalarDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga74e6e9bec4808c21fab845daa661b50c) \*const dataAccess) Provide a function to register output complex scalar data access. [More...](classsysc_1_1SystemCoupling.xhtml#a8c245c51f9126744d65249e6a2312b99)  
 void [registerOutputComplexVectorDataAccess](classsysc_1_1SystemCoupling.xhtml#ab15cbb6e23e6c09faa099e59864c08d6) ([OutputComplexVectorDataAccess](group__SystemCouplingParticipantAPIs.xhtml#gaec1b87f8104f48c01859a46d280894db) \*const dataAccess) Provide a function to register output complex vector data access. [More...](classsysc_1_1SystemCoupling.xhtml#ab15cbb6e23e6c09faa099e59864c08d6)  
 void [registerOutputComplexVectorDataAccess](classsysc_1_1SystemCoupling.xhtml#a3dca2396c7258c1a4ddd1be4fee2fd42) ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [OutputComplexVectorDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#gaa3871403c3c169499a051ce8cc88d9a7) \*const dataAccess) Provide a function to register output complex vector data access. [More...](classsysc_1_1SystemCoupling.xhtml#a3dca2396c7258c1a4ddd1be4fee2fd42)  
 void [registerSurfaceMeshAccess](classsysc_1_1SystemCoupling.xhtml#a9ccb1119e5f06b68f429564c9424e7ad) ([SurfaceMeshAccess](group__SystemCouplingParticipantAPIs.xhtml#ga31a21ade99a36c30fdc24d33c6d5c9aa) \*const meshAccess) Provide a function to register surface mesh access. [More...](classsysc_1_1SystemCoupling.xhtml#a9ccb1119e5f06b68f429564c9424e7ad)  
 void [registerSurfaceMeshAccess](classsysc_1_1SystemCoupling.xhtml#a4eb30212ad009f243ca04a58134f83ea) ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [SurfaceMeshAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#gaefc47d665f38f4380346fb9c29b9c8ff) \*const meshAccess) Provide a function to register surface mesh access. [More...](classsysc_1_1SystemCoupling.xhtml#a4eb30212ad009f243ca04a58134f83ea)  
 <a id="a4a5d33acc8f82e33d43ceb6232296d45" name="a4a5d33acc8f82e33d43ceb6232296d45"></a>void **registerZoneCountAccess** ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [ZoneCountAccess](group__SystemCouplingParticipantAPIs.xhtml#ga67496d998ace1dd2796a5a96f6356483) \*const zoneCountAccess) <a id="a1a6166fc63375b6d64290872366bbb08" name="a1a6166fc63375b6d64290872366bbb08"></a>void **registerSurfaceMeshAccess** ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [SurfaceMeshMultiZoneAccess](group__SystemCouplingParticipantAPIs.xhtml#ga78db51b86b998102a74753c41118d0de) \*const dataAccess) <a id="ab54924c84bfe744ddcc7b51245589faf" name="ab54924c84bfe744ddcc7b51245589faf"></a>void **registerVolumeMeshAccess** ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [VolumeMeshMultiZoneAccess](group__SystemCouplingParticipantAPIs.xhtml#gaf8cf8d3d04cd46c0841bd0d1fdb54158) \*const dataAccess) <a id="a4cfe77de52b319e7f945baa4c56fdd8f" name="a4cfe77de52b319e7f945baa4c56fdd8f"></a>void **registerInputScalarDataAccess** ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [InputScalarDataMultiZoneAccess](group__SystemCouplingParticipantAPIs.xhtml#ga3b4a0b9036a3be955d417a16c6acb695) \*const dataAccess) <a id="a53436a7f830c3ce55ae2a45fc601282a" name="a53436a7f830c3ce55ae2a45fc601282a"></a>void **registerOutputScalarDataAccess** ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [OutputScalarDataMultiZoneAccess](group__SystemCouplingParticipantAPIs.xhtml#gaad003be96e3cd29fc18e0d2a27889db4) \*const dataAccess) <a id="a384bbda903f33a135f0e57d9076ea406" name="a384bbda903f33a135f0e57d9076ea406"></a>void **registerInputVectorDataAccess** ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [InputVectorDataMultiZoneAccess](group__SystemCouplingParticipantAPIs.xhtml#ga59cfd8bf053c1492e4c0a6b4c0109ef6) \*const dataAccess) <a id="a7ea98bc277c37705bb2d889825be7a04" name="a7ea98bc277c37705bb2d889825be7a04"></a>void **registerOutputVectorDataAccess** ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [OutputVectorDataMultiZoneAccess](group__SystemCouplingParticipantAPIs.xhtml#ga46429473df8e53efff6e5d967897a291) \*const dataAccess) void [registerVolumeMeshAccess](classsysc_1_1SystemCoupling.xhtml#a37c591107d6b76d87a5dd7c6f0199c51) ([VolumeMeshAccess](group__SystemCouplingParticipantAPIs.xhtml#ga7a37f14608ada16bb16d44c498325fff) \*const meshAccess) Provide a function to register volume mesh access. [More...](classsysc_1_1SystemCoupling.xhtml#a37c591107d6b76d87a5dd7c6f0199c51)  
 void [registerVolumeMeshAccess](classsysc_1_1SystemCoupling.xhtml#a77a36ef05a78ae9020fc2ac63c49dd4a) ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [VolumeMeshAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga6c3e4e3f977efd6284430b6f8e918ce1) \*const meshAccess) Provide a function to register volume mesh access. [More...](classsysc_1_1SystemCoupling.xhtml#a77a36ef05a78ae9020fc2ac63c49dd4a)  
 void [registerPointCloudAccess](classsysc_1_1SystemCoupling.xhtml#a081e92271343f5e8f274a26bb8a53250) ([PointCloudAccess](group__SystemCouplingParticipantAPIs.xhtml#ga1651bb5df846358dfae0401b4a51331d) \*const pointCloudAccess) Provide a function to register point cloud access. [More...](classsysc_1_1SystemCoupling.xhtml#a081e92271343f5e8f274a26bb8a53250)  
 void [registerPointCloudAccess](classsysc_1_1SystemCoupling.xhtml#a0211f151640719613160e422104bacab) ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [PointCloudAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga1ec70c59d86f6f43cc865c72e4a9d76e) \*const pointCloudAccess) Provide a function to register point cloud access. [More...](classsysc_1_1SystemCoupling.xhtml#a0211f151640719613160e422104bacab)  
 void [registerPointCloudAccess](classsysc_1_1SystemCoupling.xhtml#ae348c4f9962a2ebb4b9ca1a28db9e6fb) ([OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80) opaqueDataAccess, [PointCloudMultiZoneAccess](group__SystemCouplingParticipantAPIs.xhtml#ga2108977976cabe1b6207eb8bc58175f4) \*const pointCloudAccess) Provide a function to register point cloud access. [More...](classsysc_1_1SystemCoupling.xhtml#ae348c4f9962a2ebb4b9ca1a28db9e6fb)  
 void [registerRestartPointCreation](classsysc_1_1SystemCoupling.xhtml#abc975e2b015e026587123609dcf51d49) ([RestartPointCreation](group__SystemCouplingParticipantAPIs.xhtml#ga94caa804f294a50dad34a53274255657) \*const restartPointCreation) Provide a function to register a restart point creation callback. [More...](classsysc_1_1SystemCoupling.xhtml#abc975e2b015e026587123609dcf51d49)  
 bool [writeSetupFile](classsysc_1_1SystemCoupling.xhtml#a3d0f96215b1b4609d46e0772c3e3578b) (const [SetupFileInfo](structsysc_1_1SetupFileInfo.xhtml) &amp;setupFileInfo) const Provide a function to write the setup file. [More...](classsysc_1_1SystemCoupling.xhtml#a3d0f96215b1b4609d46e0772c3e3578b)  
 <a id="ac9b3de74b577b71eccf44c901ba0d225" name="ac9b3de74b577b71eccf44c901ba0d225"></a>void **writeResults** (const [ResultsInfo](structsysc_1_1ResultsInfo.xhtml) &amp;resultsInfo) const Write results to a file.   
 std::size\_t [getNumRegions](classsysc_1_1SystemCoupling.xhtml#af1cac0616352ad6998eefad0593c8ffb) () const Provide a function to return the number of regions. [More...](classsysc_1_1SystemCoupling.xhtml#af1cac0616352ad6998eefad0593c8ffb)  
 const [Region](classsysc_1_1Region.xhtml) &amp; [getAddedRegion](classsysc_1_1SystemCoupling.xhtml#a2428cf1cc5e4ba5b689a868225e93b8d) (std::size\_t index) const Provide a function to return region information. [More...](classsysc_1_1SystemCoupling.xhtml#a2428cf1cc5e4ba5b689a868225e93b8d)  
 <a id="ace4a88af60a1aa93a68fa4b071592413" name="ace4a88af60a1aa93a68fa4b071592413"></a>[SolutionControl](structsysc_1_1SolutionControl.xhtml) **getSolutionControl** () const Get solution control.   
 std::size\_t [getNumCouplingInterfaces](classsysc_1_1SystemCoupling.xhtml#a83c9856515b950fa453f36a29c3dd0ca) () const Provide a function to return the number of coupling interfaces. [More...](classsysc_1_1SystemCoupling.xhtml#a83c9856515b950fa453f36a29c3dd0ca)  
 const [CouplingInterface](classsysc_1_1CouplingInterface.xhtml) &amp; [getAddedCouplingInterface](classsysc_1_1SystemCoupling.xhtml#adeff9bb5d808302c5e44bc26468a5aec) (std::size\_t index) const Provide a function to return coupling interface. [More...](classsysc_1_1SystemCoupling.xhtml#adeff9bb5d808302c5e44bc26468a5aec)  
 <a id="a6d389ee7e0740e0348919cd3b7d956f7" name="a6d389ee7e0740e0348919cd3b7d956f7"></a>void **completeCouplingSetup** () This function will be deprecated. Use [completeSetup()](classsysc_1_1SystemCoupling.xhtml#a204a3a8145961af7bc28d2cfd58a4358 "Provide a function to notify System Coupling that setup can be completed.") instead.   
 <a id="a683c376ebe3565f5703383e2e440c865" name="a683c376ebe3565f5703383e2e440c865"></a>void **completeCouplingSetup** (const [sysc::AnalysisType](group__SystemCouplingParticipantAPIs.xhtml#gaffd523474fbd708f481a712f1841a967) analysisType) This function will be deprecated. Use [completeSetup()](classsysc_1_1SystemCoupling.xhtml#a204a3a8145961af7bc28d2cfd58a4358 "Provide a function to notify System Coupling that setup can be completed.") instead.   
 <a id="a556d8d89c5dfc9857f8a40345cbfeb90" name="a556d8d89c5dfc9857f8a40345cbfeb90"></a>void **registerInputScalarVariableAccess** (InputScalarVariableAccess \*const dataAccess) Deprecated - do not use.   
 <a id="a749d605a6642a6b5c094bde1e66109f1" name="a749d605a6642a6b5c094bde1e66109f1"></a>void **registerInputVectorVariableAccess** (InputVectorVariableAccess \*const dataAccess) Deprecated - do not use.   
 <a id="a62a1b77e76a3b5bc24cbb9990dfae9bd" name="a62a1b77e76a3b5bc24cbb9990dfae9bd"></a>void **registerOutputScalarVariableAccess** (OutputScalarVariableAccess \*const dataAccess) Deprecated - do not use.   
 <a id="adb7212327ce9526fdd4af583b8e5b831" name="adb7212327ce9526fdd4af583b8e5b831"></a>void **registerOutputVectorVariableAccess** (OutputVectorVariableAccess \*const dataAccess) Deprecated - do not use.   
 <a id="a8c7d2613f81b8d9a5bd81db9dcbae8fd" name="a8c7d2613f81b8d9a5bd81db9dcbae8fd"></a>[MeshValidityStatus](structsysc_1_1MeshValidityStatus.xhtml) **checkMeshValidity** (const [Region](classsysc_1_1Region.xhtml) &amp;region) Deprecated. Use [sysc::SurfaceMesh::checkMeshValidity](classsysc_1_1SurfaceMesh.xhtml#a786a6cbbf2ab08214207b4fe38f0f013 "Provide a method to perform simple mesh validity checks.") instead.   
 <a id="ac6a85f6aae44d330b8042dc9296bd59b" name="ac6a85f6aae44d330b8042dc9296bd59b"></a>[MeshValidityStatus](structsysc_1_1MeshValidityStatus.xhtml) **checkMeshValidity** (const std::string &amp;regionName) Deprecated. Use [sysc::SurfaceMesh::checkMeshValidity](classsysc_1_1SurfaceMesh.xhtml#a786a6cbbf2ab08214207b4fe38f0f013 "Provide a method to perform simple mesh validity checks.") instead.   
 <a id="aadef536f9be563c752beca8ea2c07ca4" name="aadef536f9be563c752beca8ea2c07ca4"></a>const [Region](classsysc_1_1Region.xhtml) &amp; **getRegion** (std::size\_t index) const Deprecated. Use [getAddedRegion()](classsysc_1_1SystemCoupling.xhtml#a2428cf1cc5e4ba5b689a868225e93b8d "Provide a function to return region information.") instead.   
 <a id="a692355d68459adf3eddfaef350bf0c9c" name="a692355d68459adf3eddfaef350bf0c9c"></a> **SystemCoupling** (const [SystemCoupling](classsysc_1_1SystemCoupling.xhtml) &amp;)=delete Delete the copy-constructor.   
 <a id="a8d869edcfaaace05684e095add7d733b" name="a8d869edcfaaace05684e095add7d733b"></a> **SystemCoupling** ([SystemCoupling](classsysc_1_1SystemCoupling.xhtml) &amp;&amp;)=default Provide the move-constructor.   
 <a id="aaa079f08b735808222d3c74d30e81982" name="aaa079f08b735808222d3c74d30e81982"></a>[SystemCoupling](classsysc_1_1SystemCoupling.xhtml) &amp; **operator=** (const [SystemCoupling](classsysc_1_1SystemCoupling.xhtml) &amp;)=delete Delete the copy-assign operator.   
 <a id="a498fa28f49b45536cab4c27e8cef5cf0" name="a498fa28f49b45536cab4c27e8cef5cf0"></a>[SystemCoupling](classsysc_1_1SystemCoupling.xhtml) &amp; **operator=** ([SystemCoupling](classsysc_1_1SystemCoupling.xhtml) &amp;&amp;)=default Provide the move-assign operator.   
 <a id="details" name="details"></a>## Detailed Description

Provide the main class for interacting with the System Coupling participant library.

For co-simulation, this class maintains the socket connection to the System Coupling solver. The coupling participant will need to provide host and port information for existing System Coupling server, as well as the name of this coupling participant.

For mapping, an instance of this class should be created to perform mapping.

There should only be one instance of this System Coupling class.

Definition at line [44](SystemCoupling_8hpp_source.xhtml#l00044) of file [SystemCoupling.hpp](SystemCoupling_8hpp_source.xhtml).



## Constructor &amp; Destructor Documentation

<a id="aa85c07a47dbf3cccce8049e8c8fe86cc" name="aa85c07a47dbf3cccce8049e8c8fe86cc"></a>## [◆ ](#aa85c07a47dbf3cccce8049e8c8fe86cc)SystemCoupling() \[1/6\]

 sysc::SystemCoupling::SystemCoupling  ( ) 

Provide a (default) constructor for the [SystemCoupling](classsysc_1_1SystemCoupling.xhtml "Provide the main class for interacting with the System Coupling participant library.") class for non-cosimulation mode.

This is a default constructor that will initialize the participant library in standalone (non-cosimulation) mode.

When running in parallel MPI environment, the parallel communication within the participant library will use MPI\_COMM\_WORLD communicator.





<a id="a0381ca6fb1dcf81258ada4e95c354ab9" name="a0381ca6fb1dcf81258ada4e95c354ab9"></a>## [◆ ](#a0381ca6fb1dcf81258ada4e95c354ab9)SystemCoupling() \[2/6\]

 sysc::SystemCoupling::SystemCoupling  ( std::size\_t  *mpiCommunicator*) 

Provide a constructor for the [SystemCoupling](classsysc_1_1SystemCoupling.xhtml "Provide the main class for interacting with the System Coupling participant library.") class for non-cosimulation mode with a custom MPI communicator.

Parameters \[in\]mpiCommunicatorMPI communicator cast to std::size\_t.This will initialize the participant library in standalone mode and will use the provided MPI communicator for all parallel communication.





<a id="a9f7e98bb312a412ae7bc81f0a49afa1a" name="a9f7e98bb312a412ae7bc81f0a49afa1a"></a>## [◆ ](#a9f7e98bb312a412ae7bc81f0a49afa1a)SystemCoupling() \[3/6\]

 sysc::SystemCoupling::SystemCoupling  ( const [ParticipantInfo](structsysc_1_1ParticipantInfo.xhtml) &amp;  *participantInfo*) 

Provide a constructor for the [SystemCoupling](classsysc_1_1SystemCoupling.xhtml "Provide the main class for interacting with the System Coupling participant library.") class with a custom struct representing the default input parameters.

Parameters \[in\]participantInfoThe struct containing the attributes needed to connect to System Coupling: scHost, scPort, participantName, etc. 



<a id="a28570e0829c5d0c2177d1b25b55b2da0" name="a28570e0829c5d0c2177d1b25b55b2da0"></a>## [◆ ](#a28570e0829c5d0c2177d1b25b55b2da0)SystemCoupling() \[4/6\]

 sysc::SystemCoupling::SystemCoupling  ( const [ParticipantInfo](structsysc_1_1ParticipantInfo.xhtml) &amp;  *participantInfo*,    std::size\_t  *mpiCommunicator*   ) 

Provide a constructor for the [SystemCoupling](classsysc_1_1SystemCoupling.xhtml "Provide the main class for interacting with the System Coupling participant library.") class with an mpiCommunicator object set to non default.

Parameters \[in\]participantInfoThe struct containing the attributes needed to connect to System Coupling: scHost, scPort, participantName, etc.\[in\]mpiCommunicatorMPI communicator cast to std::size\_t. 



<a id="a072c72997a85450479b102c3575c1c4f" name="a072c72997a85450479b102c3575c1c4f"></a>## [◆ ](#a072c72997a85450479b102c3575c1c4f)SystemCoupling() \[5/6\]

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

Provide a constructor for the [SystemCoupling](classsysc_1_1SystemCoupling.xhtml "Provide the main class for interacting with the System Coupling participant library.") class for cosimulation mode.

Initializes the participant library in cosimulation mode. It establishes the connection to the System Coupling solver.

The participant solver must have obtained the host and port information from System Coupling prior to creating this object (e.g. via an input argument when participant application was started). Copy constructor and assignment operators are disabled to avoid copying the created object.

Parameters \[in\]scHostName of the host on which System Coupling is running.\[in\]scPortPort number on which System Coupling is listening for participant connections.\[in\]participantNameName of this participant (e.g. "MAPDL-1")\[in\]buildInformationInformation about the build of this participant solver. This parameter is optional - default is "Unknown". 



<a id="aca2f3a90d56d6e186a1aae119ce57495" name="aca2f3a90d56d6e186a1aae119ce57495"></a>## [◆ ](#aca2f3a90d56d6e186a1aae119ce57495)SystemCoupling() \[6/6\]

 sysc::SystemCoupling::SystemCoupling  ( const std::string &amp;  *scHost*,    const unsigned short  *scPort*,    const std::string &amp;  *participantName*,    const std::size\_t  *mpiCommunicator*,    const std::string &amp;  *buildInformation*   ) 

Provide a constructor for the [SystemCoupling](classsysc_1_1SystemCoupling.xhtml "Provide the main class for interacting with the System Coupling participant library.") class for cosimulation mode with a custom MPI communicator.

This constructor works the same way as the one above (see above), but it takes in one additional argument, which is the MPI communicator, cast as std::size\_t.

Parameters \[in\]scHostName of the host on which System Coupling is running.\[in\]scPortPort number on which System Coupling is listening for participant connections.\[in\]participantNameName of this participant (e.g. "MAPDL-1")\[in\]mpiCommunicatorMPI communicator cast to std::size\_t.\[in\]buildInformationInformation about the build of this participant solver. This parameter is optional - default is "Unknown". 



## Member Function Documentation

<a id="ae4c93f4502c9df950fddddab3aab5eec" name="ae4c93f4502c9df950fddddab3aab5eec"></a>## [◆ ](#ae4c93f4502c9df950fddddab3aab5eec)addCouplingInterface() \[1/2\]

 void sysc::SystemCoupling::addCouplingInterface  ( const [CouplingInterface](classsysc_1_1CouplingInterface.xhtml) &amp;  *couplingInterface*) 

Provide a function to add a coupling interface.

Parameters \[in\]couplingInterface- coupling interface to be added.Data transfers will be automatically created. If a variable is defined as an output on all regions on one side of the interface and as an input on all regions on the opposite side of the interface, then the data transfer will be added for this variable.

If this coupling interface has already been added, then this call will have no effect.

If a different coupling interface with the same has already been added, then a runtime error will be thrown.

If the coupling interface name contains invalid characters, then a runtime error will be thrown.

See [sysc::CouplingInterface](classsysc_1_1CouplingInterface.xhtml "Provide a class for a coupling interface.") for more details.





<a id="ae1f7fe88e678c07cde61acff8742b608" name="ae1f7fe88e678c07cde61acff8742b608"></a>## [◆ ](#ae1f7fe88e678c07cde61acff8742b608)addCouplingInterface() \[2/2\]

 void sysc::SystemCoupling::addCouplingInterface  ( const [CouplingInterface](classsysc_1_1CouplingInterface.xhtml) &amp;  *couplingInterface*,    bool  *autoGenerateTransfers*   ) 

Provide a function to add a coupling interface.

Parameters \[in\]couplingInterface- coupling interface to be added.\[in\]autoGenerateTransfers- flag whether to automatically create data transfers.If this coupling interface has already been added, then this call will have no effect.

If a different coupling interface with the same has already been added, then a runtime error will be thrown.

If the coupling interface name contains invalid characters, then a runtime error will be thrown.

If autoGenerateTransfers is true, then the data transfers are generated automatically according to the following rule: if a variable is defined as an output on all regions on one side of the interface and as an input on all regions on the opposite side of the interface, then the data transfer will be added for this variable.

See [sysc::CouplingInterface](classsysc_1_1CouplingInterface.xhtml "Provide a class for a coupling interface.") for more details.





<a id="afd8d4beebb3a46d80c9f9fcddc385db2" name="afd8d4beebb3a46d80c9f9fcddc385db2"></a>## [◆ ](#afd8d4beebb3a46d80c9f9fcddc385db2)addRegion()

 void sysc::SystemCoupling::addRegion  ( const [Region](classsysc_1_1Region.xhtml) &amp;  *region*) 

Provide a function to add a region that could be used in a coupled analysis.

Parameters \[in\]region- [Region](classsysc_1_1Region.xhtml "Provide a class for a System Coupling region.") to be added.If this region has already been added, then this call will have no effect.

If a different region with the same has already been added, then a runtime error will be thrown.

If the region name contains invalid characters, then a runtime error will be thrown.





<a id="a204a3a8145961af7bc28d2cfd58a4358" name="a204a3a8145961af7bc28d2cfd58a4358"></a>## [◆ ](#a204a3a8145961af7bc28d2cfd58a4358)completeSetup()

 void sysc::SystemCoupling::completeSetup  ( const [sysc::SetupInfo](structsysc_1_1SetupInfo.xhtml) &amp;  *setupInfo*) 

Provide a function to notify System Coupling that setup can be completed.

After this function is called, coupled analysis setup can no longer be updated, i.e. regions and variables cannot be changed. Participant should also pass in [sysc::SetupInfo](structsysc_1_1SetupInfo.xhtml "Provide a structure for System Coupling setup information.") struct to provide additional information about the setup, such as whether steady or transient analysis is to be performed.

Once the setup is complete, any subsequent call to complete the setup will have no effect.





<a id="a0cb8cd28d752af2cfd0b4d27511ea306" name="a0cb8cd28d752af2cfd0b4d27511ea306"></a>## [◆ ](#a0cb8cd28d752af2cfd0b4d27511ea306)doIteration()

 bool sysc::SystemCoupling::doIteration  ( ) 

Provide a function to check whether to do a coupling iteration.

This function returns true if another coupling iteration is required, otherwise it returns false.





<a id="a285a15756651ef5027191ca69dfab7e0" name="a285a15756651ef5027191ca69dfab7e0"></a>## [◆ ](#a285a15756651ef5027191ca69dfab7e0)doTimeStep()

 bool sysc::SystemCoupling::doTimeStep  ( ) 

Provide a function to check whether to do a coupling time step.

This function returns true if another coupling time step is required, otherwise it returns false.

This function should be called to check if another coupling time step should be done. If the previous coupling time step is finished and another time step should be performed, then calling this function will tell System Coupling that the coupling participant is going to advance to the next time step (i.e. calling [doTimeStep()](classsysc_1_1SystemCoupling.xhtml#a285a15756651ef5027191ca69dfab7e0 "Provide a function to check whether to do a coupling time step.") will cause [doIteration()](classsysc_1_1SystemCoupling.xhtml#a0cb8cd28d752af2cfd0b4d27511ea306 "Provide a function to check whether to do a coupling iteration.") to change from returning false to returning true, under the conditions described above).

This function only makes sense for transient analysis. It will always return false for steady analysis.





<a id="adeff9bb5d808302c5e44bc26468a5aec" name="adeff9bb5d808302c5e44bc26468a5aec"></a>## [◆ ](#adeff9bb5d808302c5e44bc26468a5aec)getAddedCouplingInterface()

 const [CouplingInterface](classsysc_1_1CouplingInterface.xhtml) &amp; sysc::SystemCoupling::getAddedCouplingInterface  ( std::size\_t  *index*)  const

Provide a function to return coupling interface.

Parameters \[in\]index- coupling interface indexReturnsReference to the coupling interface at specified index. 



<a id="a2428cf1cc5e4ba5b689a868225e93b8d" name="a2428cf1cc5e4ba5b689a868225e93b8d"></a>## [◆ ](#a2428cf1cc5e4ba5b689a868225e93b8d)getAddedRegion()

 const [Region](classsysc_1_1Region.xhtml) &amp; sysc::SystemCoupling::getAddedRegion  ( std::size\_t  *index*)  const

Provide a function to return region information.

Parameters \[in\]index- region indexReturnsReference to region information at specified index. 



<a id="a6ab306d83db2610887c8fb18c554eba6" name="a6ab306d83db2610887c8fb18c554eba6"></a>## [◆ ](#a6ab306d83db2610887c8fb18c554eba6)getCurrentTimeStep()

 [sysc::TimeStep](structsysc_1_1TimeStep.xhtml) sysc::SystemCoupling::getCurrentTimeStep  ( ) 

Provide a function to get current time step.

ReturnsReturns a time step struct, which contains time step number, start time, and time step size for the current coupling time step.A default value (time step number 0, start time 0.0, time step size 0.0) is returned if this function is called outside the coupled analysis loop or if the analysis is steady.





<a id="a83c9856515b950fa453f36a29c3dd0ca" name="a83c9856515b950fa453f36a29c3dd0ca"></a>## [◆ ](#a83c9856515b950fa453f36a29c3dd0ca)getNumCouplingInterfaces()

 std::size\_t sysc::SystemCoupling::getNumCouplingInterfaces  ( )  const

Provide a function to return the number of coupling interfaces.

ReturnsNumber of coupling interfaces. 



<a id="af1cac0616352ad6998eefad0593c8ffb" name="af1cac0616352ad6998eefad0593c8ffb"></a>## [◆ ](#af1cac0616352ad6998eefad0593c8ffb)getNumRegions()

 std::size\_t sysc::SystemCoupling::getNumRegions  ( )  const

Provide a function to return the number of regions.

ReturnsNumber of regions. 



<a id="ab47a6eaf83eae538e17290a5c2582b8e" name="ab47a6eaf83eae538e17290a5c2582b8e"></a>## [◆ ](#ab47a6eaf83eae538e17290a5c2582b8e)initializeAnalysis()

 void sysc::SystemCoupling::initializeAnalysis  ( ) 

Provide a function to notify System Coupling that analysis initialization can be completed.

This function must be called after registering mesh and variable data access and prior to entering the coupled analysis loop.

If this function is called before the coupled analysis is complete, it will automatically complete the coupled analysis and assume steady analysis type.





<a id="ad34d0e99d563866302168a500fc25f87" name="ad34d0e99d563866302168a500fc25f87"></a>## [◆ ](#ad34d0e99d563866302168a500fc25f87)registerInputComplexScalarDataAccess() \[1/2\]

 void sysc::SystemCoupling::registerInputComplexScalarDataAccess  ( [InputComplexScalarDataAccess](group__SystemCouplingParticipantAPIs.xhtml#gac45104dcb153caae0c4edac26e46351e) \*const  *dataAccess*) 

Provide a function to register input complex scalar data access.

Parameters dataAccess- a pointer to the function that conforms to sysc::InputComplexScalarDataAccess prototype. 



<a id="a680da341bf7ac88ec2915d8b8829d4fe" name="a680da341bf7ac88ec2915d8b8829d4fe"></a>## [◆ ](#a680da341bf7ac88ec2915d8b8829d4fe)registerInputComplexScalarDataAccess() \[2/2\]

 void sysc::SystemCoupling::registerInputComplexScalarDataAccess  ( [OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80)  *opaqueDataAccess*,    [InputComplexScalarDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga90ec216c6ff3f8ada5d0b0b4ea362b15) \*const  *dataAccess*   ) 

Provide a function to register input complex scalar data access.

Parameters opaqueDataAccess- a pointer that is passed into the callback function. dataAccess- a pointer to the function that conforms to sysc::InputComplexScalarDataAccess prototype. 



<a id="ad01282a8ac2f02ce29ec04c4658bf17e" name="ad01282a8ac2f02ce29ec04c4658bf17e"></a>## [◆ ](#ad01282a8ac2f02ce29ec04c4658bf17e)registerInputComplexVectorDataAccess() \[1/2\]

 void sysc::SystemCoupling::registerInputComplexVectorDataAccess  ( [InputComplexVectorDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga0cc318418bce4c3aa356f91798e962e7) \*const  *dataAccess*) 

Provide a function to register input complex vector data access.

Parameters dataAccess- a pointer to the function that conforms to InputComplexVectorDataAccess prototype. 



<a id="a16dea92d21d3ca877ca8bfd81e18e94e" name="a16dea92d21d3ca877ca8bfd81e18e94e"></a>## [◆ ](#a16dea92d21d3ca877ca8bfd81e18e94e)registerInputComplexVectorDataAccess() \[2/2\]

 void sysc::SystemCoupling::registerInputComplexVectorDataAccess  ( [OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80)  *opaqueDataAccess*,    [InputComplexVectorDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#gaf213c1ae6a1bff131c598f99ad9320b4) \*const  *dataAccess*   ) 

Provide a function to register input complex vector data access.

Parameters opaqueDataAccess- a pointer that is passed into the callback function. dataAccess- a pointer to the function that conforms to InputComplexVectorDataAccess prototype. 



<a id="afa62b0864a1c2d99d6ddca9bd7111ffe" name="afa62b0864a1c2d99d6ddca9bd7111ffe"></a>## [◆ ](#afa62b0864a1c2d99d6ddca9bd7111ffe)registerInputScalarDataAccess() \[1/2\]

 void sysc::SystemCoupling::registerInputScalarDataAccess  ( [InputScalarDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga7dd9c918ef6adb34c5e7832dfb077cf2) \*const  *dataAccess*) 

Provide a function to register input scalar data access.

Parameters dataAccess- a pointer to the function that conforms to sysc::InputScalarDataAccess prototype. 



<a id="a76e7a0a0df2bb39824c48fd9ab96b0ca" name="a76e7a0a0df2bb39824c48fd9ab96b0ca"></a>## [◆ ](#a76e7a0a0df2bb39824c48fd9ab96b0ca)registerInputScalarDataAccess() \[2/2\]

 void sysc::SystemCoupling::registerInputScalarDataAccess  ( [OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80)  *opaqueDataAccess*,    [InputScalarDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga31d70598dce8c2bef6ec3f0c167ab271) \*const  *dataAccess*   ) 

Provide a function to register input scalar data access.

Parameters opaqueDataAccess- a pointer that is passed into the callback function. dataAccess- a pointer to the function that conforms to sysc::InputScalarDataAccessWithPointer prototype. 



<a id="a2e23606ee1a491fe0c2ba5f05ce0ee57" name="a2e23606ee1a491fe0c2ba5f05ce0ee57"></a>## [◆ ](#a2e23606ee1a491fe0c2ba5f05ce0ee57)registerInputVectorDataAccess() \[1/2\]

 void sysc::SystemCoupling::registerInputVectorDataAccess  ( [InputVectorDataAccess](group__SystemCouplingParticipantAPIs.xhtml#gab7625786f580e802bcae651a9e6b8ab6) \*const  *dataAccess*) 

Provide a function to register input vector data access.

Parameters dataAccess- a pointer to the function that conforms to sysc::InputVectorDataAccess function prototype. 



<a id="a6e75ee51746af2186e32f1297923a6e7" name="a6e75ee51746af2186e32f1297923a6e7"></a>## [◆ ](#a6e75ee51746af2186e32f1297923a6e7)registerInputVectorDataAccess() \[2/2\]

 void sysc::SystemCoupling::registerInputVectorDataAccess  ( [OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80)  *opaqueDataAccess*,    [InputVectorDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga12662b1595f7ffd8429f9e6d6cdcf4e5) \*const  *dataAccess*   ) 

Provide a function to register input vector data access.

Parameters opaqueDataAccess- a pointer that is passed into the callback function. dataAccess- a pointer to the function that conforms to sysc::InputVectorDataAccessWithPointer prototype. 



<a id="a8c245c51f9126744d65249e6a2312b99" name="a8c245c51f9126744d65249e6a2312b99"></a>## [◆ ](#a8c245c51f9126744d65249e6a2312b99)registerOutputComplexScalarDataAccess() \[1/2\]

 void sysc::SystemCoupling::registerOutputComplexScalarDataAccess  ( [OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80)  *opaqueDataAccess*,    [OutputComplexScalarDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga74e6e9bec4808c21fab845daa661b50c) \*const  *dataAccess*   ) 

Provide a function to register output complex scalar data access.

Parameters opaqueDataAccess- a pointer that is passed into the callback function. dataAccess- a pointer to the function that conforms to OutputComplexScalarDataAccess prototype. 



<a id="a24670b63201163eac7c03db3a0c15ff4" name="a24670b63201163eac7c03db3a0c15ff4"></a>## [◆ ](#a24670b63201163eac7c03db3a0c15ff4)registerOutputComplexScalarDataAccess() \[2/2\]

 void sysc::SystemCoupling::registerOutputComplexScalarDataAccess  ( [OutputComplexScalarDataAccess](group__SystemCouplingParticipantAPIs.xhtml#gaeb662bc24c2d2c6f4248f038eee43e74) \*const  *dataAccess*) 

Provide a function to register output complex scalar data access.

Parameters dataAccess- a pointer to the function that conforms to OutputComplexScalarDataAccess prototype. 



<a id="a3dca2396c7258c1a4ddd1be4fee2fd42" name="a3dca2396c7258c1a4ddd1be4fee2fd42"></a>## [◆ ](#a3dca2396c7258c1a4ddd1be4fee2fd42)registerOutputComplexVectorDataAccess() \[1/2\]

 void sysc::SystemCoupling::registerOutputComplexVectorDataAccess  ( [OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80)  *opaqueDataAccess*,    [OutputComplexVectorDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#gaa3871403c3c169499a051ce8cc88d9a7) \*const  *dataAccess*   ) 

Provide a function to register output complex vector data access.

Parameters opaqueDataAccess- a pointer that is passed into the callback function. dataAccess- a pointer to the function that conforms to OutputComplexVectorDataAccess prototype. 



<a id="ab15cbb6e23e6c09faa099e59864c08d6" name="ab15cbb6e23e6c09faa099e59864c08d6"></a>## [◆ ](#ab15cbb6e23e6c09faa099e59864c08d6)registerOutputComplexVectorDataAccess() \[2/2\]

 void sysc::SystemCoupling::registerOutputComplexVectorDataAccess  ( [OutputComplexVectorDataAccess](group__SystemCouplingParticipantAPIs.xhtml#gaec1b87f8104f48c01859a46d280894db) \*const  *dataAccess*) 

Provide a function to register output complex vector data access.

Parameters dataAccess- a pointer to the function that conforms to OutputComplexVectorDataAccess prototype. 



<a id="af101b406937d56e6e088aed31a935ea3" name="af101b406937d56e6e088aed31a935ea3"></a>## [◆ ](#af101b406937d56e6e088aed31a935ea3)registerOutputScalarDataAccess() \[1/2\]

 void sysc::SystemCoupling::registerOutputScalarDataAccess  ( [OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80)  *opaqueDataAccess*,    [OutputScalarDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga0198dfa2f53816088cfc3c0f94b33fb5) \*const  *dataAccess*   ) 

Provide a function to register output scalar data access.

Parameters opaqueDataAccess- a pointer that is passed into the callback function. dataAccess- a pointer to the function that conforms to sysc::OutputScalarDataAccessWithPointer prototype. 



<a id="a314683b79ffddf7b82863c7d313b432d" name="a314683b79ffddf7b82863c7d313b432d"></a>## [◆ ](#a314683b79ffddf7b82863c7d313b432d)registerOutputScalarDataAccess() \[2/2\]

 void sysc::SystemCoupling::registerOutputScalarDataAccess  ( [OutputScalarDataAccess](group__SystemCouplingParticipantAPIs.xhtml#gaf919dd1650fbc5b6cede63027640a40f) \*const  *dataAccess*) 

Provide a function to register output scalar data access.

Parameters dataAccess- a pointer to the function that conforms to sysc::OutputScalarDataAccess function prototype. 



<a id="a21ee710a21628b3d10a2bc8b1e2aba94" name="a21ee710a21628b3d10a2bc8b1e2aba94"></a>## [◆ ](#a21ee710a21628b3d10a2bc8b1e2aba94)registerOutputVectorDataAccess() \[1/2\]

 void sysc::SystemCoupling::registerOutputVectorDataAccess  ( [OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80)  *opaqueDataAccess*,    [OutputVectorDataAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga816b3979bcee14cdb92a88c0621a8e1e) \*const  *dataAccess*   ) 

Provide a function to register output vector data access.

Parameters opaqueDataAccess- a pointer that is passed into the callback function. dataAccess- a pointer to the function that conforms to sysc::OutputVectorDataAccessWithPointer prototype. 



<a id="a304e501223c4c100625f7d599ef95a20" name="a304e501223c4c100625f7d599ef95a20"></a>## [◆ ](#a304e501223c4c100625f7d599ef95a20)registerOutputVectorDataAccess() \[2/2\]

 void sysc::SystemCoupling::registerOutputVectorDataAccess  ( [OutputVectorDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga3af176d8520259b81f0460e1299e04b6) \*const  *dataAccess*) 

Provide a function to register output vector data access.

Parameters dataAccess- a pointer to the function that conforms to sysc::OutputVectorDataAccess function prototype. 



<a id="a0211f151640719613160e422104bacab" name="a0211f151640719613160e422104bacab"></a>## [◆ ](#a0211f151640719613160e422104bacab)registerPointCloudAccess() \[1/3\]

 void sysc::SystemCoupling::registerPointCloudAccess  ( [OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80)  *opaqueDataAccess*,    [PointCloudAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga1ec70c59d86f6f43cc865c72e4a9d76e) \*const  *pointCloudAccess*   ) 

Provide a function to register point cloud access.

Parameters \[in\]opaqueDataAccess- a pointer that is passed into the callback function.\[in\]pointCloudAccess- a pointer to the function that conforms to PointCloudAccessWithPointer function prototype. 



<a id="ae348c4f9962a2ebb4b9ca1a28db9e6fb" name="ae348c4f9962a2ebb4b9ca1a28db9e6fb"></a>## [◆ ](#ae348c4f9962a2ebb4b9ca1a28db9e6fb)registerPointCloudAccess() \[2/3\]

 void sysc::SystemCoupling::registerPointCloudAccess  ( [OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80)  *opaqueDataAccess*,    [PointCloudMultiZoneAccess](group__SystemCouplingParticipantAPIs.xhtml#ga2108977976cabe1b6207eb8bc58175f4) \*const  *pointCloudAccess*   ) 

Provide a function to register point cloud access.

Parameters \[in\]opaqueDataAccess- a pointer that is passed into the callback function.\[in\]pointCloudAccess- a pointer to the function that conforms to PointCloudMultiZoneAccess function prototype. 



<a id="a081e92271343f5e8f274a26bb8a53250" name="a081e92271343f5e8f274a26bb8a53250"></a>## [◆ ](#a081e92271343f5e8f274a26bb8a53250)registerPointCloudAccess() \[3/3\]

 void sysc::SystemCoupling::registerPointCloudAccess  ( [PointCloudAccess](group__SystemCouplingParticipantAPIs.xhtml#ga1651bb5df846358dfae0401b4a51331d) \*const  *pointCloudAccess*) 

Provide a function to register point cloud access.

Parameters \[in\]pointCloudAccess- a pointer to the function that conforms to PointCloudAccess function prototype. See PointCloudAccess for details. 



<a id="abc975e2b015e026587123609dcf51d49" name="abc975e2b015e026587123609dcf51d49"></a>## [◆ ](#abc975e2b015e026587123609dcf51d49)registerRestartPointCreation()

 void sysc::SystemCoupling::registerRestartPointCreation  ( [RestartPointCreation](group__SystemCouplingParticipantAPIs.xhtml#ga94caa804f294a50dad34a53274255657) \*const  *restartPointCreation*) 

Provide a function to register a restart point creation callback.

Parameters restartPointCreation- a pointer to the function that conforms to RestartPointCreation function prototype. See RestartPointCreation for details. 



<a id="a4eb30212ad009f243ca04a58134f83ea" name="a4eb30212ad009f243ca04a58134f83ea"></a>## [◆ ](#a4eb30212ad009f243ca04a58134f83ea)registerSurfaceMeshAccess() \[1/2\]

 void sysc::SystemCoupling::registerSurfaceMeshAccess  ( [OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80)  *opaqueDataAccess*,    [SurfaceMeshAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#gaefc47d665f38f4380346fb9c29b9c8ff) \*const  *meshAccess*   ) 

Provide a function to register surface mesh access.

Parameters opaqueDataAccess- a pointer that is passed into the callback function. meshAccess- a pointer to the function that conforms to SurfaceMeshAccessWithPointer function prototype. See SurfaceMeshAccessWithPointer for details. 



<a id="a9ccb1119e5f06b68f429564c9424e7ad" name="a9ccb1119e5f06b68f429564c9424e7ad"></a>## [◆ ](#a9ccb1119e5f06b68f429564c9424e7ad)registerSurfaceMeshAccess() \[2/2\]

 void sysc::SystemCoupling::registerSurfaceMeshAccess  ( [SurfaceMeshAccess](group__SystemCouplingParticipantAPIs.xhtml#ga31a21ade99a36c30fdc24d33c6d5c9aa) \*const  *meshAccess*) 

Provide a function to register surface mesh access.

Parameters \[in\]meshAccess- a pointer to the function that conforms to SurfaceMeshAccess function prototype. See SurfaceMeshAccess for details. 



<a id="a77a36ef05a78ae9020fc2ac63c49dd4a" name="a77a36ef05a78ae9020fc2ac63c49dd4a"></a>## [◆ ](#a77a36ef05a78ae9020fc2ac63c49dd4a)registerVolumeMeshAccess() \[1/2\]

 void sysc::SystemCoupling::registerVolumeMeshAccess  ( [OpaqueDataAccess](group__SystemCouplingParticipantAPIs.xhtml#ga23b9971b358756814178dd1cb3c0bc80)  *opaqueDataAccess*,    [VolumeMeshAccessWithPointer](group__SystemCouplingParticipantAPIs.xhtml#ga6c3e4e3f977efd6284430b6f8e918ce1) \*const  *meshAccess*   ) 

Provide a function to register volume mesh access.

Parameters opaqueDataAccess- a pointer that is passed into the callback function. meshAccess- a pointer to the function that conforms to VolumeMeshAccessWithPointer function prototype. See VolumeMeshAccessWithPointer for details. 



<a id="a37c591107d6b76d87a5dd7c6f0199c51" name="a37c591107d6b76d87a5dd7c6f0199c51"></a>## [◆ ](#a37c591107d6b76d87a5dd7c6f0199c51)registerVolumeMeshAccess() \[2/2\]

 void sysc::SystemCoupling::registerVolumeMeshAccess  ( [VolumeMeshAccess](group__SystemCouplingParticipantAPIs.xhtml#ga7a37f14608ada16bb16d44c498325fff) \*const  *meshAccess*) 

Provide a function to register volume mesh access.

Parameters meshAccess- a pointer to the function that conforms to VolumeMeshAccess function prototype. See VolumeMeshAccess for details. 



<a id="a9c768f6965f14e8ab3308c7df4144da7" name="a9c768f6965f14e8ab3308c7df4144da7"></a>## [◆ ](#a9c768f6965f14e8ab3308c7df4144da7)updateInputs()

 void sysc::SystemCoupling::updateInputs  ( ) 

Provide a function to update the participants input variables.

Solution data for all input variables will be updated. Depending on the defined interfaces, data will be transferred from another coupling participant solver, or from the opposite side of the same-participant coupling interface.

When doing cosimulation, this function must be called from inside the coupled analysis loop. It tells System Coupling that the participant is about to begin its solver iterations. All input variable data will be up-to-date after returning from this function. If any local coupling interfaces are defined, all corresponding input variable data will also be updated.

When doing same-participant mapping only (without cosimulation), this function should be called whenever input data needs to be brought up-to-date.





<a id="a468e5e084477cdaca2adee6c50edf7e9" name="a468e5e084477cdaca2adee6c50edf7e9"></a>## [◆ ](#a468e5e084477cdaca2adee6c50edf7e9)updateOutputs()

 void sysc::SystemCoupling::updateOutputs  ( [ConvergenceStatus](group__SystemCouplingParticipantAPIs.xhtml#ga0b8801743579159eb41cf07d8372a734)  *status*) 

Provide a function to update the participants output variables.

This function must be called from inside the coupled analysis loop. It tells System Coupling that the participant has finished performing its solver iterations.

Parameters \[in\]statusStatus of participant solver after its solver iteration(s). See ConvergenceStatus for details 



<a id="a3d0f96215b1b4609d46e0772c3e3578b" name="a3d0f96215b1b4609d46e0772c3e3578b"></a>## [◆ ](#a3d0f96215b1b4609d46e0772c3e3578b)writeSetupFile()

 bool sysc::SystemCoupling::writeSetupFile  ( const [SetupFileInfo](structsysc_1_1SetupFileInfo.xhtml) &amp;  *setupFileInfo*)  const

Provide a function to write the setup file.

This function can be used to generate a System Coupling setup file, which contains participant's setup information. It should be called after calling completeSetup.

Parameters \[in\]setupFileInfo- struct containing the setup file info.ReturnsTrue if the setup file was successfully written, and false otherwise.