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)


Explore, import, and run the thouse5.fds case (30 minutes)

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

Create and transform the geometry, Outliner and Properties editors (20 minutes)

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 |

Conclusion (10 minutes)