Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - rezvan

Pages: [1]
1
Hello,

I just wanted to share this post to show the comparison between the damage and loss assessment results, which were performed with Pelicun and PACT software for a 6-story building.
The results seem to be close; however, the uncertainty in the results based on PACT analysis is more considerable than Pelicun.

Thank you,
Pooya

2
Damage & Loss (PELICUN) / Perlicun Ver3- Location of the Components
« on: May 03, 2022, 10:32:35 PM »
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.
As another example, in the Jupyter notebook example file, if you change the location of the Traction Elevator to "0" (According to FEMA documentation, for traction elevator the acceleration of the first floor which is "0" floor in PELICUN should be used), you will see the same error.

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

    PAL.damage.calculate(sample_size, dmg_process=dmg_process)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pelicun\model.py", line 1991, in calculate
    demand = self._assemble_required_demand_data(EDP_req)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pelicun\model.py", line 1591, in _assemble_required_demand_data
    demand = demand_source[(EDP_req[0], EDP_req[1], EDP_req[2])].values

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\frame.py", line 3504, in __getitem__
    return self._getitem_multilevel(key)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\frame.py", line 3555, in _getitem_multilevel
    loc = self.columns.get_loc(key)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\indexes\multi.py", line 2882, in get_loc
    return self._engine.get_loc(key)

  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:

    PAL.damage.calculate(sample_size, dmg_process=dmg_process)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pelicun\model.py", line 1994, in calculate
    ds_sample = self._evaluate_damage_state(demand, capacity_sample, lsds_sample)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pelicun\model.py", line 1625, in _evaluate_damage_state
    dmg_eval = (capacity_sample.sub(demand, axis=0) < 0)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\ops\__init__.py", line 447, in f
    new_data = self._dispatch_frame_op(other, op)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\frame.py", line 6967, in _dispatch_frame_op
    bm = self._mgr.apply(array_op, right=right)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\internals\managers.py", line 302, in apply
    applied = b.apply(f, **kwargs)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\internals\blocks.py", line 402, in apply
    result = func(self.values, **kwargs)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\ops\array_ops.py", line 222, in arithmetic_op
    res_values = _na_arithmetic_op(left, right, op)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\ops\array_ops.py", line 163, in _na_arithmetic_op
    result = func(left, right)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\computation\expressions.py", line 239, in evaluate
    return _evaluate(op, op_str, a, b)  # type: ignore[misc]

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\computation\expressions.py", line 128, in _evaluate_numexpr
    result = _evaluate_standard(op, op_str, a, b)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\computation\expressions.py", line 69, in _evaluate_standard
    return op(a, b)

TypeError: unsupported operand type(s) for -: 'float' and 'NoneType'





KeyError: 101

3
Damage & Loss (PELICUN) / Component Quantity and Units
« on: May 02, 2022, 04:58:49 PM »
Dear Adam,

I hope my so many questions do not bother you.

Regarding the quantity and unit of the components, for one like "C10.11.001a" which is the wall partition, in the CMP_marignals_LET file, you defined ft2 (square feet) as the unit; however, in the bldg_repair_DB_FEMA_P58_2nd.csv file the repair cost is based on 100 LF which is similar to "Normative Quantity Estimation Tool".

I just wanted to make sure whether the users should follow the units provided in the bldg_repair_DB_FEMA_P58_2nd.csv file or any related unit is acceptable.

Another example is "D5012.021a" which is low-voltage switchgear. Based on the FEMA documentation the quantity should be based on 250 AMP, but you defined "EACH" in the bldg_repair_DB_FEMA_P58_2nd.csv file. Does "EACH" mean each of 250 AMP? since the same repair cost is defined for 250 AMP in FEMA documentation.


Thank you so much,
 Pooya

4
Damage & Loss (PELICUN) / Probability of repairable damage
« on: May 02, 2022, 01:16:20 PM »
Hi Adam,

I have another question regarding the probability of repairable damage.
I was wondering whether the collapsed cases are also considered to get this probability or only the excessive RID damage state is considered to calculate it.

Thank you so much,

5
Hello Adam,

Thank you for the updated Version 3.b4 of Pelicun.

I have a question and I will be so grateful if you could help me.

Is it possible to get a more deterministic damage and loss assessment of a building when is subjected to a specific ground motion by setting the "log_std" of the demands equal to zero?

(I know the repair time and costs are also accompanied by uncertainty as well, so the final results will not be purely deterministic).

In the example you provided in the Jupiter notebook, I set the "log_std" of the demands equal to zero, but I observed meaningful differences in the results (compared to the non-zero "log_std" case).

I attached the summary tables of the consequences here and as you can see, the standard deviation of the consequences is even larger when the "log_std" is set to zero.

Thank you so much,

Pooya


6
Damage & Loss (PELICUN) / Pelicun 3.1.b2 - Residual inter-story drift
« on: March 24, 2022, 02:18:06 AM »
Hi Adam,

I faced a problem regarding the residual inter-story drifts and I was wondering if you could help me with.
I am using the Pelicun module for damage and loss assessment of a special self-centering system, with almost near zero residual drift at design basis earthquake (1/475 years).
Therefore, I modified the part of the code for estimation of the residual drift, and instead, I used the results from numerical simulation.
In some cases when the residual drifts (in the demand_data.csv) are very small value (in the order of 10^-5) the following error appears, but if I increase them manually (e.g 10^-4)  the error disappears. I guess it should be due to a mathematical issue when trying to fit a distribution over a median value that is almost zero. Do you think there is any way to overcome this error?

So many thanks,
Pooya

22:13:14 Calculating damages...
         Applying task from prescribed damage process...
         Damage process task successfully applied.
         Applying task from prescribed damage process...
Traceback (most recent call last):

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 3621, in get_loc
    return self._engine.get_loc(casted_key)

  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 5198, in pandas._libs.hashtable.PyObjectHashTable.get_item

  File "pandas\_libs\hashtable_class_helper.pxi", line 5206, in pandas._libs.hashtable.PyObjectHashTable.get_item

KeyError: '1'


The above exception was the direct cause of the following exception:

Traceback (most recent call last):

  File "C:\Users\pooya\Desktop\Temp\b\MainAnalysis.py", line 288, in <module>
    Analysis(buildingIndex)

  File "C:\Users\pooya\Desktop\Temp\b\MainAnalysis.py", line 283, in Analysis
    dl.getDLAssessment(buildingID, N_story, Tn, SaD, sample_size, delta_y, stripe, DL_DataDir, buildingInfoDir, replacementCost, replacementTime)

  File "C:\Users\pooya\Desktop\Temp\b\DL_AssessmentFunctions.py", line 217, in getDLAssessment
    PAL.damage.calculate(sample_size, dmg_process=dmg_process)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pelicun\model.py", line 1991, in calculate
    qnt_sample = self._perform_dmg_task(task, qnt_sample)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pelicun\model.py", line 1775, in _perform_dmg_task
    source_ds_vals = source_cmp_df.groupby(

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\frame.py", line 3505, in __getitem__
    indexer = self.columns.get_loc(key)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 3623, in get_loc
    raise KeyError(key) from err

KeyError: '1'



7
Damage & Loss (PELICUN) / bldg_repair_DB_FEMA_P58_2nd: DS-LongLeadTime
« on: March 18, 2022, 01:36:50 AM »
Dear Adam,

I was wondering if you could clarify the usage of "DS-LongLeadTime" in the csv file containing the component repair information.

Thank you so much,

Pooya Rezvan

8
Damage & Loss (PELICUN) / Pelicun 3.1.b2 - bug
« on: March 17, 2022, 10:40:34 PM »
Hello Adam,
Thank you so much for the very helpful version of Pelicun.
I just found a problem related to the stripe number.
In the example that you provided in the Jupiter notebook, I was able to run the analysis for all stipe numbers except '1'.
If you change the stripe number to '1' the following error appears while calculating the damage:

Thank you,
Pooya Rezvan

18:34:15 Calculating damages...
         Applying task from prescribed damage process...
Traceback (most recent call last):

  File "C:\...\anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 3621, in get_loc
    return self._engine.get_loc(casted_key)

  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 5198, in pandas._libs.hashtable.PyObjectHashTable.get_item

  File "pandas\_libs\hashtable_class_helper.pxi", line 5206, in pandas._libs.hashtable.PyObjectHashTable.get_item

KeyError: '1'


The above exception was the direct cause of the following exception:

Traceback (most recent call last):

  File "C:\Users\pooya\Desktop\Temp\Python Code\temp2\untitled45.py", line 451, in <module>
    PAL.damage.calculate(sample_size, dmg_process=dmg_process)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pelicun\model.py", line 1991, in calculate
    qnt_sample = self._perform_dmg_task(task, qnt_sample)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pelicun\model.py", line 1775, in _perform_dmg_task
    source_ds_vals = source_cmp_df.groupby(

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\frame.py", line 3505, in __getitem__
    indexer = self.columns.get_loc(key)

  File "C:\Users\pooya\anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 3623, in get_loc
    raise KeyError(key) from err

KeyError: '1'




9
Damage & Loss (PELICUN) / Dakota File - Direct Call
« on: February 09, 2022, 05:31:38 AM »
Hello,
First, Thank you so much for the extremely helpful Pelicun module.
I have a few questions and I will be so thankful if you could help with them.

1- As mentioned in workshop#3, in case the Pelicun module is being used directly, it is possible to delete unnecessary parts of the dakota.json file. The file 6_story_BRBF_pelicun.json file prepared for the workshop was an example of the shortened file. I tried to run Pelicun using this file and the response.csv file prepared for the workshop, but it seems there is some missing information in dakota file. I attached the log file and the message on the command prompt, I was wondering if you could share a shortened but correct json file.

2- For performing analysis on a large number of buildings, how is it possible to generate the dakota.json file automatically in python. For example, reading the required information from a csv file and generating the dakota file for each building automatically. As I understood, the information could be changed manually from the file or using PBE software and get dakota file which neither is practical for a large number of cases.

Thank you so much and again I appreciate your precious effort on this helpful and informative module.


P.S. Here is the message after running the DL_calculation.py in command prompt:


C:\Users\pooya\Desktop\Temp\pelicun>python C:\PBE\applications\performDL\pelicun\DL_calculation.py --filenameDL 6_story_BRBF_pelicun.json  --filenameEDP response.csv
2022-02-09T05:16:02Z First line of DL_calculation
2022-02-09T05:16:03Z Initializing pelicun calculation...
Traceback (most recent call last):
  File "C:\PBE\applications\performDL\pelicun\DL_calculation.py", line 316, in <module>
    main(sys.argv[1:])
  File "C:\PBE\applications\performDL\pelicun\DL_calculation.py", line 300, in main
    run_pelicun(
  File "C:\PBE\applications\performDL\pelicun\DL_calculation.py", line 257, in run_pelicun
    A.read_inputs(DL_input_path, EDP_files[s_i], verbose=False) # make DL inputs into array of all BIM files
  File "C:\PBE\applications\performDL\pelicun\pelicunPBE\control.py", line 767, in read_inputs
    super(FEMA_P58_Assessment, self).read_inputs(path_DL_input,
  File "C:\PBE\applications\performDL\pelicun\pelicunPBE\control.py", line 165, in read_inputs
    self._AIM_in = read_SimCenter_DL_input(
  File "C:\PBE\applications\performDL\pelicun\pelicunPBE\file_io.py", line 341, in read_SimCenter_DL_input
    raise ValueError(
ValueError: PlanArea has to be specified in the DL input file to estimate injuries decision variable(s).

Pages: [1]