03 Aug

Parabolas, Rectangles, Triangles & Snakes (Part 9)

Part 9 – Verification

Part of the verification process in development of a spreadsheet or software tool involves what I like to term the process of idiot proofing. Some end users are considered as potential idiots, asking yourself to think like this idiot can be a challenge, as it doesn’t come naturally to some. Luckily as engineers we are good at solving problems, identifying risk and considering all eventualities, and are able to either test for these eventualities or provide suitable error handling to avoid giving back an incorrect, but potentially believable result to the end user.

You’ll essentially need to consider things no sane person would do, and then do these things to ensure your code, calculations, etc, all work as intended. You know that guy who uses a spreadsheet to design outside of any fundamental assumptions it might be based on, or intentionally decides some course of action is conservative when it really isn’t. Think like this guy, what will go wrong will go wrong, and you’re trying to head this eventuality off at the pass so to speak.

Read More
25 Jul

Finding an equation for the Moment of Inertia of a complex tapering member using Python

Often in engineering you need to make simplification in analyses that make your life easier, often applying some judgement based on experience that involves some simplification in the analysis of a structure for example. Sometimes you do this in the name of achieving conservatism, other times to get a reasonable/faster answer that is deemed close enough to the true solution to be accepted as good enough.

Sometimes peoples understanding of engineering principles lets them down here, and the end result is they made it simple, but they also made it wrong or unconservative. Don’t be this person.

Read More
19 Jul

Finding the Warping Constant for back-to-back Cold Formed Channels using Python

This blog post is inspired by a recent post which I responded to on the EngTips forum. The question was related to finding the warping constant of back to back cold formed channels.

The poster was querying the validity of some random formula for calculating the warping constant for back to back channels that they found in another post. Comparing this to values that were published for the shape they were interested in, and they were ultimately getting limited agreement.

Read More
05 Jul

Parabolas, Rectangles, Triangles & Snakes (Part 8)

Part 8 – Documentation, the Necessary Evil

Love it or hate it, I’ve already decided documentation is required so you are stuck with it. Code comments and docstrings aside, part of the planned documentation is this series of blog posts (so I can remember what I did basically). Hopefully these demystifying some of the mysteries behind the general methods involved.

For the remainder I’ll leave it up to a readthedocs page to explain the ins and outs for the end user. If you are not familar with readthedocs or RTD for short, it’s basically a free service for hosting documentation for public open source projects. You can link it directly to your Github repo, changing any of the documentation committed within Github, and you’ll automatically trigger an update of the RTD documentation pages.

Read More
25 Jun

Parabolas, Rectangles, Triangles & Snakes (Part 7)

Part 7 – Documentation & Verification, Better Than More Integration?

At some point in any projects life cycle you should start thinking about the need for documentation and verification. This post and probably the next few will be dedicated to exploring these aspects.

As a structural engineer, if you are designing a building you have to produce some drawings, calculations, specifications, etc to describe what is being built, and someone probably needs to check these deliverables. Often the drawings are the only deliverable, so its all the end user ever sees out of your blood sweat and tears. You’ll be judged on this alone if it contains mistakes, omissions, etc. Small omissions can cost you or the client are lot of time or money to put right if the contractor has made no allowance for the items. As an engineer designing something tangible like a building, you simply cannot get away without producing drawings, someone needs to produce your design after all and they are going to need some instructions.

Read More
21 Jun

Parabolas, Rectangles, Triangles & Snakes (Part 6)

Part 6 – Slicing & Dicing

Based on the last two posts, I’d now reached the stage where I’d determined the general basis for calculating the force and centroid of the concrete compression force. This seemed like one of the major challenges had been overcome, just a matter of coding it now I guess.

Going Off Script…

However for a moment I’d like to touch on the inherent errors in other approaches, because you’re probably thinking all this integration is a bit over the top at the end of the day. When you’ve done these things before, you just obliviously divided the compression region up into some discrete strips and were none the wiser. It’s probably close enough after all considering all the other inherent variability in material properties, time is money man.

Read More
20 Jun

Parabolas, Rectangles, Triangles & Snakes (Part 5)

Part 5 – Centroids, More Integrals….

In the last post we went through a process to find a general force integral which involved knowing the width and height of the stress block in terms of how far from the neutral axis depth you are. Then by using numerical integration methods we would be able to calculate the concrete force by evaluating this integral. Note that except for certain cases like a constant stress or constant width I don’t think you can even solve the integral by hand, so your best chance of success is solving it numerically unless of course you’re a masochist and love integration that much. Good thing Python makes it easy to solve integrals numerically.

In this post we’ll look at extending the previous post (and the result we had magicked up for the force integral) by going on to find the centroid, or in other words the location where the resultant force acts within our concrete compression block.

Read More
14 Jun

Parabolas, Rectangles, Triangles & Snakes (Part 4)

Part 4 – Integrals, its Business Time

In the first post in this series I posted the following integral for the x direction centroid of a part of the compression block for EC2 parabolic-rectangular derivation :-

\overline{x}=\frac{\displaystyle{\int_{y_1}^{y_2}}\;\bigg[\frac{(x_1-x_2)(y_2-y)}{(y_2-y_1)}+x_2\bigg]\;\bigg[(1-(1-\displaystyle{\frac{y}{k_1c}})^n\bigg]\;\bigg[\frac{(x_{b\,mid}-x_{t\,mid})(y_2-y)}{(y_2-y_1)}+x_{t\,mid}\bigg]\;\bigg[dy\bigg]}{\displaystyle{\int_{y_1}^{y_2}}\;\bigg[\frac{(x_1-x_2)(y_2-y)}{(y_2-y_1)}+x_2\bigg]\;\bigg[(1-(1-\displaystyle{\frac{y}{k_1c}})^n\bigg]\;\bigg[dy\bigg]}

Which at first glance looks a bit intimidating, but it breaks down to quite a simple formulation which I’ll try my best to explain in this post and the next post.

Read More
09 Jun

Parabolas, Rectangles, Triangles & Snakes (Part 3)

Part 3 – Class Hell Week

At some point I came to the realisation that I’m going to need classes in my code, I didn’t know what they were exactly, but I needed them! Everyone else used them, so I must have them and they seemed the solution to a number of limitations I was coming up against or problems that needed solving according to good old google.

So I split up my code and copied it to the four corners of my project. Welcome to class hell, all my code that did work, now doesn’t work. Try as I might I just wasn’t getting it.

Read More