It's been awhile since I have posted, but I have a fun "new" tool released on the website.
You can take it for a spin here:
https://www.re-tug.com/concretedesign/
The github repo is here:
https://github.com/retug/concJS
and a how-to-use youtube link is here:
https://www.youtube.com/watch?v=ZiqJzKaldpw&t=36s
Coding
The code updates from the last release about 2 years ago are quite large. I have added the ability to add custom rebar and concrete materials allowing for any material setups, including tension only rebar if desired or concrete with small tension capacity. It also allows for non-linear material definitions which will be useful for my future hopes of creating a moment rotation functionality.
One of the best things that I did during this process was actually learn how to use the debugger in your web browser. Sometimes errors would be hard to trouble shoot and I was reluctant to use the debuggers in visual studio/your favorite web browser for some unknown reason. I thought that console.logging was quicker and more efficient, spoiler, it is NOT QUICKER. The sooner you learn to debug efficiently in any programming language, the quicker you will develop code, period, end of story.
To open up a quick and dirty debugging experience, just inject the word "debugger" into your javascript code and with the dev tool panel open in your web browser, you know have a debgugging, line by line experience. Super nice and easy.
Back to the coding side, the tool can now handle composite geometries, but only can handle one singular concrete material for the overall analysis at this point. This is due to the fact that my meshing algorithm relies on delunay triangulation which essentially is just throwing a bunch of point data at an algorithm to make triangles. If base geometry overlaps in this initial point generation, the tool does not know which material property belongs to which point. At some point in the future I will try to implement some form of composite shape geometry algorithm like the shapely package to hopefully handle differing concrete mixes in the same analysis. For now, please now that this is a limitation.
Some fun images from the composite geometry extension of the program and circle meshing, needing to add extra pruning steps.
I also added some nice prebuilt functions to quickly generate squares, rectangles, circles and bridge pier type shapes with evenly spaced rebar. This has to be me favorite feature added to the program. It saved SO much time in quick tests and debugging, one click of a button and you generate rebar and concrete shapes for quick testing. I should have done this awhile back when I first developed the concrete tool and I think I would have saved hours of time in manual clicks.
These prebuilt shapes are in the upper right of the webpage.
If there are any other prebuilt shapes that would be helpful for you, let me know, happy to try to get them added.
After building the tool, I realized that this tool does a lot of other stuff that I can reuse quite easily.
A few that come to mind:
- Calculate centroids of shapes
- Calculate moment of inertias
- Calculate composite concrete, steel shape moment capacities with a little tweaking
- Calculate baseplate and anchorage capacities with a bit of tweaking
It will be fun to extend and add onto this tools capacities outside of PMM generation.
Moving Forward
There are a few next steps I want to take with this tool.
First, I want to move some of the raw engineering calculations server side, rather than the current full client side setp. This will allow me to create an API and allow myself to ping the website for PMM capacities of given rebar and concrete information in a form a json type file and have the website respond with a json file of PMM point data for external tools to use. I plan on exposing this API as well for others so that they can use this tool in a more programtic way rather than having to use the three.js and web based interface. I envision a world where I can create a Revit plugin, draw shapes and rebar in revit, package this data up into a json file and ping the web server and have it respond with PMM capacities. How cool would that be? Concrete column and shear wall designs complete in seconds? One can dream...
I also want to program in explicit moment-moment curves into the tool, allow for the user to input the axial strength of interest and have the tool explicitly calculate the MM curve. Same for PM curves, right now the PMM curves can "wander" if the shape is non-symmetric. See below for the wandering PMM curve with a neutral axis bending angle of 15 degrees.
In addition, I want to work on formal documentation for the tool, working through sample problems to validate the tools accuracy.
Hope you enjoy the tool, it was a lot of fun to code and I hope it grows from here.