FEM for Students is a program of modeling and structural analysis by Finite Element Method

Overview

FEM For Students

FEM for Students is a software for modeling and structural analysis by Finite Element Method. This software was developed by me in my master's thesis in Structural Engineering submitted to the Faculdade de Engenharia da Universidade do Porto in October 2014.

Table of Contents

Master's Thesis

The importance of numerical simulation justified the development of a software based on Finite Element Method to solve various problems. The master's thesis "Desenvolvimento de um programa de elementos finitos versátil" describes several theories and formulations currently used in structural analysis. The application is presented and explained with code snippets in order to demonstrate your operation mode.

About FEM for Students

Features

It allows modeling simple problems with various finite element formulations. Models of discrete systems available allow the study of articulated structures, frame structures, beams and grids. For solid bodies, the user can choose between a plane stress/strain and slabs. 3D modeling is partial implemented. It is missing the graphical user interface.

After initialization, the program displays a panel that allows the user to choose the type of structural model that want for your project. This panel appears at the center of the program window lets you choose the type of structural model or open a project created earlier.

First Screen

The different formulations and types of finite elements available are focused on one-dimensional, two-dimensional, three-dimensional finite elements, beams and slabs. Beam elements are formulated by Euler-Bernoulli theory and Timoshenko theory. The finite elements of slab presented are formulated by Kirchhoff theory and Reissner-Mindlin theory.

To make the program simple, such tools are arranged in a set of tabs sequentially arranged by the steps of modeling, structural analysis and display of results.

Tabs

The tools and features of the program are organized into the following six tabs:

  • Draw tab contains the tools needed to design the different finite elements available in the program. Has a few productivity features, including selection of the finite elements, move, cut, copy and paste.
  • View tab contains visualization tools, in particular, offers the possibility to move the panel, zoom and display a mesh points and other features that facilitate the design of finite elements.
  • Geometry tab contains the functionality to setting the number of nodes of the finite elements, the remaining properties of sections of finite elements, material properties, refinement of finite element meshes and placing of structural supports.
  • Loads tab contains tools for assignment of loads to the structural model built. Depending on the structural model can add loads as concentrated loads, bending moments, linear distributed loads, axial loads distributed, surface loads, thermal loads and/or consider the self-weight of the finite elements.
  • Analysis tab provides, for example, for the finite element beam and slab selection of theory formulation. Enables even choose the analysis will be analytical or numerical and the button to perform the calculation of the structure.
  • Results tab, depending on the selected model, it is possible to see, for example, the global system equations, all results the level of each finite element, the deformed shape of the structure, diagrams for bars, maps of stresses and/or stresses and principal directions.

Graphical Results

In the Results tab are available the options to choose the type of results obtained by finite element analysis.

In the first group of buttons, options for the visualization of the global system of equations are available. In the second group the options for viewing the results in tables at the level of finite elements are available. Thus, besides the global system of equations, you can see the balance equation for each finite element, the support reactions, nodal forces and nodal stresses. In the latter group are concentrated features for graphical representation of results.

For all models it is possible to visualize the deformed structure. In addition, for models of bars you can view diagrams of forces and for two-dimensional models the isovalue lines, maps of stresses and stresses and principal directions. Regarding the display of isovalue lines and maps of stresses, the user can choose that stress want to see represented.

Plane Stress/strain

Other features

Other features of the program are concentrated in the File, Edit and Help menus. So that users can store the created projects and later retrieve them, the program allows them to save their work.

FEM for Students also presents, for example, information relating to the positioning of the mouse and tips on the operation of the selected tools. These tips are always presented to the user selects particular tool and are intended to inform you about the operating mode of this. These elements are arranged in the lower pane of the user interface.

FEM for Students allows modeling simple problems with various finite element formulations. Models of discrete systems available allow the study of articulated structures, frame structures, beams and grids. For solid bodies, the user can choose between a plane stress or strain and the study of slabs by the two theories available.

Requirements

FEM for Students was written in Java programming language. In order to run the program on your computer you must have Java JDK installed.

Apache Netbeans is the recommended IDE but you can use another IDE such as Visual Studio Code. However, if you want to edit the user interface, Apache Netbeans is required. To support code contributions, the original project was adapted for a Gradle project. UFT-8 is required because the source code contains Greek and Latin characters.

Available Gradle Tasks

The tasks in build.gradle file were built with simplicity in mind to automate as much repetitive tasks as possible and help developers focus on what really matters.

The next tasks should be executed in a console inside the root directory:

  • ./gradlew tasks - Displays the tasks runnable from root project 'app'.
  • ./gradlew run - Runs this project as a JVM application
  • ./gradlew check - Runs all checks.
  • ./gradlew test - Runs the unit tests.
  • ./gradlew checkstyle - Runs several static code analysis.
  • ./gradlew clean - Deletes the build directory.
  • ./gradlew javadoc - Generates Javadoc API documentation for the main source code.
  • ./gradlew build - Assembles and tests this project.
  • ./gradlew jar - Assembles a jar archive containing the main classes.
  • ./gradlew help - Displays a help message.

For more details, read the Command-Line Interface documentation in the Gradle User Manual.

Development Mode

This program was developed with Apache Netbeans in 2014. You can use any IDE, but if you want to edit the user interface, Apache Netbeans is required.

The original project was adapted for a Gradle project, but you don't need to install Gradle on your machine. This project uses Gradle Wrapper instead of the global install.

After cloning the project, use ./gradlew run to fetch its dependencies and start the application. Alternatively, you can use the start button of your favorite IDE.

Linting Code

A linter is a static code analysis tool used to flag programming errors, bugs, stylistic errors and suspicious constructs.

Use ./gradlew checkstyle to analyze the code with Checkstyle. Checkstyle finds class design problems, method design problems, and others. It also has the ability to check code layout and formatting issues.

Running Unit Tests

Use ./gradlew test to execute the unit tests via JUnit 5. Use ./gradlew test -t to keep executing unit tests in real time while watching for file changes in the background. You can see the HTML report opening the index.html file in your web browser.

It's a common requirement to run subsets of a test suite, such as when you're fixing a bug or developing a new test case. Gradle provides different mechanisms. For example, the following command lines run either all or exactly one of the tests in the SomeTestClass test case:

./gradlew test --tests SomeTestClass

For more details, you can see the Test filtering section of the Gradle documentation.

Debugging

You can debug the source code, add breakpoints, inspect variables and view the application's call stack with your favorite IDE

You can customize the log verbosity of gradle tasks using the -i or --info flag.

Build and Release

Use ./gradlew build to assemble and test this project. Note that this tasks runs several checks, including Checkstyle and unit tests.

Alternatively, you can use ./gradlew jar to create the JAR file. This artifact is stored in the build/libs directory.

Use ./gradlew javadoc to generate the Javadoc documentation for this project.

Contributing

Pull requests are welcome. Please read the contribution guidelines.

For major changes, open an issue first to discuss what you would like to change.

License

FEM for Students is MIT licensed.

You might also like...

Example usage of work manager in Android, while doing this study, image downloading was preferred as a method.

Example usage of work manager in Android, while doing this study, image downloading was preferred as a method.

android-workmanager-example Example usage of work manager in Android, while doing this study, image downloading was preferred as a method. Java 11 com

Jan 29, 2022

A simple tool to get method stack

A simple tool to get method stack

Jan 17, 2022

SBSRE is an eclipse plugin for extract method refactoring based on the single responsibility principle(SRP)

SBSRE is an eclipse plugin for extract method refactoring based on the single responsibility principle(SRP)

SBSRE is a slice-based single responsibility extraction approach supported by an eclipse plugin for identifying Single responsibility violations in the methods.

Jul 8, 2022

Ptubes is a database disaster recovery product based on the PITR (Point In Time Recovery) method

Ptubes is a database disaster recovery product based on the PITR (Point In Time Recovery) method, which can be used to restore the entire database to a specific point in time to help users improve the reliability and security of the database

Nov 29, 2022

Resources repository for Java programming students

Java development resources This repo includes most of the examples we develop during our lessons. Most of them are coded using Spanish 💃 , as its the

Jun 14, 2022

Application developed during the DDD training with 6 students.

Easyorder Application developed during the DDD training with 6 students. MongoDB To start MongoDB, use docker: docker run -p 27017:27017 --name mongo

Jan 21, 2022

An android app that builds for students to find study partners.

An android  app that builds for students to find study partners.

Rinder The purpose of this project is to make a one-stop solution for finding the desired reading or research partner, sell their own products, and al

Dec 14, 2022

Always High is a College help app catered towards helping college students in managing their day-to-day hassle!

Always High is a College help app catered towards helping college students in managing their day-to-day hassle!

Always High Always High is a College help app cattered towards helping the college students in managing their day-to-day hassle! Problem : In the onli

Mar 16, 2022

Platform for teachers & students, to offer or search for tutoring.

tutoring-platform Table of contents About The Project Technologies Getting Started Roadmap Contributing License About The Project Platform for teacher

Dec 27, 2022
Owner
André de Sousa
André de Sousa
Detect any Team Shipping Element for the FTC 2021-2022 Freight Frenzy season

ShippingElementDetector Idea/algorithm created and implemented by Allen Wu, code provided by FTC 18225 High Definition NOTE: EXTRA CHANGES WILL NEED T

High Definition 12 Sep 25, 2022
A suite of software tools and services created to support activity planning and sequencing needs of missions with modeling, simulation, scheduling and validation capabilities

Aerie A suite of software tools and services created to support activity planning and sequencing needs of missions with modeling, simulation, scheduli

NASA Advanced Multi-Mission Operations System 31 Jan 3, 2023
A Toolkit for Modeling and Simulation of Resource Management Techniques in Internet of Things, Edge and Fog Computing Environments

The iFogSimToolkit (with its new release iFogSim2) for Modeling and Simulation of Resource Management Techniques in Internet of Things, Edge and Fog Computing Environments. In the new release Mobili Management, Microservice Management, and Dynamic Clustering mechanisms are added as new features.

The Cloud Computing and Distributed Systems (CLOUDS) Laboratory 69 Dec 17, 2022
Source Code for TransRot, molecular modeling software for simulated annealing Monte Carlo geometry optimizations of atomic and molecular clusters.

TransRot Version 1.5.3 Steven L. Topper and Robert Q. Topper School of Engineering The Cooper Union   for the Advancement of Science and Art New York,

Steven Topper 5 Dec 14, 2022
This project uses the artificial potential field method to realize the path planning of the robot, and completes the trajectory optimization through other settings. It can also be combined with laser SLAM, target recognition and other technologies for path planning.

FRCAutoDriver 项目说明 Project Instruction 本项目利用人工势场法,实现机器人的路径规划,并通过其他设置完成轨迹优化,还可以结合激光SLAM、目标识别等技术进行路径规划 This project uses the artificial potential field

ZhangzrJerry 2 Sep 9, 2022
SDMLib is a lightweight modeling library

SDMLib is a lightweight modeling library. SDMLib intentionally comes without any tool or editor.

Fujaba Tool Suite 16 Dec 9, 2021
PluginHooker is a Bukkit plugin that aims to provide an ultimately simple and better method to hook Bukkit events.

PluginHooker PluginHooker is a Bukkit plugin that aims to provide an ultimately simple and better method to hook Bukkit events. Localization 简体中文 Feat

null 12 Nov 23, 2022
This repo contains all the materials for placement as well as Practical lab codes for all subjects and notes. For students graduating in 2023

UEMK_PLACEMENT_2023 This repo contains all the materials for placement as well as Practical lab codes for all subjects and notes. For students graduat

Shambashib Majumdar 8 Mar 5, 2022