Anything that can go wrong, will go wrong- Murphy's law
...
Info |
---|
Developer guidelines |
4.1.2 FC2K main window
Fig. 1. FC2K main window |
---|
Warning |
---|
If you open an existing project, all relative paths defined within project will be relative to a directory within which fc2k was started |
4.1.3 Actor description
|
Fig. 2. FC2K actor description |
---|
This group of graphical controls allows to set the description of the actor and its "place" in hierarchy of Kepler elements in Kepler "Component" browser
...
Warning |
---|
A name of user subroutine must be exactly the same as it was defined in user code |
4.1.4 Environment
Fig. 3. FC2K environment tab |
---|
The Environment text fields shows UAL and Kepler locations.
...
Below you can find explanation of FC2K arguments tab.
Fig. 24. "Arguments" tab |
---|
- Type - Defines a type of an argument. It is possible to choose either IDS based type (e.g. equilibrium, topinfo, etc.) or primitive type (e.g. int, long, double, char)
- Single slice - Determines if IDS is passed as single slice or an array. (This setting is valid for IDS types only
- if turned ON - Only one slice is passed. An actor will get an additional port to define a time.
- if turned OFF - All IDSes for given shot run is passed.
) - Is array - Determines if a primitive type
- if turned ON - An argument is passed as an array. It requires definition of array size (dynamic array are not supported)
- if turned OFF - An argument is passed as a scalar.
is passed as a scalar or an array - Array size - Defines the size of an array of primitive types
- Input - Defines argument as an input
- Output - Defines argument as an output
- Label - User defined name of an argument (and actor port)
Warning |
---|
Restrictions concerning type and order of arguments Arguments specified in this tab must match a type and order of arguments of the routine/function. |
Fig. 35. An example of subroutine arguments |
---|
...
Code specific parameters are all parameters which are specific to the code (like switches, scaling parameters, and parameters for built-in analytical models) as well as parameters to explicitly overrule fields in the ITM data structures.
Fig. 46. "Parameters" tab |
---|
- Frequently Used XML - Actual value of the code parameters
- Default XML - Default values of the code parameters
- Schema - A (XSD) XML schema
...
4.1.7 "Source" tab explained
Fig. 57. "Source" tab |
---|
The purpose of this tab is to define all code related issues:
- a programming language
- utilized compiler,
- type of code execution (sequential of parallel)
- libraries being used
4.1.7
...
A user, using this tab, selects programming language of codes provided, compiler used to built library and type of code execution (sequential or parallel)
Fig. 6. "Source" tab - code description |
---|
- Type - Defines programming language of user codes. It could be set to:
- Fortran
- _C/C++
- Compiler - Defines compiler being used. Possible values:
- ifort, g95, gfortran
- gcc, g++
- Parallel MPI - If turned ON uses MPI compilers (mpiifort for ifort, mpif90 for gfortran, mpigxx for C)
- OPENMP - Defined if usage of OpenMP directives is turned ON/OFF
- Batch - If turned ON, submits a user code to jobs queue (combined with Parallel MPI or OPENMP switch runs user code as parallel job)
...
.1
...
Libraries
"Main library"
A "Main library" field allows to define a path to library containing user subroutine/function.
Fig. 78. "Source" tab - A path to "main" and "optional" library |
---|
"Optional library"
A "Optional library" field allows to define a path to optional library containing user subroutine/function.
"Custom libraries"
"Custom libraries" are non-standard static libraries required for building the user code.
Fig. 89. "Source" tab - A list of "custom" libraries |
---|
...
"System libraries" are system libraries handled by pkg-config mechanism and required for building the user code.
Fig. 910. "Source" tab - A list of "system" libraries |
---|
...
- add library from the list,
- remove library
- display detailed info (library definition returned by pkg-config mechanism)
Fig. 1011. Adding "system" libraries |
---|
Tip |
---|
|
4.1.8 "Settings" tab explained
A user, using this tab, selects programming language of codes provided, compiler used to built library and type of code execution (sequential or parallel)
Fig. 12. "Settings" tab - code description |
---|
- Programming languange:
- Type - Defines programming language of user codes. It could be set to:
- Fortran
- _C/C++
- Compiler - Defines compiler being used. Possible values:
- ifort, gfortran
- gcc, g++
- Type - Defines programming language of user codes. It could be set to:
- Computation:
- Parallel MPI - If turned ON uses MPI compilers (mpiifort for ifort, mpif90 for gfortran, mpigxx for C)
- OPENMP - Defined if usage of OpenMP directives is turned ON/OFF
- Batch - If turned ON, submits a user code to jobs queue (combined with Parallel MPI or OPENMP switch runs user code as parallel job)
- Additional features:
- Calls init method - If user function needs any pre-initialization, an additional function will be called.
- Returns diagnostic info - adds output diagnostic information
4.1.9 "Documentation" tab explained
The "Documentation" tab specifies an user-defined Kepler actor description. It could be displayed from actor pop-up menu.
Fig. 1113. "Documentation" tab |
---|
4.1.10 "Interface" tab explained
The "Interface" tab specifies interface for Kepler actor.
Fig. 14. "Interface" tab |
---|
4. Incorporating user codes into Kepler using FC2K - exercises
...