def constructability_column(self):
     """
     This method is used to update the column member size by considering the constructability (ease of construction).
     :return: update the column sizes stored in self.member_size
     """
     # Make a copy of the member size
     temp_size = copy.deepcopy(self.member_size)
     # Update column sizes based on the sorted Ix
     member_list = ['interior column', 'exterior column']
     for mem in member_list:
         self.construction_size[mem] = constructability_helper(temp_size[mem], IDENTICAL_SIZE_PER_STORY,
                                                               self.geometry['number of story'], 'Ix')
 def constructability_beam(self):
     """
     This method is used to update the beam member size by considering the constructability (ease of construction).
     :return: update the beam sizes stored in self.member_size['beam']
     """
     # Make a deep copy of the member sizes and stored them in a new dictionary named construction_size
     # Use deep copy to avoid changing the variables stored in member size
     temp_size = copy.deepcopy(self.member_size)
     # Update beam size (beam size is updated based on descending order of Zx)
     self.construction_size['beam'] = constructability_helper(temp_size['beam'], IDENTICAL_SIZE_PER_STORY,
                                                              self.geometry['number of story'], 'Ix')
     # Column sizes here have not been updated (just directly copy)
     self.construction_size['interior column'] = temp_size['interior column']
     self.construction_size['exterior column'] = temp_size['exterior column']