GithubHelp home page GithubHelp logo

appliedmechanics-eafit / introductory-finite-elements Goto Github PK

View Code? Open in Web Editor NEW
117.0 10.0 38.0 14.62 MB

Introductory course on the Finite Element Method

TeX 7.03% Jupyter Notebook 92.84% GLSL 0.07% CSS 0.06%
finite-element-analysis elasticity notebooks python

introductory-finite-elements's Introduction

Introduction to the Finite Element Method

Binder

Displacement field in a wrench.

Introduction

This repository contains teaching resources for an introductory course on Finite Element Analysis. The course in its present form is intended for last year undergraduate students enrolled in the Mechanical Engineering and Civil Engineering programs at Universidad EAFIT and for first-semester graduate students enrolled in the M.Sc. and Ph.D. programs in the Applied Mechanics track. The course emphasizes on the solution, through finite element algorithms, of the theory of elasticity boundary value problem. It combines theoretical aspects and computational implementations in Python. The material for this introductory course has been typically covered in an 18-weeks semester with 2 hours long weekly meetings. The course is divided into three parts. It starts by covering standard numerical methods such as interpolation theory and numerical quadratures which are numerical tools required in the formulation of finite element algorithms. The course continues with a review of the problem of the theory of elasticity, and particularly its formulation in the form of a boundary value problem stated in terms of the Principle of Virtual Work. The third and final part uses the covered numerical techniques to generate a finite element representation of the virtual work principle

Flipped class approach

The course has been designed to be imparted in a flipped classroom environment where most of the theoretical contents are covered by the student through independent study complemented with brief homework assignments. On the other hand, the 2-hour class sessions are dedicated to the solution of hands-on computational and theoretical problems under the instructor guidance. For the development of the methodological approach of inverted class the following resources are available in this repository:

  • Lecture notes: A collection of the theoretical material covered in several textbooks combined with independent developments by the Applied Mechanics Group and organized to facilitate independent study.

  • Notebooks: A series of Jupyter Notebooks summarizing the theoretical discussion (treated in more detail in the lecture notes) combined with computer implementations in Python. The notebooks contain brief activities intended for self-learning and several, more demanding in-class activities to be developed under the instructor's guidance.

  • SolidsPy: A Python-based finite element code for the stress analysis of arbitrary two-dimensional domains. The code, which has been developed as part of this course by the Applied Mechanics Group, is structured to be used as a stand-alone application or through the combination of independent modules. The modules used in the different notebooks follow the same structure of those in the code. The code is available in the Applied Mechanics' repository.

Contents

The course is divided into lessons/notebooks, as described following. NB-00 covers the basics of Notebooks and provides examples of basic programming skills in Python. NB-01 through NB-05 presents standard interpolation and numerical integration techniques but within the context of the finite element method. In particular, NB-04 applies an initial definition of a finite element to a problem of visualization of functions over two-dimensional domains. The formulation of the finite element method to the elasticity problem is defined in NB-08 and following.

The follosing is the list of notebooks/lessons:

Installation Instructions

We encourage you to use conda to install the required packages for this tutorial.

Note also that the material is written for Python 3.6. No guarantees of any kind are made that it will be compatible with Python 2.

Create a conda environment using the file environment.yml in the root of the repository using

conda env create -f environment.yml

This will create a conda environment named intro_fem with all of the required packages.

You can activate the environment with

conda activate intro_fem

License

All code is under MIT license and media under Creative Commons Attribute.

The content of this repository is licensed under the Creative Commons Attribution 4.0 license, and the source code that accompany the content is licensed under the MIT license.

introductory-finite-elements's People

Contributors

jgomezc1 avatar nicoguaro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.