OpenSeesPyAssistant 1.1
OpenSeesPy for everyone
Skiadopoulos2021 Class Reference

Class that stores funcions and material properties of a steel double symmetric I-shape profile with Skiadopoulos 2021 as the material model for the panel zone and the OpenSeesPy command type used to model it is Hysteresis. More...

Inheritance diagram for Skiadopoulos2021:
MaterialModels Skiadopoulos2021RCS Skiadopoulos2021SteelIShape

Public Member Functions

def __init__ (self, int ID, d_c, bf_c, tf_c, I_c, d_b, tf_b, Fy, E, t_p, t_dp=0.0, a_s=0.03, pinchx=0.25, pinchy=0.75, dmg1=0.0, dmg2=0.0, beta=0.0, safety_factor=False, t_fbp=0)
 Constructor of the class. More...
 
def CheckApplicability (self)
 Implementation of the homonym abstract method. More...
 
def Hysteretic (self)
 Generate the material model Hysteretic (Skiadopoulos 2021) using the computed parameters. More...
 
def ReInit (self)
 Implementation of the homonym abstract method. More...
 
def ShowInfo (self, plot=False, block=False)
 Implementation of the homonym abstract method. More...
 
def UpdateStoredData (self)
 Implementation of the homonym abstract method. More...
 
def CheckApplicability (self)
 Abstract function used to check the applicability of the material model. More...
 

Public Attributes

 a_s
 
 beam_section_name_tag
 
 beta
 
 bf_c
 
 Cf1
 
 Cf4
 
 Cf6
 
 col_section_name_tag
 
 Cw1
 
 Cw4
 
 Cw6
 
 d_b
 
 d_c
 
 data
 
 dmg1
 
 dmg2
 
 E
 
 Fy
 
 G
 
 Gamma_1
 
 Gamma_4
 
 Gamma_6
 
 I_c
 
 ID
 
 Initialized
 
 Kb
 
 Kbf
 
 Ke
 
 Kf
 
 Kf_Ke
 
 Ks
 
 Ksf
 
 M1
 
 M4
 
 M6
 
 pinchx
 
 pinchy
 
 Ry
 
 t_dp
 
 t_fbp
 
 t_p
 
 t_pz
 
 tf_b
 
 tf_c
 
 V1
 
 V4
 
 V6
 

Static Public Attributes

list Cf1_tests = [0.035, 0.035, 0.033, 0.031, 0.018, 0.015, 0.013, 0.009, 0.009, 0.010, 0.010]
 
list Cf4_tests = [0.145, 0.145, 0.123, 0.111, 0.069, 0.040, 0.040, 0.018, 0.010, 0.012, 0.012]
 
list Cf6_tests = [0.165, 0.1650, 0.1400, 0.1275, 0.0800, 0.0500, 0.0500, 0.0180, 0.0140, 0.0120, 0.0120]
 
list Cw1_tests = [0.96, 0.96, 0.955, 0.94, 0.93, 0.90, 0.89, 0.89, 0.88, 0.88, 0.88]
 
list Cw4_tests = [1.145, 1.145, 1.140, 1.133, 1.120, 1.115, 1.115, 1.11, 1.10, 1.10, 1.10]
 
list Cw6_tests = [1.205, 1.2050, 1.2000, 1.1925, 1.1740, 1.1730, 1.1720, 1.1690, 1.1670, 1.1650, 1.1650]
 
list Kf_Ke_tests = [1.000, 0.153, 0.120, 0.090, 0.059, 0.031, 0.019, 0.009, 0.005, 0.004, 0.000]
 

Detailed Description

Class that stores funcions and material properties of a steel double symmetric I-shape profile with Skiadopoulos 2021 as the material model for the panel zone and the OpenSeesPy command type used to model it is Hysteresis.

The material model is valid only if the column is continuous. For more information about the empirical model for the computation of the parameters, see Skiadopoulos et Al. 2021. The vectors that forms the matrix used to compute the material model parameters (Kf_Ke_tests, Cw1_tests, Cf1_tests, Cw4_tests, Cf4_tests, Cw6_tests, Cf6_tests) are used as global throughout the class to optimise the program (given the fact that is constant everytime).

Parameters
MaterialModelsParent abstract class.

Definition at line 780 of file MaterialModels.py.

Constructor & Destructor Documentation

◆ __init__()

def __init__ (   self,
int  ID,
  d_c,
  bf_c,
  tf_c,
  I_c,
  d_b,
  tf_b,
  Fy,
  E,
  t_p,
  t_dp = 0.0,
  a_s = 0.03,
  pinchx = 0.25,
  pinchy = 0.75,
  dmg1 = 0.0,
  dmg2 = 0.0,
  beta = 0.0,
  safety_factor = False,
  t_fbp = 0 
)

Constructor of the class.

Parameters
ID(int): Unique material model ID.
d_c(float): Column depth.
bf_c(float): Column flange width.
tf_c(float): Column flange thickness.
I_c(float): Column moment of inertia (strong axis).
d_b(float): Beam depth.
tf_b(float): Beam flange thickness.
Fy(float): Yield strength (if assume continous column, Fy of the web).
E(float): Young modulus.
t_p(float): Panel zone thickness.
t_dp(float, optional): Doubler plate thickness. Defaults to 0.0.
a_s(float, optional): Strain hardening. Defaults to 0.03.
pinchx(float, optional): Pinching factor for strain (or deformation) during reloading. Defaults to 0.25
pinchy(float, optional): Pinching factor for stress (or force) during reloading. Defaults to 0.75
dmg1(float, optional): Damage due to ductility: D1(mu-1). Defaults to 0.0.
dmg2(float, optional): Damage due to energy: D2(Eii/Eult). Defaults to 0.0.
beta(float, optional): Power used to determine the degraded unloading stiffness based on ductility, mu-beta. Defaults to 0.0.
safety_factor(bool, optional): Safety factor used if standard mechanical parameters are used (not test results). Defaults to False.
t_fbp(float, optional): Thickness of the face bearing plate (if present). Defaults to 0.
Exceptions
NegativeValueID needs to be a positive integer.
NegativeValued_c needs to be positive.
NegativeValuebf_c needs to be positive.
NegativeValuetf_c needs to be positive.
NegativeValued_b needs to be positive.
NegativeValuetf_b needs to be positive.
NegativeValueFy needs to be positive.
NegativeValueE needs to be positive.
NegativeValuet_p needs to be positive.
NegativeValuea_s needs to be positive.

Reimplemented in Skiadopoulos2021RCS, and Skiadopoulos2021SteelIShape.

Definition at line 808 of file MaterialModels.py.

809 t_dp = 0.0, a_s = 0.03, pinchx = 0.25, pinchy = 0.75, dmg1 = 0.0, dmg2 = 0.0, beta = 0.0, safety_factor = False, t_fbp = 0):
810 """
811 Constructor of the class.
812
813 @param ID (int): Unique material model ID.
814 @param d_c (float): Column depth.
815 @param bf_c (float): Column flange width.
816 @param tf_c (float): Column flange thickness.
817 @param I_c (float): Column moment of inertia (strong axis).
818 @param d_b (float): Beam depth.
819 @param tf_b (float): Beam flange thickness.
820 @param Fy (float): Yield strength (if assume continous column, Fy of the web).
821 @param E (float): Young modulus.
822 @param t_p (float): Panel zone thickness.
823 @param t_dp (float, optional): Doubler plate thickness. Defaults to 0.0.
824 @param a_s (float, optional): Strain hardening. Defaults to 0.03.
825 @param pinchx (float, optional): Pinching factor for strain (or deformation) during reloading. Defaults to 0.25
826 @param pinchy (float, optional): Pinching factor for stress (or force) during reloading. Defaults to 0.75
827 @param dmg1 (float, optional): Damage due to ductility: D1(mu-1). Defaults to 0.0.
828 @param dmg2 (float, optional): Damage due to energy: D2(Eii/Eult). Defaults to 0.0.
829 @param beta (float, optional): Power used to determine the degraded unloading stiffness based on ductility, mu-beta. Defaults to 0.0.
830 @param safety_factor (bool, optional): Safety factor used if standard mechanical parameters are used (not test results). Defaults to False.
831 @param t_fbp (float, optional): Thickness of the face bearing plate (if present). Defaults to 0.
832
833 @exception NegativeValue: ID needs to be a positive integer.
834 @exception NegativeValue: d_c needs to be positive.
835 @exception NegativeValue: bf_c needs to be positive.
836 @exception NegativeValue: tf_c needs to be positive.
837 @exception NegativeValue: d_b needs to be positive.
838 @exception NegativeValue: tf_b needs to be positive.
839 @exception NegativeValue: Fy needs to be positive.
840 @exception NegativeValue: E needs to be positive.
841 @exception NegativeValue: t_p needs to be positive.
842 @exception NegativeValue: a_s needs to be positive.
843 """
844 # Check
845 if ID < 1: raise NegativeValue()
846 if d_c < 0: raise NegativeValue()
847 if bf_c < 0: raise NegativeValue()
848 if tf_c < 0: raise NegativeValue()
849 if d_b < 0: raise NegativeValue()
850 if tf_b < 0: raise NegativeValue()
851 if Fy < 0: raise NegativeValue()
852 if E < 0: raise NegativeValue()
853 if t_p < 0: raise NegativeValue()
854 if a_s < 0: raise NegativeValue()
855 if t_fbp < 0: raise NegativeValue()
856
857 # Arguments
858 self.ID = ID
859 self.d_c = d_c
860 self.bf_c = bf_c
861 self.tf_c = tf_c
862 self.I_c = I_c
863 self.d_b = d_b
864 self.tf_b = tf_b
865 self.Fy = Fy
866 self.E = E
867 self.t_p = t_p
868 self.t_dp = t_dp
869 self.a_s = a_s
870 self.pinchx = pinchx
871 self.pinchy = pinchy
872 self.dmg1 = dmg1
873 self.dmg2 = dmg2
874 self.beta = beta
875 if safety_factor:
876 self.Ry = 1.2
877 else:
878 self.Ry = 1.0
879 self.t_fbp = t_fbp
880
881 # Initialized the parameters that are dependent from others
882 self.beam_section_name_tag = "None"
883 self.col_section_name_tag = "None"
884 self.Initialized = False
885 self.ReInit()
886
887

Member Function Documentation

◆ CheckApplicability()

def CheckApplicability (   self)

Implementation of the homonym abstract method.

See parent class DataManagement for detailed information.

Reimplemented from MaterialModels.

Definition at line 1025 of file MaterialModels.py.

1025 def CheckApplicability(self):
1026 """
1027 Implementation of the homonym abstract method.
1028 See parent class DataManagement for detailed information.
1029 """
1030 Check = True
1031 # No checks
1032 if not Check:
1033 print("The validity of the equations is not fullfilled.")
1034 print("!!!!!!! WARNING !!!!!!! Check material model of Skiadopoulos 2021, ID=", self.ID)
1035 print("")
1036
1037
Module with the parent abstract class DataManagement.

◆ Hysteretic()

def Hysteretic (   self)

Generate the material model Hysteretic (Skiadopoulos 2021) using the computed parameters.

See _Hysteretic function for more information.

Definition at line 1038 of file MaterialModels.py.

1038 def Hysteretic(self):
1039 """
1040 Generate the material model Hysteretic (Skiadopoulos 2021) using the computed parameters.
1041 See _Hysteretic function for more information.
1042 """
1043 _Hysteretic(self.ID, self.M1, self.Gamma_1, self.M4, self.Gamma_4, self.M6, self.Gamma_6,
1044 self.pinchx, self.pinchy, self.dmg1, self.dmg2, self.beta)
1045 self.Initialized = True
1046 self.UpdateStoredData()
1047
1048

◆ ReInit()

def ReInit (   self)

Implementation of the homonym abstract method.

See parent class DataManagement for detailed information.

Definition at line 889 of file MaterialModels.py.

889 def ReInit(self):
890 """
891 Implementation of the homonym abstract method.
892 See parent class DataManagement for detailed information.
893 """
894 # Check applicability
895 self.CheckApplicability()
896
897 # Memebers
898 if self.beam_section_name_tag != "None": self.beam_section_name_tag = self.beam_section_name_tag + " (modified)"
899 if self.col_section_name_tag != "None": self.col_section_name_tag = self.col_section_name_tag + " (modified)"
900 self.t_pz = self.t_p + self.t_dp
901 self.G = self.E/(2.0 * (1.0 + 0.30)) # Shear Modulus
902
903 # Refined computation of the parameters for the backbone curve for the panel zone spring (Skiadopoulos et al. (2021))
904 # Panel Zone Elastic Stiffness
905 self.Ks = self.t_pz*(self.d_c-self.tf_c)*self.G
906 self.Kb = 12.0*self.E*(self.I_c+self.t_dp*(self.d_c-2.0*self.tf_c)**3/12.0)/(self.d_b-0)**2
907 self.Ke = self.Ks*self.Kb/(self.Ks+self.Kb)
908
909 # Column Flange Stiffness
910 self.Ksf = 2.0*((self.tf_c+self.t_fbp)*self.bf_c*self.G)
911 self.Kbf = 2.0*(12.0*self.E*self.bf_c*(self.tf_c**3+self.t_fbp**3)/12.0/(self.d_b-0)**2)
912 self.Kf = self.Ksf*self.Kbf/(self.Ksf+self.Kbf)
913
914 # Kf/Ke Calculation for Panel Zone Categorization
915 self.Kf_Ke = self.Kf/self.Ke
916
917 # Panel Zone Strength Coefficients (results from tests for a_w_eff and a_f_eff)
918 self.Cw1 = np.interp(self.Kf_Ke, Kf_Ke_tests, Cw1_tests)
919 self.Cf1 = np.interp(self.Kf_Ke, Kf_Ke_tests, Cf1_tests)
920 self.Cw4 = np.interp(self.Kf_Ke, Kf_Ke_tests, Cw4_tests)
921 self.Cf4 = np.interp(self.Kf_Ke, Kf_Ke_tests, Cf4_tests)
922 self.Cw6 = np.interp(self.Kf_Ke, Kf_Ke_tests, Cw6_tests)
923 self.Cf6 = np.interp(self.Kf_Ke, Kf_Ke_tests, Cf6_tests)
924
925 # Panel Zone Model
926 self.V1 = self.Fy*self.Ry/math.sqrt(3)*(self.Cw1*(self.d_c-self.tf_c)*self.t_pz + self.Cf1*2*(self.bf_c-self.t_p)*self.tf_c)
927 self.V4 = self.Fy*self.Ry/math.sqrt(3)*(self.Cw4*(self.d_c-self.tf_c)*self.t_pz + self.Cf4*2*(self.bf_c-self.t_p)*self.tf_c)
928 self.V6 = self.Fy*self.Ry/math.sqrt(3)*(self.Cw6*(self.d_c-self.tf_c)*self.t_pz + self.Cf6*2*(self.bf_c-self.t_p)*self.tf_c)
929
930 self.M1 = self.V1*(self.d_b-self.tf_b)
931 self.M4 = self.V4*(self.d_b-self.tf_b)
932 self.M6 = self.V6*(self.d_b-self.tf_b)
933
934 self.Gamma_1 = self.V1/self.Ke
935 self.Gamma_4 = 4*self.Gamma_1
936 self.Gamma_6 = 6*self.Gamma_1
937
938 # Data storage for loading/saving
939 self.UpdateStoredData()
940
941

◆ ShowInfo()

def ShowInfo (   self,
  plot = False,
  block = False 
)

Implementation of the homonym abstract method.

See parent class DataManagement for detailed information.

Parameters
plot(bool, optional): Option to show the plot of the material model. Defaults to False.
block(bool, optional): Option to wait the user command 'plt.show()' (avoiding the stop of the program everytime that a plot should pop up). Defaults to False.

Definition at line 989 of file MaterialModels.py.

989 def ShowInfo(self, plot = False, block = False):
990 """
991 Implementation of the homonym abstract method.
992 See parent class DataManagement for detailed information.
993
994 @param plot (bool, optional): Option to show the plot of the material model. Defaults to False.
995 @param block (bool, optional): Option to wait the user command 'plt.show()' (avoiding the stop of the program everytime that a plot should pop up). Defaults to False.
996 """
997 print("")
998 print("Requested info for Skiadopoulos 2021 material model Parameters, ID = {}".format(self.ID))
999 print("Sections associated, column: {} ".format(self.col_section_name_tag))
1000 print("Sections associated, beam: {} ".format(self.beam_section_name_tag))
1001 print("Gamma_1 = {} rad".format(self.Gamma_1))
1002 print("Gamma_4 = {} rad".format(self.Gamma_4))
1003 print("Gamma_6 = {} rad".format(self.Gamma_6))
1004 print("M1 = {} kNm".format(self.M1/kNm_unit))
1005 print("M4 = {} kNm".format(self.M4/kNm_unit))
1006 print("M6 = {} kNm".format(self.M6/kNm_unit))
1007 print("")
1008
1009 if plot:
1010 # Data for plotting
1011 x_axis = np.array([0.0, self.Gamma_1, self.Gamma_4, self.Gamma_6])
1012 y_axis = np.array([0.0, self.M1, self.M4, self.M6])/kNm_unit
1013
1014 fig, ax = plt.subplots()
1015 ax.plot(x_axis, y_axis, 'k-')
1016
1017 ax.set(xlabel='Rotation [rad]', ylabel='Moment [kNm]',
1018 title='Skiadopoulos 2021 material model (ID={})'.format(self.ID))
1019 ax.grid()
1020
1021 if block:
1022 plt.show()
1023
1024

◆ UpdateStoredData()

def UpdateStoredData (   self)

Implementation of the homonym abstract method.

See parent class DataManagement for detailed information.

Definition at line 942 of file MaterialModels.py.

942 def UpdateStoredData(self):
943 """
944 Implementation of the homonym abstract method.
945 See parent class DataManagement for detailed information.
946 """
947 self.data = [["INFO_TYPE", "Skiadopoulos2021"], # Tag for differentiating different data
948 ["ID", self.ID],
949 ["beam_section_name_tag", self.beam_section_name_tag],
950 ["col_section_name_tag", self.col_section_name_tag],
951 ["d_c", self.d_c],
952 ["bf_c", self.bf_c],
953 ["tf_c", self.tf_c],
954 ["I_c", self.I_c],
955 ["d_b", self.d_b],
956 ["tf_b", self.tf_b],
957 ["Fy", self.Fy],
958 ["E", self.E],
959 ["G", self.G],
960 ["t_p", self.t_p],
961 ["t_dp", self.t_dp],
962 ["t_pz", self.t_pz],
963 ["a_s", self.a_s],
964 ["pinchx", self.pinchx],
965 ["pinchy", self.pinchy],
966 ["dmg1", self.dmg1],
967 ["dmg2", self.dmg2],
968 ["beta", self.beta],
969 ["Ry", self.Ry],
970 ["Ks", self.Ks],
971 ["Kb", self.Kb],
972 ["Ke", self.Ke],
973 ["Ksf", self.Ksf],
974 ["Kbf", self.Kbf],
975 ["Kf", self.Kf],
976 ["Kf_Ke", self.Kf_Ke],
977 ["V1", self.V1],
978 ["V4", self.V4],
979 ["V6", self.V6],
980 ["M1", self.M1],
981 ["M4", self.M4],
982 ["M6", self.M6],
983 ["Gamma_1", self.Gamma_1],
984 ["Gamma_4", self.Gamma_4],
985 ["Gamma_6", self.Gamma_6],
986 ["Initialized", self.Initialized]]
987
988

Member Data Documentation

◆ a_s

a_s

Definition at line 869 of file MaterialModels.py.

◆ beam_section_name_tag

beam_section_name_tag

Definition at line 882 of file MaterialModels.py.

◆ beta

beta

Definition at line 874 of file MaterialModels.py.

◆ bf_c

bf_c

Definition at line 860 of file MaterialModels.py.

◆ Cf1

Cf1

Definition at line 919 of file MaterialModels.py.

◆ Cf1_tests

list Cf1_tests = [0.035, 0.035, 0.033, 0.031, 0.018, 0.015, 0.013, 0.009, 0.009, 0.010, 0.010]
static

Definition at line 797 of file MaterialModels.py.

◆ Cf4

Cf4

Definition at line 921 of file MaterialModels.py.

◆ Cf4_tests

list Cf4_tests = [0.145, 0.145, 0.123, 0.111, 0.069, 0.040, 0.040, 0.018, 0.010, 0.012, 0.012]
static

Definition at line 801 of file MaterialModels.py.

◆ Cf6

Cf6

Definition at line 923 of file MaterialModels.py.

◆ Cf6_tests

list Cf6_tests = [0.165, 0.1650, 0.1400, 0.1275, 0.0800, 0.0500, 0.0500, 0.0180, 0.0140, 0.0120, 0.0120]
static

Definition at line 805 of file MaterialModels.py.

◆ col_section_name_tag

col_section_name_tag

Definition at line 883 of file MaterialModels.py.

◆ Cw1

Cw1

Definition at line 918 of file MaterialModels.py.

◆ Cw1_tests

list Cw1_tests = [0.96, 0.96, 0.955, 0.94, 0.93, 0.90, 0.89, 0.89, 0.88, 0.88, 0.88]
static

Definition at line 795 of file MaterialModels.py.

◆ Cw4

Cw4

Definition at line 920 of file MaterialModels.py.

◆ Cw4_tests

list Cw4_tests = [1.145, 1.145, 1.140, 1.133, 1.120, 1.115, 1.115, 1.11, 1.10, 1.10, 1.10]
static

Definition at line 799 of file MaterialModels.py.

◆ Cw6

Cw6

Definition at line 922 of file MaterialModels.py.

◆ Cw6_tests

list Cw6_tests = [1.205, 1.2050, 1.2000, 1.1925, 1.1740, 1.1730, 1.1720, 1.1690, 1.1670, 1.1650, 1.1650]
static

Definition at line 803 of file MaterialModels.py.

◆ d_b

d_b

Definition at line 863 of file MaterialModels.py.

◆ d_c

d_c

Definition at line 859 of file MaterialModels.py.

◆ data

data

Definition at line 947 of file MaterialModels.py.

◆ dmg1

dmg1

Definition at line 872 of file MaterialModels.py.

◆ dmg2

dmg2

Definition at line 873 of file MaterialModels.py.

◆ E

E

Definition at line 866 of file MaterialModels.py.

◆ Fy

Fy

Definition at line 865 of file MaterialModels.py.

◆ G

G

Definition at line 901 of file MaterialModels.py.

◆ Gamma_1

Gamma_1

Definition at line 934 of file MaterialModels.py.

◆ Gamma_4

Gamma_4

Definition at line 935 of file MaterialModels.py.

◆ Gamma_6

Gamma_6

Definition at line 936 of file MaterialModels.py.

◆ I_c

I_c

Definition at line 862 of file MaterialModels.py.

◆ ID

ID

Definition at line 858 of file MaterialModels.py.

◆ Initialized

Initialized

Definition at line 884 of file MaterialModels.py.

◆ Kb

Kb

Definition at line 906 of file MaterialModels.py.

◆ Kbf

Kbf

Definition at line 911 of file MaterialModels.py.

◆ Ke

Ke

Definition at line 907 of file MaterialModels.py.

◆ Kf

Kf

Definition at line 912 of file MaterialModels.py.

◆ Kf_Ke

Kf_Ke

Definition at line 915 of file MaterialModels.py.

◆ Kf_Ke_tests

list Kf_Ke_tests = [1.000, 0.153, 0.120, 0.090, 0.059, 0.031, 0.019, 0.009, 0.005, 0.004, 0.000]
static

Definition at line 793 of file MaterialModels.py.

◆ Ks

Ks

Definition at line 905 of file MaterialModels.py.

◆ Ksf

Ksf

Definition at line 910 of file MaterialModels.py.

◆ M1

M1

Definition at line 930 of file MaterialModels.py.

◆ M4

M4

Definition at line 931 of file MaterialModels.py.

◆ M6

M6

Definition at line 932 of file MaterialModels.py.

◆ pinchx

pinchx

Definition at line 870 of file MaterialModels.py.

◆ pinchy

pinchy

Definition at line 871 of file MaterialModels.py.

◆ Ry

Ry

Definition at line 876 of file MaterialModels.py.

◆ t_dp

t_dp

Definition at line 868 of file MaterialModels.py.

◆ t_fbp

t_fbp

Definition at line 879 of file MaterialModels.py.

◆ t_p

t_p

Definition at line 867 of file MaterialModels.py.

◆ t_pz

t_pz

Definition at line 900 of file MaterialModels.py.

◆ tf_b

tf_b

Definition at line 864 of file MaterialModels.py.

◆ tf_c

tf_c

Definition at line 861 of file MaterialModels.py.

◆ V1

V1

Definition at line 926 of file MaterialModels.py.

◆ V4

V4

Definition at line 927 of file MaterialModels.py.

◆ V6

V6

Definition at line 928 of file MaterialModels.py.


The documentation for this class was generated from the following file: