colincaprani.com

Structural Engineering, Bridge Research, Programming, and more…

Entries Comments


Journal paper published – footbridge vibration

16 April, 2012 (20:47) | Engineering, Research | No comments

The paper Enhancement factors for the vertical response of footbridges subjected to stochastic crowd loading has been published in the prestigious Computers & Structures journal. This has an impact factor of 1.719 for 2010.

This paper proposes a method of determining statistical enhancement factors to apply to single pedestrian responses to obtain corresponding crowd-induced vibration responses.

The full reference for the paper is:

Caprani, C.C., Keogh, J., Archbold, P. and Fanning, P. (2012), ‘Enhancement factors for the vertical response of footbridges subjected to stochastic crowd loading’, Computers & Structures, in press.

And it is available from: http://dx.doi.org/10.1016/j.compstruc.2012.03.006.

Abstract

The vertical acceleration response of a hypothetical footbridge is predicted for a sample of single pedestrians and a crowd of pedestrians using a probabilistic approach. This approach uses statistical distributions to account for the fact that pedestrian parameters are not identical for all pedestrians. Enhancement factors are proposed for predicting the response due to a crowd based on the predicted accelerations of a single pedestrian. The significant contribution of this work is the generation of response curves identifying enhancement factors for a range of crowd densities and synchronization levels.

Spaghetti Bridge World Record

2 December, 2011 (13:22) | General | 2 comments

The video of spaghetti bridge world record test is below. The bridge weighed 0.982 kg and held 443.58 kg before failing spectacularly. This is an amazing strength-to-weight ratio of almost 452 and beat the previous world record by 92 kg. It was built by two Hungarian students, Aliz Totivan and Norbert Pozsonyi and tested at the 2009 Spaghetti Bridge Championships held at Okanagan College’s Kelowna, B.C., Canada.

The construction of the bridge is extremely good. Every connection and member is in perfect position, and this means that load paths are equally distributed. As we in DIT have learned from our Spaghetti Bridge tests, it is often the best constructed bridge, and not necessarily the best design that wins.

The importance of units

21 October, 2011 (21:47) | General | No comments

There are some quite serious sites that point out the importance of units in engineering calculations, but a less serious result of an error is the guy who got the wrong slipper!

See the news report here.

Nonlinear beam behaviour example

3 October, 2011 (22:19) | General | No comments

This shows the deflection and bending moment history of a propped cantilever loaded with a point load at mid-span. The beam has a plastic moment capacity of 100 kNm and a shape factor of 1.12. A strain hardening modulus of 2% of the modulus of elasticity is used.

The model is based on that given in Advanced Analysis and Design of Steel Frames by Li and Li, Wiley 2007.

Getting properties from CMFCPropertyGridProperty

2 September, 2011 (02:15) | General | 1 comment

It’s been a while…but this is a good one – if it is what you need!

In Visual C++, the MFC Feature Pack gives the property grid control, but one of the questions regularly asked (see stackoverflow.com) is how to return properties once changes by the user. Part of the problem is the COLEVariant is the return type from the framework, but what if you want a double, or CString for example?

I bashed together a few different ideas and have a nice little functoid that essentially overloads the output type and so this can be used as an argument to your function. The references I used were

I defined the functoid in the header file for the CPropertiesWnd class (which contains the CMFCPropertyGridProperty control) as:

1
2
3
4
5
6
7
8
9
10
11
12
class getPropValue
{
public:
    getPropValue(CMFCPropertyGridProperty* pProp):m_pProp(pProp) {};
    operator CString()        {return (LPCTSTR)(_bstr_t)m_pProp->GetValue();}
    operator int()            {return m_pProp->GetValue().iVal;}
    operator unsigned int()   {return (unsigned int)m_pProp->GetValue().iVal;}
    operator double()         {return m_pProp->GetValue().dblVal;}
    operator bool()           {return m_pProp->GetValue().boolVal == VARIANT_TRUE;}
private:
    CMFCPropertyGridProperty* m_pProp;
};

An example call using this is then:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
LRESULT CPropertiesWnd::OnWindowPropertyChanged(WPARAM wparam, LPARAM lparam)
{
    CMFCPropertyGridProperty *pProp = (CMFCPropertyGridProperty*)lparam;
    if (!pProp) return 0;
    CMyView* pView = getActiveView();  // Helper function uses CMainframe
    const int id = (int)pProp->GetData();  // storing property id as a DWORD using SetData
    switch(id)
    {
    case idWindow_OverallScale:
        pView->setScale( getPropValue(pProp) );    // double as an argument to func
        break;
    case idWindow_PenWidth:
        pView->setPenWidth( getPropValue(pProp) ); // int as an argument to func
        break;
    case idWindow_Title:
        pView->setTitle( getPropValue(pProp) );    // CString as an argument to func
        break;
    }
}

There you have it – it could be exactly what you need, or maybe not!

« Older entries

 Newer entries »