Pelicun V3: Location of the Components - rezvan, May 03, 2022 #293
-
Hello Adam, I faced a problem related to the location of the components. I checked in different prototypes, when I define the location of the components in the CMP_marginals_LET file, I do not face any problem if I put "all" or any floor number (e.g. "1", "2",...) in the "Location" column except for the ground floor. If I assign any component to the ground level (e.g. "0" or "0--5") I face two different errors depending on whether the component is drift-sensitive or acceleration-sensitive. I copied the error messages at the end of this message. I personally think this is an important issue, because usually the components of the roof level are different, and using "all" is not possible for many components. I also have a few questions related to the location of the components, I will try to explain as clearly as I can, however, if it is not that clear please let me know. 1- According to the FEMA documentation, for some components like C30.32.001a (suspended ceiling), the EDP of the above floor should be considered for calculating the damage in the component; therefore, it is meaningless to assign such components to the roof level since there is no level above that. Does Pelicun follow the same rule? If it does, what would happen if such components are assigned to the roof level (e.g. using "all" in the "Location" column)? Will Pelicun ignore the roof level automatically? 2- The drift-sensitive components should be assigned to the "story" numbers while the acceleration-sensitive components should be assigned to the "floor" number (floor number = story number +1). What does it mean if you assign "0-6'' to a drift-sensitive component in a 6-story building. Will Pelicun ignore "0" or "6"? or for example, in the Jupyter notebook example, you assigned "all" to many drift-sensitive components like Wall partitions. Does Pelicun ignore the "roof" or "0" level in such cases? 3- In a four-story building (like Jupyter notebook example), if we put "2-4" in the "Location" column for a drift-sensitive component, does Pelicun consider the drifts of the 2nd, 3rd, and 4th stories? if yes, then what does "0--4" mean (the same question)? Again, thank you so much and I really appreciate your nice and quick support. Pooya, Drift-sensitive components
File "C:\Users\pooya\anaconda3\lib\site-packages\pelicun\model.py", line 1991, in calculate File "C:\Users\pooya\anaconda3\lib\site-packages\pelicun\model.py", line 1591, in _assemble_required_demand_data File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\frame.py", line 3504, in getitem File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\frame.py", line 3555, in _getitem_multilevel File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\indexes\multi.py", line 2882, in get_loc File "pandas_libs\index.pyx", line 779, in pandas._libs.index.BaseMultiIndexCodesEngine.get_loc File "pandas_libs\index.pyx", line 136, in pandas._libs.index.IndexEngine.get_loc File "pandas_libs\index.pyx", line 163, in pandas._libs.index.IndexEngine.get_loc File "pandas_libs\hashtable_class_helper.pxi", line 1832, in pandas._libs.hashtable.UInt64HashTable.get_item File "pandas_libs\hashtable_class_helper.pxi", line 1841, in pandas._libs.hashtable.UInt64HashTable.get_item acceleration-sensitive components:
File "C:\Users\pooya\anaconda3\lib\site-packages\pelicun\model.py", line 1994, in calculate File "C:\Users\pooya\anaconda3\lib\site-packages\pelicun\model.py", line 1625, in _evaluate_damage_state File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\ops_init_.py", line 447, in f File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\frame.py", line 6967, in _dispatch_frame_op File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\internals\managers.py", line 302, in apply File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\internals\blocks.py", line 402, in apply File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\ops\array_ops.py", line 222, in arithmetic_op File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\ops\array_ops.py", line 163, in _na_arithmetic_op File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\computation\expressions.py", line 239, in evaluate File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\computation\expressions.py", line 128, in _evaluate_numexpr File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\computation\expressions.py", line 69, in _evaluate_standard TypeError: unsupported operand type(s) for -: 'float' and 'NoneType' KeyError: 101
|
Beta Was this translation helpful? Give feedback.
Replies: 5 comments
-
Hi Pooya, Thanks for the extensive testing and great questions! The location parameter in pelicun3 works slightly differently from pelicun 2. I'll explain below and that will hopefully answer all your questions. First of all, the "0" location is considered special and reserved for components where the location is not applicable. Think about 'collapse', for example. Pelicun treats those locations and components assigned to those locations differently. When it comes to components in FEMA P58, you do not need to assign anything to "0". If the component is on the ground floor, you would assign it to "1". You correctly mention that the traction elevator, for example, shall be assigned to the ground floor to be able to use the PGA as a demand. But that mapping of component location to demand location happens automatically inside pelicun. When a component uses floor acceleration, the demands automatically come from the bottom of the floor, that is, from PFA-0. For components that are on the roof, there is an offset variable in the metadata that tell pelicun to get the acceleration from the top slab - so it is okay to assign roof components to the top floor because the offset will make sure you get the right acceleration value for them. When you use "all" in the location column, it is replaced internally with "1-#stories". Hence, pelicun never assigns anything to the roof. When you use "roof", it is replaced with the top story, not the top story + 1. As I mentioned earlier, some components, such as the suspended ceiling, have an offset of 1 prescribed so that the PFA values from the top slab are used to assess their damage. I think the above information already answers your first question. As for your second question, I would like to emphasize that component assignment is not influenced by the type of demand the component uses. I intentionally decoupled these to make asset modeling more straightforward. All you need to consider when assigning components is which floor they are actually in. As for your third question, if you put 2-4 in the location column, pelicun would consider stories 2, 3, and 4. The 0-4 option is not recommended because floor 0 has a special meaning as I explained earlier. Let me know if any of the above is not clear. Adam
|
Beta Was this translation helpful? Give feedback.
-
Thank you so much, Adam. Now, I completely understand the definition of the location parameter. However, I still have a doubt about some acceleration-sensitive components that should be assigned to the floors and not the stories. How can we define the location in these two cases? Because here we have 5 floors and we want to use the EDP of the first and the last floor which are gound and roof levels. So many thanks, Pooya
|
Beta Was this translation helpful? Give feedback.
-
Hi Pooya, That's a great question. The offset defined in FEMA P58 for D.30.31.023 is 0. I think this suggests the developers of P58 intended to assign it to the floor of a story - rather than to the ceiling - which makes perfect sense. Let me walk you through two approaches to handle the ground floor and roof cases: 1, Expand the component library 2, Assign the component to a non-existing story Looking at the two options above, the second one seems more intuitive to me. I am inclined to revise the interpretation of the 'roof' keyword to be parsed as "number of stories + 1". That would make it easy for users to assign such components to the roof without having to worry about the above mechanism inside Pelicun. If you agree, I will get this implemented in the upcoming 3.1.b5 Let me know your thoughts. Adam
|
Beta Was this translation helpful? Give feedback.
-
Hi Adam, Both suggestions look so interesting and innovative to me. I just tried the second method and it worked perfectly! I appreciate your innovative solution. Pooya
|
Beta Was this translation helpful? Give feedback.
-
Hi Pooya, Thanks for the feedback. I'll make the update in the next release. Adam
|
Beta Was this translation helpful? Give feedback.
Hi Pooya,
Thanks for the feedback. I'll make the update in the next release.
Adam