Lesson plan - firetools/blenderfds GitHub Wiki
:information_source: Work in progress
This wiki page contains a well-tested lesson plan for teaching BlenderFDS usage to basic FDS users, with no previous knowledge of Blender.
Learning objective
The student is going to learn how to create or import, edit, and run simple FDS cases within BlenderFDS.
This lesson helps the students overcome Blender somehow steep learning curve. At the end, the students should become independent users, able to keep learning by themselves, if interested.
If a fully open source toolchain is employed, the student can be guided through direct experience of:
- the importance of transparent tools for the engineering/scientific practice as an added value for the dependability of their results (eg. public peer-review is facilitated, no hidden algorithms/data),
- the role of Communities and social interaction in open source projects,
- the advantages of the sharing economy, as a just and effective alternative to the gated economy.
Requirements
The lesson takes at least 4 hours, pauses included. If you want to teach the new GEOM
namelist, consider an additional hour.
The timing of each part depends a lot on student interaction, be flexible with the timing if an interesting discussion arises. The same subjects can be demonstrated in 2 hours by removing the interaction, but effectiveness is deeply affected.
The in-person attendency should be limited to no more than 10 students per trainer and no more than 50 students in total, so that the trainers could provide direct assistance to the students. Students should work in self-selected pairs for self-assistance and micro-exchange.
Due to its hands-on and interactive nature, the lesson has proven to be much more effective when held in-person, instead of online: humans are social beasts, not bots.
The students should already have a basic knowledge of the fire safety engineering topics. No previous Blender knowledge is needed, but the students should be able to:
- browse the internet and download files;
- open a console, browse directories and list files from the command line in the chosen platform (Linux, MacOS, or MS Windows);
- create and edit simple FDS cases with any sane text editor (eg. Notepad++ in MS Windows);
- run simple FDS cases and visualize the results with Smokeview;
- open
.csv
files and make graphs of the imported FDS data in Libroffice Calc, or any other tool.
BlenderFDS does not hide FDS complexity from the user! It just facilitates data pre-processing.
Each pair of students needs a personal computer with Linux, MacOS, or MS Windows operating system. FDS, Blender, Libreoffice, and the chosen text editor, should be preinstalled on all computers. Blender and FDS application versions should match those indicated in the BlenderFDS Release notes.
When on Linux, this lesson plan can be fully taught with a fully open source toolchain: no commercial software license is required, not even the operating system.
Trainer setup
FIXME bf folder, thouse5, syntax highlighting for the text editor
Before starting the lesson:
- prepare and check the initial presentation;
- set the right zoom level in the Blender session of the trainer, the default level is generally too small;
- switch on the keystrokes and mouse clicks overlay in Blender, I suggest using the
Screencast-Keys
addon; - print enough copies of the example cases drawing;
- prepare FDS code snippets, if needed;
- review the great Blender 3.0 Beginner donut tutorial, Blender Guru for inspiration.
During the lesson:
- be respectful, foster interactivity, build on student's curiosity;
- and have fun: Blender is magic, FDS is amazing!
After the lesson:
- thank the students for their effort,
- be proud of yourself (you did it!),
- reserve some time to ask the student's opinion about possible improvements, and share it back with this Community.
Lesson rules
These rules should be shared with the students during the introduction:
- 10 minutes pause every 50 minutes, ask for help in timing the pause;
- play hard, be interactive, ask questions and request assistance anytime;
- there are no stupid questions.
After sharing, ask for the student's approval of the rules.
Lesson plan
Warm-up (15 minutes)
Time | Activity | Description | Interaction |
---|---|---|---|
0:00 | Introduction | Introduce yourself | The students quickly introduce themselves and why they choose to attend |
Objective | State the lesson objective, share the rules | Obtain approval | |
Blender world | Present the slides on Blender background and fundamentals, with short video, and the relevance of open source initiatives | Discuss: has anyone used Blender before? What applications with FDS? | |
15:00 | End |
Install BlenderFDS, explore its UI (25 minutes)
Time | Activity | Description | Interaction |
---|---|---|---|
0:00 | Install | Open Blender, show Preferences panel, install BlenderFDS addon, load its default settings, show upgrade options | Same |
UI structure | Show the Preferences panel, close it, quickly show the default user interface editors (3DView , Outliner , Properties , Text Editor ) and customization of areas (move border, open new editor), explain we only use 10% of Blender complexity |
Explore | |
Save case | Create the bf directory, save the default file on bf/demo.blend , set the FDS case directory to bf/demo |
Same | |
Run case | Compute the demo.blend case from BlenderFDS, run Smokeview, show output files, open demo_hrr.csv in Libreoffice |
Same | |
25:00 | End |
Explore the 3DView editor (10 minutes)
Time | Activity | Description | Interaction |
---|---|---|---|
0:00 | 3DView navigation | Within the demo case, show pan, zoom, orbit, views, ortho/perspective, overlays, and 3d cursor in the 3DView editor |
Play |
10:00 | End |
Pause (10 minutes)
thouse5.fds
case (30 minutes)
Explore, import, and run the Time | Activity | Description | Interaction |
---|---|---|---|
0:00 | Open thouse5.fds |
Open visualization/thouse5.fds in the text editor, show no syntax highlighting |
Same |
Install syntax highlighting | Install syntax highlighting in the text editor | Same | |
Explore case text | Explore thouse5.fds in the text editor with syntax highlighting, explain how syntax highlighting helps preventing syntax errors |
Same, then discuss: what to expect from this case (eg. geometry, output) | |
20:00 | Import case in BlenderFDS | Back to Blender, import thouse5.fds , show correspondance to what students expected, set simulation end time to 10 seconds in TIME T_END |
Same |
Save case | Save in bf/thouse5.blend , set the FDS case directory to bf/thouse5 |
Same | |
Run case | Compute the thouse5.blend case from BlenderFDS, run Smokeview, show output files, open thouse5_hrr.csv in Libreoffice |
Same | |
35:00 | Explore Blender Scenes |
Show how to switch to another Scene , explain that each Scene is a distinct FDS case, the .blend file can act as a container, the assets (Blender datablocks) are shared |
Same |
40:00 | End |
Outliner
and Properties
editors (20 minutes)
Create and transform the geometry, Time | Activity | Description | Interaction |
---|---|---|---|
0:00 | New Scene |
Add a new empty Scene |
Same |
New cube | Add a new cube in the 3DView from Add > Mesh > Cube |
Same | |
Object transformations |
Grab, rotate, and scale the cube with the 3DView tools. Then introduce keyboard shortcuts (G , R , S ). Show how to set the Object dimension and trasformations in the sidepanel. Show grabbing along the x axis precisely ( eg. G + X + 3.5 ). Show undo/redo (eg. Ctrl-Z , Shift-Ctrl-Z ) |
Play | |
New plane | Add a new plane in the 3DView from Add > Mesh > Plane |
Same | |
Snapping | Switch on the vertex snapping (magnet icon), grab the plane and show snapping to the cube | Play | |
Outliner |
Show the Outliner , a running inventory of your datablocks |
||
Collection |
Add a new Collection , a sort of folder to range the Objects . Name it My stuff, drag the cube into the Collection |
Same | |
Properties |
Show the Properties . Start fron the Object panel and change the cube name to My toy. Switch to the Material panel and change its color. Then switch to the Scene panel and rename it Playground. BlenderFDS simplifies the panels, experts can restore the original UI in the Preferences . |
Play | |
20:00 | End |
Pause (10 minutes)
Edit the geometry (40 minutes)
Time | Activity | Description | Interaction |
---|---|---|---|
0:00 | Edit geometry | Select the My toy cube | |
Modes | Switch to the Edit Mode , used for editing Object shapes, called Mesh in Blender. Show the modes. |
Same | |
Selection | Show how to select vertices, edges, faces (1 , 2 , 3 ). |
Same | |
Mesh transformations |
Select a face. Grab, rotate, and scale it with the 3DView tools. Then introduce keyboard shortcuts (G , R , S ). Show grabbing along the x axis precisely ( eg. G + X + 3.5 ). Do the same with an edge. |
Play | |
Mesh additions |
Play with addition tools: extrude, inset, bevel (E , I , B ). Do the same with vertices. |
Play | |
30:00 | End |
Datablocks (10 minutes)
Time | Activity | Description | Interaction |
---|---|---|---|
0:00 | Linked/Unlinked | Go to Object Mode . Duplicate the My toy cube (Object > Duplicate Objects ), and call the copy My unlinked toy. Duplicate linked the My toy cube (Object > Duplicate Linked ), and call the copy My linked toy. Show the difference between linked/unlinked datablocks by going to Edit Mode and editing the My toy shape. |
Same |
Separate shapes | Select the My toy cube and go to Edit Mode . Select a couple of faces and separate them (Mesh > Separate ). Show the selected faces are now the shape of another Object . |
Same | |
10:00 | End |
Pause (10 minutes)
Burning room
from scratch (50 minutes)
Time | Activity | Description | Interaction |
---|---|---|---|
0:00 | Quick summary | What we learned so far, show the slides | |
Drawing | Describe the burning room case drawing |
||
0:05 | New Scene |
Add a new empty Scene , name it room |
Same |
Case directory | Set its case directory to bf/room |
||
OBST burner |
Add new cylinder, set its name to OBurner, set center position (z position, apply location), set size, set namelist to OBST , discuss XB and set it to Voxels , set SURF_ID to INERT |
||
VENT burner |
Add new circle, set its name to VBurner, set center position (z position), set size, go to Edit Mode and fill it (F ), set namelist to VENT , discuss XB and set it to Pixels , set SURF_ID to Burner bc |
||
Parent and move | Parent VBurner to OBurner (context menu or d&d), and move OBurner to the chosen position in the room | ||
OBST wall |
Add new plane, set its name to OWall. Set incremental snapping. In Edit Mode rotate it vertically, move upwards, and set its size. Add Solidify modifier. Set namelist to OBST , discuss XB and set it to Voxels . Add Gypsum Plaster MATL from snippet, set SURF_ID to Wall bc . |
||
OBST door |
Add new cube, set its name to ODoor, set center position (z position, apply location), set size, set namelist to OBST , discuss XB and set it to Voxels , set SURF_ID to Wood panel bc . |
||
Door to wall | Parent ODoor to OWall. Select OWall add boolean modifier and subtract the ODoor. Show carved hole in the wall. | ||
Domain | Add new plane, set its name to Domain. Set vertices snapping. In Edit Mode extrude to the OWall height. Set its size, set namelist to MESH , set IJK with the operator. |
||
Domain bc | Duplicate the Domain Object , set its name to Domain open. In the Outliner , put Domain and Domain open in a new CDomain collection. Set namelist to VENT , discuss XB and set it to Faces , set SURF_ID to OPEN . Show the exported geometry, show the generated faces. Go to Edit Mode and remove the lower face. |
||
Case configuration | Show HEAD and TIME , they should be ready. Load the REAC snippet. |
||
Output namelists | SLCF DEVC BNDF ISOF |
||
Parallel computation | Split Domain and set MPI_PROCESS |
||
Quick summary | What we learned so far |
FIXME burning room drawing
FIXME
Pause (10 minutes)
GEOM
manifold geometries (50 minutes)
FIXME
| | Join shapes | Go to Object Mode
. Select the My toy cube and the separated faces object. Then join them (Object > Join
). Show that the connectivity is broken, the edges are not anymore manifold. | Same |