Avatar

đź‘‹Hi, My name is Robert

Welcome to my personal website.


Background

I am a licensed Professional Engineer (PE) in California, currently working at Degenkolb Engineers, where I'm involved in seismic retrofits, new building design, computational tool development, data visualization, and various R&D initiatives. I have a Master's Degree in Structural Engineering from Stanford University, and a Bachelor's Degree in Civil Engineering from the University of Ottawa.
My interests include structural analysis, programming, and design/typography. In other words, I like designing buildings, creating software, and making things look nice. I am the creator of several popular structural engineering python packages. Most of which are free, open-source, and pubicly available on Github. Aside from coding, I also write occasional blogs on random things that interest me. The contents of all my work reflect my personal views only. I do these blog posts and programming projects in my spare time, and I never write on behalf of my employer. Welcome to my little corner of the internet. Don't hesitate to reach out if you'd like to connect or collaborate!

Projects


fkit
wthisj
fapp
ezbolt
ezweld
ezanchor
Framing Generation in Dynamo
Roof Optimization in Dynamo
Parametric Geometry - Bus Shelter
Personal Website
Massive Popsicle Bridge
Massive Gingerbread House
logo
animated-gif

fkit (fiber-kit) is a powerful and easy-to-use section analysis program built in python. Perform moment-curvature and P+M interaction analysis with less than 5 lines of code. Fibers can be defined by the user with a plethora of material models (e.g. Hognestad, Manders, RambergOsgood, Menegotto-Pinto, ElasticPlastic, and more).

This was one of my best project yet. The object-oriented design was so intuitive that - with some careful planning - everything sort of fell into place. I learned a lot about material constitutive models, concrete strain compatibility analysis, root-finding algorithms, object-oriented programming concepts like inheritance, and too many things to list about concrete design. I put a lot of effort and love into this project, and I hope others will like it too. Check it out on GitHub.

logo
animated-gif

wthisj - what the heck is j? - is a python program that performs punching shear calculations for design of concrete slabs. It does so using the elastic method as well as various concepts described in ACI 318 and ACI 421.1R.

This was a fun project where I explored the origin of the "J" parameter, and the various nuances and idiosyncrasies with punching shear - arguably the most important limit state in concrete slab design. I'm also quite happy with the plotly interactive visualization. Check it out here on GitHub

logo
animated-gif

fapp - Frame Analysis Program in Python - is a lightweight and easy-to-use Python implementation of the Finite Element Method (FEM). Perform first-order elastic analyses of any 3-D frame structure and visualize results with a fully interactive web browser interface.

I've implemented the direct stiffness method several times throughout my education. First in Excel/VBA, then in MATLAB, and now in Python. I think I've really struck gold here. The entire source code is only around 500 lines (if you don't count comments and the plotting functionalities). Check it out here on GitHub

logo animated-gif

EZbolt is a python program that calculates forces in bolted connections subject to shear and in-plane torsion. It does so using both the Elastic Method and the Instant Center of Rotation (ICR) method.

I spent almost a year on this project, getting stuck at various points. The engineering part was quite easy. I am not doing anything new here. The hard part was the visualizations and getting the sign right - especially since I allow all possible input of (P, Mx, My) both positive and negative. After the tool was completed, I used it to generate and tabulate "C" coefficient of over 90,000 common bolt configurations. I was very proud when all my coefficients matched those provided in the AISC steel manual. I am fairly confident this is first comprehensive tabulation of C coefficients on the internet! Check it out on GitHub

logo animated-gif

EZweld is a python program that performs stress calculations for weld groups using the elastic method. This is a very practical and easy-to-use tool. Define weld groups of any configuration, then calculate its geometric properties and the resultant stresses.

Both the theory and the implementation were quite simple. The main challenge was getting the plotly visualization right. I also got myself into some very interesting rabbit holes such as stress transformations, Von-Mises yield criterion, change of basis, intrinsic vs. extrinsic rotations, transformation matrices, etc. Read more here on GitHub

logo
animated-gif

EZAnchor is a python program that performs nonstructural component seismic force (Fp) calculations per ASCE 7-16 Chapter 13, it then applies Fp in all possible orientations (360 degrees) to determine the maximum shear and tension demand in the anchors holding an equipment down in place. Although the math behind equipment anchorage is simple, there's is actually tons of nuance and this program is far from easy to implement.

I used this program to generate the results for my first ever conference paper, which I presented at the 2024 SEAOC Convention in Portland. The paper is titled: "Critical Orientation of Seismic Force for Floor-Mounted Nonstructural Component Anchorage" (Wang et al, 2024). Read more on GitHub

animated-gif

Many structures have repeating elements that can be parametrically generated based on a pre-defined set of rules. I created this Dynamo script for rapid parametric generation of structural framing in Revit. Rather than creating a boring portal frame, I thought it would be a lot more exciting to loop it around on itself and create a circular structure; similar to the Apple Headquarter building in Cupertino. You can change different parameter of the building (e.g. bay spacing, building diameter, roof slope, and etc.) in real time and watch it auto-generate.

animated-gif

Autodesks "Generative Design", formerly known as Project Refinery, is an optimization tool that uses genetic algorithms to quickly generate alternatives based on preset goals, constraints, and inputs. I made a simple model here that explores the question: "Given a fixed boundary or building footprint, with the same loading condition. Is it better to have smaller members spaced closely together, or large sections spaced farther apart". Other evaluation criteria include roof performance (measured by deflection), efficiency (measured by weight), and cost (measured by an assumed material and labor cost per beam).

animated-gif

This was more of an artistic project than an engineering one. Above is a fully parametric bus shelter with its geometry mathematically defined and highly customization. The final product is a gravity-defying structure with bold and elegant curves. The spiral column was defined by three circles of varying diameter and the roof was defined by a surface lofted onto three sinusoids.

animated-gif

I learned a bit of web development this past year and decided to build a portfolio website from scratch using vanilla HTML, CSS, JS; no reliance on services like Wordpress, Squarespace, or Wix. This website features a minimalist design and subtle yet noticeable animations. Although it was a lot of work (e.g. selecting fonts, color scheme, layouts, templates), I felt the end result was well worth it! This website is powered by Jekyll templating engine and GitHub Pages

animated-gif

Above is a massive 8000+ sticks popsicle bridge shattering into pieces under 5500 lbs of force! That's not a typo. The bridge took about a month to make and is entirely made of popsicles and Elmers glue. The tied-arch configuration allows for an efficient load path to the supports, and the bottom chord resists the any outward thrust. This bridge won the Bronze medal at the 2017 National Troitsky Popsicle Bridge Building Contest in Canada.

animated-gif

Here is a massive gingerbread tower measuring over 3 ft tall! “181 Fremont with a Santa Hat”. Made from 3 bags of flour, 3 bags of confectioners sugar, 4 bottles of molasses, and 6 sticks of butter. A great way to spend Christmas under quarantine.