Skip to content

Generic Interface Readilly Accessible for Finite Elements

License

Notifications You must be signed in to change notification settings

AlexThant/GIRAFFE

 
 

Repository files navigation

GIRAFFE: Generic Interface Readilly Accessible for Finite Elements

Table of contents

Introduction

Giraffe is the acronym of “Generic Interface Readily Accessible for Finite Elements”. It is a platform coded in C++, with the objective of generating a base interface to be used by researchers, to implement their finite element formulations. It was already employed for modeling structural problems, with beam, shell, and rigid body elements. It also has discrete element method capabilities, particularly handling polyhedral elements. Giraffe has resources to switch on/off boundary conditions, loads, joints, contacts, etc. straightforwardly. This leads to creating scenarios where load sequence is an issue. Furthermore, it provides numerical strategies to achieve solutions to challenging nonlinear problems. Also, post-processing possibilities are convenient, with an organized set of post files, which is automatically generated for using Paraview. Giraffe has a proper input file format, documented in its user's manual.

The platform is coded in a way that permits embracing new elements, novel contact formulations, and proposition of constraint equations, among other features. With that aim, the Giraffe code was started in 2014 by Prof. Alfredo Gay Neto, at the University of Sao Paulo, Brazil.

Giraffe was started as a generalization of a previous-developed finite element code, named “FemCable”, which had the objective of simulating offshore structures: risers for oil exploitation. It had implementations of geometric nonlinear beam elements and classical node-to-surface contact formulation. Since a natural expansion required including new contact models, new structural elements, and other resources, Giraffe was designed from scratch to have all the models included in “FemCable” and to embrace easy inclusion of new resources, using object orientation programming. Giraffe is under continuous development by Prof. Alfredo Gay Neto, co-workers, and supervised students.

Dependencies

To compile and execute Giraffe you need some additional resources:

  • Intel oneMKL, as part of the Intel oneAPI. You need to install this library, which will be linked to Giraffe via CMake;
  • exprtk, as a library used for mathematical expressions interpretation in Giraffe input files;
  • Eigen, as a library used for mathematical operations, matrix organizations, etc.;
  • arpack-ng, as a library used to evaluate large-scale eigenvalue problems.

Building and compiling

You can build the solution with CMake and the auxiliary batch files here provided. Furthermore, the provided batch files automatically download some prerequisites from public repositories. For that, you need to install Git.

Do not forget to install - Intel oneMKL prior to running the batch files to install Giraffe.

The provided batch files are developed to the MS Windows system. They will automatically install the vcpkg package, as an installer for arpack-ng that automatically provides the necessary files to use it in MS Windows environment.

In summary, Giraffe installation requires the following steps:

  1. Install CMake and Git software.
  2. Clone GIRAFFE repository. For that, you can use the git command or download it manually using the web browser.
git clone https://github.com/alfredogneto/GIRAFFE.git
  1. Install Intel oneMKL library.
  2. Run the here provided batch files in the sequence. Please, wait for the conclusion of the first batch file before run the second one. Next, we describe what each file does:

install_dependencies.bat: creates a /dependencies folder, clones exprtk, Eigen and vcpkg, such as installs the last one. Afer, it installs arpack-ng. Creates environment variables for GIRAFFE execution. All variables are created in the user's profile and are based in the folder where Giraffe is located on your computer.

build.bat: builds and compiles Giraffe for Microsoft Visual Studio (Release mode by default).

  1. The last step is to manually add to the environment variable Path of your operational system the following paths: %GIRAFFE_PATH% and %MKL_PATH%. This can be done, for example, using the procedure described here. PS: you can add these paths either to system variables or to variables for the user. Both work fine. Take care not to overwrite some of the available paths defined in your system/user, to avoid problems.

After finishing all the steps, you will find the Microsoft Visual Studio project created in the folder /build, such as other files generated automatically during installation.

Executing

Giraffe execution is based on reading input files, with a proper syntax. Examples of input files are found in the folder /inputs.

To execute Giraffe, you simply have to open its executable file either in Microsoft Visual Studio environment or directly in the folder created after compiling it (/build/Debug) or (/build/Release), depending on the option chosen (default is Release). The only instruction Giraffe needs is the name of the input file.

The Giraffe input file must be located inside a folder with the same name as the input file. It is mandatory to use the file extension *.inp for the input file. Files with different extensions or with no extensions will result in error messages when Giraffe tries to read them. Example: the input file named tutorial01.inp is located inside a folder named tutorial01.

The folder with the input file can be located:

  1. In the directory of Giraffe.exe executable file;
  2. In the folder /inputs located in the installation directory of Giraffe software;
  3. In the public /Documents/Giraffe/ folder.

When trying to read an input file, Giraffe seeks it in the sequence here presented. If not succeed, an error message is prompted to the user.

Documentation

A folder /documentation is provided, containing Giraffe user's manual and tutorials.

Disclaimer

Currently, Giraffe is built and tested only with Microsoft Visual Studio and the MS Windows platform. We plan to expand it to Linux and Mac soon.

About

Generic Interface Readilly Accessible for Finite Elements

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 100.0%