The FEDEM GUI sources are organized into several modules in a multi-level file structure. The top-level modules are as follows.
-
vpmApp - The application classes. These classes constitute the glue between the different part of the code, and handle most application logic. The
vpmAppUAMapclasses have all the logic needed to transport data between the UI and the DB. ThevpmAppCmdsclasses implement of the various commands the user can invoke from the menus of the GUI, or at least the entry point from the UI for these commands. Some calls are just forwarded to other parts of the code. ThevpmAppProcessclasses manage input generation for and execution of the solvers as child processes. ThevpmAppDisplaysub-folder has classes to perform the animation and graph reading and manipulation. -
vpmDB - The mechanism database. Contains classes representing the model entities of a FEDEM model, with methods for file input/output, topology, etc.
-
vpmDisplay - Classes that use OpenInventor to generate the visualization in the 3D modeler view.
-
vpmPM - Process communication and results database management.
-
vpmUI - The Fedem-specific user-interface classes. The
vpmUIComponentsclasses are typically used several times or at least once inside some other UI-classes. ThevpmUITopLevelsclasses are typically single window UIs. -
assemblyCreators - Generation of parameterized wind turbine and marine structure models.
-
FFuLib - Application-independent user interface classes. This is mainly a wrapper around Qt.
-
FFdCadModel - Classes for representation of CAD models as Parts.
-
comApi - COM-based API for model creation and manipulation.
Note that the vpmDB and assemblyCreators modules are included through
a git submodule
reference to the repository fedem-mdb.
The classes are typically named by what module they belong to.
Classes prefixed with a double 'F', e.g., FFaVec3, belong to the
"Fedem Foundation" set of classes. They are application-independent classes that
can be used as a building block. Most of the FF-classes are located in the
repository fedem-foundation,
which is included as a submodule of the
fedem-mdb repository.
- FFa - Auxiliary classes
- FFl - FE part handling
- FFr - Result file API
- FFp - Post-processing of curve data
- FFu - User interface components
- Fui - vpmUI user interface
- Fm - vpmDB mechanism database
- Fd - vpmDisplay display management
- Fp - vpmPM process management
- Fap - vpmApp application components
- FapUA - vpmAppUA user interface to application mapping
All the "old" modules vpmDB, vpmUI, vpmDisplay and vpmPM
have a big static class that does "everything" that could not be put
inside one of the more sensible objects.
These classes contain application logic stuff that now really belongs to the
vpmApp module, but then had its place in the different static utility classes.
The classes are FmDB, Fui, FdDB and FpPM.
-
FmDBcontains the initialization of the database, the control of the model file file reading, access methods to traverse the DB objects, etc. -
Fuicontains a lot of application definitions for the user interface. -
FdDBcontains a lot of functionality for modelling and rendering. It initializes the Inventor graph and has implementations of a lot of commands that interact with the 3D visualization. The major part of this class is implementations of user processes (first pick something, if selected then highlight, then if done then ...) like attach, (smart)move, create joint, etc. -
FpPMcontains some RDB-handling, the top-most code of file open/save, etc. This class is also a bit "oldish" and should have been cleaned up and perhaps removed.