User:Sudhanshu Dubey/GSOC20/proposal


 * Name: Sudhanshu Dubey


 * Email Address: sudhanshu.thethunder@gmail.com


 * IRC nick: 	SudhanshuDubey


 * Blog: https://hacksd.wordpress.com


 * GitHub profile: https://github.com/Sudhanshu-Dubey14

Brief Background Information

I am pursuing B.Tech (Computer Science Engineering) from Guru Nanak Dev Engineering College, Ludhiana, India. I am currently in 3rd year. I am well versed in coding in Python, C/C++ and Java and have used Git, Make, CMake, Markdown, LaTex and Android Studio.

= Project Information =

= Project Title: FEM Examples Extension in FreeCAD =

= Brief Project Summary =

This project is to expand the list of Finite Element Method (FEM) examples currently present in FreeCAD by adding more examples. The target will be to create an example for each available constraint and each available analysis type or equation type which is supported by each solver.

= Detailed Project Description =

Current Scenario in FreeCAD

Currently, FreeCAD has some examples of FEM here. But they are limited in number and don’t cover all the constraints and analysis types available in FreeCAD. Thus, they can’t display the full capability of the FEM workbench of FreeCAD. A new user is required to either read the user documentation or get enough experience of using the FEM workbench to fully realise the power and utility of it. Also, different solvers support different types of analysis/equation types and thus different types of constraints. The current examples are mostly general in nature and don’t highlight the uniqueness that the different solvers offer.

Hence, this lack of examples prevents the FEM Workbench from being as widely used as it should be even though FreeCAD is such a popular open source software.

How to solve the problem?

The clear and simple solution of this problem is to create examples covering all the analysis types and constraints available in FEM Workbench through it’s different solvers. Also, we need to create documentation and Wiki pages of these examples to better explain them to the users. This way, users will find it more easy and convenient to use the FEM Workbench to its full capacity resulting in FreeCAD expanding its user base.

Implementation

First, we need to find suitable examples of use of FEM workbench or FEM. For that we can look to the standard examples provided by popular open source Finite Element Analysis (FEA) softwares like Calculix, Elmer, Z88, etc. We can also ask the FreeCAD FEM community for some interesting examples from their personal experience. The examples need to be simple enough to serve as “examples” but also should demonstrate all the features provided by FEM Workbench.

After deciding on which examples to include, we will start coding them. For creating examples, we can follow a similar procedure that @bernd has followed here: https://github.com/FreeCAD/FreeCAD/commits/master/src/Mod/Fem/femexamples/ccx_cantilever_std.py

For each example, we will do 4 things:  Code it in python. Create documentation in the Python module of the example. Create an input writing test for it like the one here. Create a wiki page for it. 

= Timeline =

 Community Bonding Period (4 May - 01 June)  Having interaction on the forum, mailing list and IRC regarding important aspects of the project. Reading FEM examples currently present in FreeCAD and from popular open source FEA softwares.</li> Deciding the examples to be included.</li> Writing the documentation of existing FEM examples in FreeCAD.</li> </ul></ul>

<ul> 01 June - 25 June (25 days)</li> <ul> Coding examples demonstrating mechanical constraints given here.</li> Writing input test files for each example.</li> Documenting each example in its Python module.</li> Testing each example.</li> </ul></ul>

<ul> 26 June - 28 June (3 days)</li> <ul> Backup days for any backlog or pending task and preparation for phase I evaluation.</li> </ul></ul>

<ul> 29 June - 03 July (5 days, Phase I evaluation)</li> <ul> Create documentation on FreeCAD wiki pages.</li> Submit all the work to mentor.</li> </ul></ul>

<ul> 04 July - 23 July (20 days)</li> <ul> Coding examples demonstrating fluid and electrostatic constraints.</li> Writing input test files for each example.</li> <li>Documenting each example in its Python module.</li> <li>Testing each example.</li> </ul></ul>

<ul> <li>24 July - 26 July (3 days)</li> <ul> <li>Backup days for any backlog or pending task and preparation for phase II evaluation.</li> </ul></ul>

<ul> <li>27 July - 31 July (5 days, Phase II evaluation)</li> <ul> <li>Create documentation on FreeCAD wiki pages.</li> <li>Submit all the work to mentor.</li> </ul></ul>

<ul> <li>01 August - 18 August (18 days)</li> <ul> <li>Coding examples demonstrating thermal constraints.</li> <li>Writing input test files for each example.</li> <li>Documenting each example in its Python module.</li> <li>Testing each example.</li> </ul></ul>

<ul> <li>19 August - 25 August (1 week)</li> <ul> <li>Work on backlogs, testing and bug fixes.</li> </ul></ul>

<ul> <li>24 August - 31 August (8 days, Final evaluation)</li> <ul> <li>Create documentation on FreeCAD wiki pages.</li> <li>Submit all the work to mentor.</li> </ul></ul>

<ul> <li>01 September - 07 September (1 week)</li> <ul> <li>Add other interesting examples encountered.</li> <li>Complete pending task, if any.</li> </ul></ul>

= Time Availability =

I will be able to dedicate 40 hours per week. During regular days from Monday to Friday, my college timings are 8:00 am to 4:00 pm IST. So, these days I am available for 4 hours after my college and can manage to get 2 hours in my college timing, thus making around 6 hours per weekday. I am free on weekends during which I am free to work and will be able to dedicate 8 hours to project work. From 20th May to 12th June, I have my final exams during which there are 3 to 4 holidays before each exam. So, I can spend 2 out of 4 days working on my project. Since, the actual coding part will start from 1st June, so my final exams will not affect much of the timeline of my project. From 13th June to 17 July, there will be holidays during which I will be available full time. My new semester will start from 18th July and therefore I can contribute 5 hours per day as mentioned above for July and August.

= Why FreeCAD? =

Open source, according to me, is the best way of contributing to and learning from the real world and latest technology. FreeCAD is a very big open source software with many users, thus working on FreeCAD will help me learn the process and way of working with such large scale projects. FreeCAD has a well established community of great developers and this project will give me an opportunity to work with them. Also, FreeCAD very beautifully implements the concept of open-source projects to utilise the work done by others by just connecting various softwares as components and building a big thing out of it. So, this project is going to be a great learning experience for me.

= Why you? =

I find myself suitable for this project because I have a strong grasp of Python and basic idea about FEM and also how FEM works in FreeCAD. I have good coding and code reading skills, thus enabling me to learn from others’ works and extend them. I am also willing to contribute to FreeCAD after GSoC.

= Reference Links: =

Related Discussion: https://forum.freecadweb.org/viewtopic.php?f=18&t=44705

Github Repository: https://github.com/Sudhanshu-Dubey14/FreeCAD_sd/tree/femexamples