Skip to main content

System Coupling Fortran library 2024 R2

syscSystemCouplingF

Last update: 17.07.2025
1module fortran
2!
3! Copyright ANSYS, Inc.
4! Unauthorized use, distribution, or duplication is prohibited.
5!
6! Provide free-form Fortran interface for
7! System Coupling Participant Library.
8!
9! This interface file provides coupled analysis related APIs.
10include 'syscElementTypesF.fi'
11include 'syscCommonTypesF.fi'
12include 'syscAttributeF.fi'
13include 'syscInputScalarDataF.fi'
14include 'syscInputVectorDataF.fi'
15include 'syscOutputIntegerDataF.fi'
16include 'syscOutputScalarDataF.fi'
17include 'syscOutputVectorDataF.fi'
18include 'syscInputComplexVectorDataF.fi'
19include 'syscOutputComplexVectorDataF.fi'
20include 'syscMeshDefinitionF.fi'
21include 'syscSurfaceMeshF.fi'
22include 'syscVolumeMeshF.fi'
23include 'syscPointCloudF.fi'
24include 'syscFunctionTypesF.fi'
25include 'syscVariableF.fi'
26include 'syscRegionF.fi'
27include 'syscDataTransferF.fi'
28include 'syscCouplingInterfaceF.fi'
29include 'syscLegacyInterfacesF.fi'
30!
31!**********************************************************************
37!**********************************************************************
38!
41function restartpointcreationintf() result (ret)
42 import :: syscfilepathlen
43 character(len=SyscFilePathLen) :: ret
44end function restartpointcreationintf
45!
46end interface restartpointcreationintf
47!
48!**********************************************************************
50!**********************************************************************
51!
53!
64!
65 function syscstartstandaloneparallelf(communicator) result (ret)
66!
67 import :: syscerrorf
68 integer(kind=4), intent(in) :: communicator
69 type(syscerrorf) :: ret
70!
71!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
72!DIR$ ATTRIBUTES DLLIMPORT :: syscStartStandaloneParallelF
73!DIR$ ENDIF
74!
75 end function syscstartstandaloneparallelf
76!
77 end interface syscstartstandalonef
78!
79!**********************************************************************
81!**********************************************************************
82!
83interface syscconnectf
84!
109function syscconnectf(scHost, &
110 scPort, &
111 participantName, &
112 buildInformation) result (ret)
113!
114 import :: syscerrorf
115 integer(kind=4), intent(in) :: scport
116 character(*), intent(in) :: schost
117 character(*), intent(in) :: participantname
118 character(*), optional, intent(in) :: buildinformation
119 type(syscerrorf) :: ret
120!
121!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
122!DIR$ ATTRIBUTES DLLIMPORT :: syscConnectF
123!DIR$ ENDIF
124!
125end function syscconnectf
126!
151function syscconnectparallelf(scHost, &
152 scPort, &
153 participantName, &
154 communicator, &
155 buildInformation) result (ret)
156!
157 import :: syscerrorf
158 integer(kind=4), intent(in) :: scport
159 character(*), intent(in) :: schost
160 character(*), intent(in) :: participantname
161 integer(kind=4), intent(in) :: communicator
162 character(*), optional, intent(in) :: buildinformation
163 type(syscerrorf) :: ret
164!
165!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
166!DIR$ ATTRIBUTES DLLIMPORT :: syscConnectParallelF
167!DIR$ ENDIF
168!
169end function syscconnectparallelf
170!
171end interface syscconnectf
172!
173!**********************************************************************
175!**********************************************************************
176!
178!
194function syscaddregionf(reg) result (ret)
195!
196 import :: syscregionf
197 import :: syscerrorf
198 type(syscregionf), intent(in) :: reg
199 type(syscerrorf) :: ret
200!
201!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
202!DIR$ ATTRIBUTES DLLIMPORT :: syscAddRegionF
203!DIR$ ENDIF
204!
205end function syscaddregionf
206!
207end interface syscaddregionf
208!
209!**********************************************************************
211!**********************************************************************
213!
230!
231function syscaddcouplinginterfacef(interface) result (ret)
232!
233 import :: sysccouplinginterfacef
234 import :: syscerrorf
235 type(sysccouplinginterfacef), intent(in) :: interface
236 type(syscerrorf) :: ret
237!
238!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
239!DIR$ ATTRIBUTES DLLIMPORT :: syscAddCouplingInterfaceF
240!DIR$ ENDIF
241!
242end function syscaddcouplinginterfacef
243!
244function syscaddcouplinginterfacef_a(interface, &
245 autoGenerateDataTransfers) result (ret)
246 !
247 import :: sysccouplinginterfacef
248 import :: syscerrorf
249 type(sysccouplinginterfacef), intent(in) :: interface
250 logical, intent(in) :: autogeneratedatatransfers
251 type(syscerrorf) :: ret
252 !
253 !DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
254 !DIR$ ATTRIBUTES DLLIMPORT :: syscAddCouplingInterfaceF_A
255 !DIR$ ENDIF
256 !
257 end function syscaddcouplinginterfacef_a
258!
259end interface syscaddcouplinginterfacef
260!
261!**********************************************************************
263!**********************************************************************
264!
266!
290function syscaddinputvariablef(reg, var) result (ret)
291!
292 import :: syscregionf
293 import :: syscvariablef
294 import :: syscerrorf
295 type(syscregionf), intent(in) :: reg
296 type(syscvariablef), intent(in) :: var
297 type(syscerrorf) :: ret
298!
299!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
300!DIR$ ATTRIBUTES DLLIMPORT :: syscAddInputVariableF
301!DIR$ ENDIF
302!
303end function syscaddinputvariablef
304!
305end interface syscaddinputvariablef
306!
307!**********************************************************************
309!**********************************************************************
310!
312!
337function syscaddoutputvariablef(reg, var) result (ret)
338!
339 import :: syscregionf
340 import :: syscvariablef
341 import :: syscerrorf
342 type(syscregionf), intent(in) :: reg
343 type(syscvariablef), intent(in) :: var
344 type(syscerrorf) :: ret
345!
346!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
347!DIR$ ATTRIBUTES DLLIMPORT :: syscAddOutputVariableF
348!DIR$ ENDIF
349!
350end function syscaddoutputvariablef
351!
352end interface syscaddoutputvariablef
353!
354!**********************************************************************
356!**********************************************************************
358!
371function sysccompletesetupf(setupInfo) result (ret)
372 import :: syscsetupinfof
373 import :: syscerrorf
374 type(syscsetupinfof), intent(in) :: setupinfo
375 type(syscerrorf) :: ret
376!
377!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
378!DIR$ ATTRIBUTES DLLIMPORT :: syscCompleteSetupF
379!DIR$ ENDIF
380!
381end function sysccompletesetupf
382!
383end interface sysccompletesetupf
384!
385!**********************************************************************
388!**********************************************************************
389!
391!
399function syscregisterrestartpointcreationf(restCr) result (ret)
400!
401 import :: syscerrorf
403 procedure(restartpointcreationintf) :: restcr
404 type(syscerrorf) :: ret
405!
406!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
407!DIR$ ATTRIBUTES DLLIMPORT :: syscRegisterRestartPointCreationF
408!DIR$ ENDIF
409!
411!
413!
414!**********************************************************************
416!**********************************************************************
424function syscregisterinputscalardataaccessf(dataAccess) result (ret)
425 import :: syscerrorf
427 procedure(syscinputscalardataaccessf) :: dataaccess
428 type(syscerrorf) :: ret
429!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
430!DIR$ ATTRIBUTES DLLIMPORT :: syscRegisterInputScalarDataAccessF
431!DIR$ ENDIF
434!
435!**********************************************************************
437!**********************************************************************
445function syscregisterinputvectordataaccessf(dataAccess) result (ret)
446 import :: syscerrorf
448 procedure(syscinputvectordataaccessf) :: dataaccess
449 type(syscerrorf) :: ret
450!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
451!DIR$ ATTRIBUTES DLLIMPORT :: syscRegisterInputVectorDataAccessF
452!DIR$ ENDIF
455!
456!**********************************************************************
458!**********************************************************************
465function syscregisteroutputscalardataaccessf(dataAccess) result (ret)
466 import :: syscerrorf
468 procedure(syscoutputscalardataaccessf) :: dataaccess
469 type(syscerrorf) :: ret
470!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
471!DIR$ ATTRIBUTES DLLIMPORT :: syscRegisterOutputScalarDataAccessF
472!DIR$ ENDIF
475!
476!**********************************************************************
478!**********************************************************************
485function syscregisteroutputvectordataaccessf(dataAccess) result (ret)
486 import :: syscerrorf
488 procedure(syscoutputvectordataaccessf) :: dataaccess
489 type(syscerrorf) :: ret
490!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
491!DIR$ ATTRIBUTES DLLIMPORT :: syscRegisterOutputVectorDataAccessF
492!DIR$ ENDIF
495!
496!**********************************************************************
499!**********************************************************************
508 result(ret)
509 import :: syscerrorf
511 procedure(syscinputcomplexvectordataaccessf) :: dataaccess
512 type(syscerrorf) :: ret
513!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
514!DIR$ ATTRIBUTES DLLIMPORT :: syscRegisterInputComplexVectorDataAccessF
515!DIR$ ENDIF
518!
519!**********************************************************************
522!**********************************************************************
531 result(ret)
532 import :: syscerrorf
534 procedure(syscoutputcomplexvectordataaccessf) :: dataaccess
535 type(syscerrorf) :: ret
536!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
537!DIR$ ATTRIBUTES DLLIMPORT :: syscRegisterOutputComplexVectorDataAccessF
538!DIR$ ENDIF
541!
542!**********************************************************************
544!**********************************************************************
552function syscregistersurfmeshaccessf(dataAccess) result (ret)
553 import :: syscerrorf
554 import :: syscsurfacemeshaccessf
555 procedure(syscsurfacemeshaccessf) :: dataaccess
556 type(syscerrorf) :: ret
557!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
558!DIR$ ATTRIBUTES DLLIMPORT :: syscRegisterSurfMeshAccessF
559!DIR$ ENDIF
561end interface syscregistersurfmeshaccessf
562!
563!**********************************************************************
565!**********************************************************************
573function syscregistervolumemeshaccessf(dataAccess) result (ret)
574 import :: syscerrorf
575 import :: syscvolumemeshaccessf
576 procedure(syscvolumemeshaccessf) :: dataaccess
577 type(syscerrorf) :: ret
578!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
579!DIR$ ATTRIBUTES DLLIMPORT :: syscRegisterVolumeMeshAccessF
580!DIR$ ENDIF
583!
584!**********************************************************************
586!**********************************************************************
594function syscregisterpointcloudaccessf(dataAccess) result (ret)
595 import :: syscerrorf
596 import :: syscpointcloudaccessf
597 procedure(syscpointcloudaccessf) :: dataaccess
598 type(syscerrorf) :: ret
599!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
600!DIR$ ATTRIBUTES DLLIMPORT :: syscRegisterPointCloudAccessF
601!DIR$ ENDIF
604!
605!**********************************************************************
608!**********************************************************************
609!
611!
623function syscinitializeanalysisf() result (ret)
624 import :: syscerrorf
625 type(syscerrorf) :: ret
626!
627!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
628!DIR$ ATTRIBUTES DLLIMPORT :: syscInitializeAnalysisF
629!DIR$ ENDIF
630!
631end function syscinitializeanalysisf
632!
633end interface syscinitializeanalysisf
634!
635!**********************************************************************
638!**********************************************************************
639!
641!
647logical function syscdoiterationf()
648!
649!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
650!DIR$ ATTRIBUTES DLLIMPORT :: syscDoIterationF
651!DIR$ ENDIF
652!
653end function syscdoiterationf
654!
655end interface syscdoiterationf
656!
657!**********************************************************************
660!**********************************************************************
661!
663!
681logical function syscdotimestepf()
682!
683!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
684!DIR$ ATTRIBUTES DLLIMPORT :: syscDoTimeStepF
685!DIR$ ENDIF
686!
687end function syscdotimestepf
688!
689end interface syscdotimestepf
690!
691!**********************************************************************
693!**********************************************************************
694!
696!
708function syscgetcurrenttimestepf() result (timeStep)
709!
710 import :: sysctimestepf
711 type(sysctimestepf) :: timestep
712!
713!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
714!DIR$ ATTRIBUTES DLLIMPORT :: syscGetCurrentTimeStepF
715!DIR$ ENDIF
716!
717end function syscgetcurrenttimestepf
718!
719end interface syscgetcurrenttimestepf
720!
721!**********************************************************************
723!**********************************************************************
724!
726!
744function syscupdateinputsf() result (ret)
745 import :: syscerrorf
746 type(syscerrorf) :: ret
747!
748!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
749!DIR$ ATTRIBUTES DLLIMPORT :: syscUpdateInputsF
750!DIR$ ENDIF
751!
752end function syscupdateinputsf
753!
754end interface syscupdateinputsf
755!
756!**********************************************************************
759!**********************************************************************
760!
762!
765function syscupdateoutputsf(convergenceStatus) result (ret)
766!
767 import :: syscerrorf
768 integer(kind=4), intent(in) :: convergencestatus
769 type(syscerrorf) :: ret
770!
771!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
772!DIR$ ATTRIBUTES DLLIMPORT :: syscUpdateOutputsF
773!DIR$ ENDIF
774!
775end function syscupdateoutputsf
776!
777end interface syscupdateoutputsf
778!
779!**********************************************************************
782!**********************************************************************
783!
785!
788function syscdisconnectf() result (ret)
789 import :: syscerrorf
790 type(syscerrorf) :: ret
791!
792!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
793!DIR$ ATTRIBUTES DLLIMPORT :: syscDisconnectF
794!DIR$ ENDIF
795!
796end function syscdisconnectf
797!
798end interface syscdisconnectf
799!
800!**********************************************************************
803!**********************************************************************
804!
806!
811subroutine syscfatalerrorf(errorMessage)
812!
813 character(*), intent(in) :: errorMessage
814!
815!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
816!DIR$ ATTRIBUTES DLLIMPORT :: syscFatalErrorF
817!DIR$ ENDIF
818!
819end subroutine syscfatalerrorf
820!
821end interface syscfatalerrorf
822!
823!**********************************************************************
825!**********************************************************************
827!
847function syscchecksurfacemeshvalidityf(surfaceMesh) result (ret)
848!
849 import :: syscsurfacemeshf
850 import :: syscerrorf
851 type(syscsurfacemeshf) :: surfacemesh
852 type(syscerrorf) :: ret
853!
854!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
855!DIR$ ATTRIBUTES DLLIMPORT :: syscCheckSurfaceMeshValidityF
856!DIR$ ENDIF
857!
859!
861!
862!**********************************************************************
864!**********************************************************************
865!
867!
878logical function syscwritesetupfilef(setupFileInfo)
879!
880 import :: syscsetupfileinfof
881 type(syscsetupfileinfof), intent(in) :: setupfileinfo
882!
883!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
884!DIR$ ATTRIBUTES DLLIMPORT :: syscWriteSetupFileF
885!DIR$ ENDIF
886!
887end function syscwritesetupfilef
888!
889end interface syscwritesetupfilef
890!
891!**********************************************************************
893!**********************************************************************
894!
896!
898function syscwriteresultsf(resultsInfo) result (ret)
899!
901 type(syscresultsinfof), intent(in) :: resultsinfo
902 type(syscerrorf) :: ret
903!
904!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
905!DIR$ ATTRIBUTES DLLIMPORT :: syscWriteResultsF
906!DIR$ ENDIF
907!
908end function syscwriteresultsf
909!
910end interface syscwriteresultsf
911!
912!**********************************************************************
915!**********************************************************************
916!
918!
924function syscgetnumcouplinginterfacesf() result (ret)
925 integer(kind=8) :: ret
926!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
927!DIR$ ATTRIBUTES DLLIMPORT :: syscGetNumCouplingInterfacesF
928!DIR$ ENDIF
930!
932!
933!**********************************************************************
935!**********************************************************************
936!
938!
943function syscgetnumregionsf() result (ret)
944 integer(kind=8) :: ret
945!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
946!DIR$ ATTRIBUTES DLLIMPORT :: syscGetNumRegionsF
947!DIR$ ENDIF
948end function syscgetnumregionsf
949!
950end interface syscgetnumregionsf
951!
952!**********************************************************************
953!! \brief Provide an interface to return added region given the
954!! region index.
955!**********************************************************************
956!
958!
959!! \brief Provide a function to return added region given the
960!! region index.
961!!
962!! \param[in] index - region index. Use syscGetNumRegionsF() to get
963!! the number of regions.
964!!
965!! \return Region at specified index.
966!!
967function syscgetaddedregionf(index) result (ret)
968 import :: syscregionf
969 integer(kind=8) :: index
970 type(SyscRegionF) :: ret
971!DIR$ IF DEFINED(_WIN32) .and. ( .not. DEFINED(SYSTEM_COUPLING_PARTICIPANT_PROXY))
972!DIR$ ATTRIBUTES DLLIMPORT :: syscGetAddedRegionF
973!DIR$ ENDIF
974end function syscgetaddedregionf
975!
976end interface syscgetaddedregionf
977!
978end module fortran
Provide function interface for creating restart points.
Provide an interface to add a coupling interface.
Provide an interface to add an input variable.
Provide an interface to add an output variable.
Provide an interface to add a region.
Provide an interface to perform simple mesh validity checks.
Provide an interface to complete the setup.
Provide an interface to connect to System Coupling.
Provide an interface to end the analysis and disconnect from System Coupling.
Provide an interface to check whether to do a coupling iteration.
Provide an interface to check whether to do another coupling time step.
Provide an interface to notify System Coupling of a fatal error.
Provide an interface to get current time step.
Provide an interface to return the number of added coupling interfaces.
Provide an interface to return the number of added regions.
Provide an interface to notify System Coupling that analysis initialization can be completed.
Provide function interface for access to input complex vector data.
Provide function interface for access to input scalar data.
Provide function interface for access to input vector data.
Provide function interface for access to output complex vector data.
Provide function interface for access to output scalar data.
Provide function interface for access to output vector data.
Provide function interface for access to point cloud.
Provide an interface to register input complex vector data access.
Provide an interface to register input scalar data access.
Provide an interface to register input vector data access.
Provide an interface to register output complex vector data access.
Provide an interface to register output scalar data.
Provide an interface to register output vector data access.
Provide an interface to register point cloud access.
Provide an interface to register restart point creation callback.
Provide an interface to register surface mesh access.
Provide an interface to register volume mesh access.
Provide a function interface to start in standalone mode.
Provide function interface for access to surface mesh.
Provide an interface to update the input variables.
Provide an interface to update the participant's output variables.
Provide function interface for access to volume mesh.
Provide an interface to write results.
Provide an interface to write the setup file.
Provide a struct for a coupling interface.
Provide an error type returned by the Fortran interface calls.
Provide a struct for a System Coupling region.
Provide a type for writing results files.
Provide a type for writing System Coupling setup files.
Provide a type for System Coupling setup information.
Provide a surface mesh access type.
Provide a time step type.
Provide a struct for a System Coupling variable.

Connect with Ansys