Eventually I have managed to implement the full code for a simple Direct Stiffness calculator.
The previous post has been conveniently modified to reflect this.
The results have been fairly discouraging for my intemptions to use it as a basis for the SBRA: initial research led me to the wrong idea that the most computationally intensive part was that of assembly of the stiffness matrix, but my own experiments have proven the opposite.
The code provided, on a 1.66 GHz processor (the computer is actually dual core, but no parallelization was used), with 2GB RAM, takes 46 seconds only in the solving part. The modelled structure is 1000 nodes and 1800 elements large.
According to the paper, about 10⁷ iterations are needed over the solver to get a proper reliability assessment. Hence, grosso modo, applying SBRA to this structure on this computer would take 46*10⁷ seconds, some 14.5 long years.
It is likely that, for smaller structures and using parallelization, times become significantly smaller.
Nonetheless, the point I wanted to make here is that of the solving step being the most computationally intensive, instead of the presumed assembly step.
This is the blog-diary created to monitorize the evolution of Rabindranath Andujar's thesis on Stochastic Simulation and Lagrangian dynamics applied to Structural Design. It is intended to extend collaboration with other people, allow the register of the studies, and force a discipline on recording references, lines of study, and whatever else appears.
miércoles, 10 de marzo de 2010
viernes, 5 de marzo de 2010
DSF Implementation
Well...the following is the C++ code to achieve the initial stages of the DSF (e.g. member formation, globalization, merging and linear solving):
main.cpp:
Element.h:
Element.cpp:
Node.h:
Node.cpp:
Stiffness.h:
Stiffness.cpp:
I have used the GSL library for everything related to maths (http://www.gnu.org/software/gsl/).
This will make my life a lot easier once I manage to master it...Is fairly well documented, so it won't take long (I hope).
Please note that to make the timer work, under Ubuntu 9.10, I've had to activate the -lrt tag in the linker.
main.cpp:
Element.h:
Element.cpp:
Node.h:
Node.cpp:
Stiffness.h:
Stiffness.cpp:
I have used the GSL library for everything related to maths (http://www.gnu.org/software/gsl/).
This will make my life a lot easier once I manage to master it...Is fairly well documented, so it won't take long (I hope).
Please note that to make the timer work, under Ubuntu 9.10, I've had to activate the -lrt tag in the linker.
miércoles, 3 de marzo de 2010
Direct Stiffness Method
Well...as promised, these past days I've been researching on the possiblity of efficiently use the SBRA through the application of MonteCarlo methods.
I have been successful in my research and I have found this very interesting course:
http://www.colorado.edu/engineering/cas/courses.d/IFEM.d/
It is extremely complete!!
I have used it to refresh my rusted matrix knowledge from my university years, and so far I have managed to implement a very simple program - though effective for my purposes - that will allow me to benchmark the most time-consuming tasks in classical analysis.
This is a very brief resume of the algorithm from the course outlined above:
DIRECT STIFFNESS METHOD STEPS
I will provide the lines of code in the following posts.
I have been successful in my research and I have found this very interesting course:
http://www.colorado.edu/engineering/cas/courses.d/IFEM.d/
It is extremely complete!!
I have used it to refresh my rusted matrix knowledge from my university years, and so far I have managed to implement a very simple program - though effective for my purposes - that will allow me to benchmark the most time-consuming tasks in classical analysis.
This is a very brief resume of the algorithm from the course outlined above:
DIRECT STIFFNESS METHOD STEPS
- Breakdown
- Disconnection
- Localization
- Member Formation
- Assembly
- Globalization
- Merge
- Application of boundary conditions
- Solution
- Recovery of derived quantities
I will provide the lines of code in the following posts.
jueves, 25 de febrero de 2010
Simulation Based Reliability Assesment (SBRA)
This is the resume of the papers:
The first one is very interesting since allows comparison between the actual "State of the Art" (i.e. Limit State approach to design), and the proposed explicitly probabilistic approach.
It describes a step-by-step process of analysis and design comparing both methods:
Nevertheless, anyone would encounter the main drawback in the need for iterating 10 million times the whole structure, specially when it comes to real-time Lagrangian dynamics, as we are aimed to.
The steps for modelling the forces and displacements remain the same, it is, the traditional stiffness matrix.
Further research shows that the main time-consuming step into the stiffness matrix procedure (also applicable to FEM) is that of the assembly of the stiffness matrix (60-80%).
This means that, once a configuration is achieved and assembled, solving the matrix with different load cases should be relatively quick. Which is a relief if we want to implement SBRA.
Nevertheless, I still feel like I should pay deeper attention to this speed subject, and obtain my own benchmarking.
- Safety assessment of a steel frame using LRFD and SBRA methods
- Probabilistic reliability assessment of a stell frame using the SBRA method
The first one is very interesting since allows comparison between the actual "State of the Art" (i.e. Limit State approach to design), and the proposed explicitly probabilistic approach.
It describes a step-by-step process of analysis and design comparing both methods:
- Loading and load combination
- LRFD/Limit States
- Each load is expressed by nominal value and its load factor
- Load combinations are determined according to rules established in the Codes
- SBRA
- Each load is expressed by a load duration curve and its corresponding histogram
- Load combination employs Monte Carlo sampling over some 10 million iterations of the analysis
- Resistance and reference values
- LRFD/Limit States
- Resistances are combined with different resistance factors associated with failure mechanisms (yield stress, compression, flexure, shear,...) also provided by regulations
- Design capacity=Nominal capacity x provided failure factor
- SBRA
- Reference value corresponds to the onset of the stress/deformation curve of the material when reaching yielding, or to a tolerable deformation
- An histogram of yield stresses is used to feed each analysis iteration altogether with the histograms for the loads mentioned before
- Frame analysis
- LRFD/Limit States
- One single iteration is made
- Direct 2nd order analysis can be used, in order to check stabilities, but the most common approach is to do a 1st order analysis and then modificate it
- SBRA
- Analysis is repeated 10 million times using each time the values for loads and resistances extracted from the corresponding histograms. In these histograms, the more probable a load or resistance value, the more often will be used. An histogram is also called Probability Density Function in Monte Carlo literature.
- Initial imperfections are explicitly taken into account
- There is no need to check individual stability of columns (2nd order)
- Resistance is related to the onset of yielding
- Safety assessment
- LRDF/Limit States
- Once analysis is computed, for each element we check that the relationship Demand/Capacity is smaller than one
- SBRA
- Probability of failure Pf is compared against target probability Pd provided by the codes
- P[(RV-LE)<0]=Pf
- RV=yielding stress
- LE=calculated stress
Nevertheless, anyone would encounter the main drawback in the need for iterating 10 million times the whole structure, specially when it comes to real-time Lagrangian dynamics, as we are aimed to.
The steps for modelling the forces and displacements remain the same, it is, the traditional stiffness matrix.
Further research shows that the main time-consuming step into the stiffness matrix procedure (also applicable to FEM) is that of the assembly of the stiffness matrix (60-80%).
This means that, once a configuration is achieved and assembled, solving the matrix with different load cases should be relatively quick. Which is a relief if we want to implement SBRA.
Nevertheless, I still feel like I should pay deeper attention to this speed subject, and obtain my own benchmarking.
Suscribirse a:
Entradas (Atom)