OpenSeesPyAssistant 1.1
OpenSeesPy for everyone
ModifiedIMK Class Reference

Class that stores funcions and material properties of a steel double symmetric I-shape profile with modified Ibarra-Medina-Krawinkler as the material model for the nonlinear springs and the OpenSeesPy command type used to model it is Bilin. More...

Inheritance diagram for ModifiedIMK:
MaterialModels ModifiedIMKSteelIShape

Public Member Functions

def __init__ (self, int ID, str Type, d, bf, tf, tw, h_1, Iy_mod, iz, E, Fy, Npl, My, L, N_G=0, K_factor=3, L_0=-1, L_b=-1, Mc=-1, K=-1, theta_u=-1, safety_factors=False)
 Constructor of the class. More...
 
def Bilin (self)
 Generate the material model Bilin (Modified IMK) using the computed parameters. More...
 
def CheckApplicability (self)
 Implementation of the homonym abstract method. More...
 
def Computea (self)
 Method that computes the strain hardening ratio with the n modification. More...
 
def Computea_s (self)
 Method that computes the modified strain hardening ratio for the spring. More...
 
def ComputeK (self)
 Method that computes the residual strength ratio. More...
 
def ComputeKe (self)
 Method that computes the elastic stiffness. More...
 
def ComputeMc (self)
 Method that computes the capping moment. More...
 
def ComputeMyStar (self)
 Method that computes the effective yield moment. More...
 
def ComputeRefEnergyDissipationCap (self)
 Method that computes the reference energy dissipation capacity. More...
 
def ComputeTheta_p (self)
 Method that computes the plastic rotation. More...
 
def ComputeTheta_pc (self)
 Method that computes the post capping rotation. More...
 
def ComputeTheta_u (self)
 Method that computes the ultimate rotation. More...
 
def ComputeTheta_y (self)
 Method that computes the yield rotation. More...
 
def ReInit (self, Mc=-1, K=-1, theta_u=-1)
 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
 
 a_s
 
 bf
 
 d
 
 data
 
 E
 
 Fy
 
 gamma_rm
 
 h_1
 
 ID
 
 Initialized
 
 Iy_mod
 
 iz
 
 K
 
 K_factor
 
 Ke
 
 L
 
 L_0
 
 L_b
 
 Mc
 
 McMy
 
 My
 
 My_star
 
 N_G
 
 Npl
 
 prob_factor
 
 rate_det
 
 section_name_tag
 
 tf
 
 theta_p
 
 theta_pc
 
 theta_u
 
 theta_y
 
 tw
 
 Type
 

Static Public Attributes

float n = 10.0
 

Detailed Description

Class that stores funcions and material properties of a steel double symmetric I-shape profile with modified Ibarra-Medina-Krawinkler as the material model for the nonlinear springs and the OpenSeesPy command type used to model it is Bilin.

The default values are valid for a simple cantelever. For more information about the empirical model for the computation of the parameters, see Lignos Krawinkler 2011. The parameter 'n' is used as global throughout the SteelIShape sections to optimise the program (given the fact that is constant everytime).

Parameters
MaterialModelsParent abstract class.

Definition at line 34 of file MaterialModels.py.

Constructor & Destructor Documentation

◆ __init__()

def __init__ (   self,
int  ID,
str  Type,
  d,
  bf,
  tf,
  tw,
  h_1,
  Iy_mod,
  iz,
  E,
  Fy,
  Npl,
  My,
  L,
  N_G = 0,
  K_factor = 3,
  L_0 = -1,
  L_b = -1,
  Mc = -1,
  K = -1,
  theta_u = -1,
  safety_factors = False 
)

Constructor of the class.

Every argument that is optional and is initialised as -1, will be computed in this class.

Parameters
ID(int): ID of the material model.
Type(str): Type of the section. It can be 'Col' for column or 'Beam' for beams.
d(float): Depth of the section.
bf(float): Flange's width of the section
tf(float): Flange's thickness of the section
tw(float): Web's thickness of the section
h_1(float): Depth excluding the flange's thicknesses and the weld fillets.
Iy_mod(float): n modified moment of inertia (strong axis)
iz(float): Radius of gyration (weak axis).
E(float): Young modulus.
Fy(float): Yield strength.
Npl(float): Maximal vertical axial load.
My(float): Yielding moment.
L(float): Effective length of the element associated with this section. If the panel zone is present, exclude its dimension.
N_G(float, optional): Gravity axial load. Defaults to 0.
K_factor(float, optional): Rigidity factor. Defaults to 3 (assuming cantilever).
L_0(float, optional): Position of the inflection point. Defaults to -1, e.g. computed as the total length, assuming cantilever.
L_b(float, optional): Maximal unbraced lateral torsional buckling length. Defaults to -1, e.g. computed as the total length, assuming cantilever with no bracing support.
Mc(float, optional): Capping moment. Defaults to -1, e.g. computed in ComputeMc.
K(float, optional): Residual strength ratio. Defaults to -1, e.g. computed in ComputeK.
theta_u(float, optional): Ultimate rotation. Defaults to -1, e.g. computed in ComputeTheta_u.
safety_factors(bool, optional): Safety factors used if standard mechanical parameters are used (not test results). Defaults to False.
Exceptions
NegativeValueID needs to be a positive integer.
WrongArgumentType needs to be 'Col' or 'Beam'.
NegativeValued needs to be positive.
NegativeValuebf needs to be positive.
NegativeValuetf needs to be positive.
NegativeValuetw needs to be positive.
NegativeValueh_1 needs to be positive.
NegativeValueIy_mod needs to be positive.
NegativeValueiz needs to be positive.
NegativeValueE needs to be positive.
NegativeValueFy needs to be positive.
NegativeValueNpl needs to be positive.
NegativeValueMy needs to be positive.
NegativeValueL needs to be positive.
NegativeValueN_G needs to be positive.
NegativeValueL_0 needs to be positive if different from -1.
NegativeValueL_b needs to be positive if different from -1.
NegativeValueMc needs to be positive if different from -1.
NegativeValueK needs to be positive if different from -1.
NegativeValuetheta_u needs to be positive if different from -1.
InconsistentGeometryh_1 can't be bigger than d
MemberFailureN_G can't be bigger than Npl (section failure).
InconsistentGeometryL_0 can't be bigger than L

Reimplemented in ModifiedIMKSteelIShape.

Definition at line 47 of file MaterialModels.py.

48 N_G = 0, K_factor = 3, L_0 = -1, L_b = -1, Mc = -1, K = -1, theta_u = -1, safety_factors = False):
49 """
50 Constructor of the class. Every argument that is optional and is initialised as -1, will be computed in this class.
51
52 @param ID (int): ID of the material model.
53 @param Type (str): Type of the section. It can be 'Col' for column or 'Beam' for beams.
54 @param d (float): Depth of the section.
55 @param bf (float): Flange's width of the section
56 @param tf (float): Flange's thickness of the section
57 @param tw (float): Web's thickness of the section
58 @param h_1 (float): Depth excluding the flange's thicknesses and the weld fillets.
59 @param Iy_mod (float): n modified moment of inertia (strong axis)
60 @param iz (float): Radius of gyration (weak axis).
61 @param E (float): Young modulus.
62 @param Fy (float): Yield strength.
63 @param Npl (float): Maximal vertical axial load.
64 @param My (float): Yielding moment.
65 @param L (float): Effective length of the element associated with this section.
66 If the panel zone is present, exclude its dimension.
67 @param N_G (float, optional): Gravity axial load. Defaults to 0.
68 @param K_factor (float, optional): Rigidity factor. Defaults to 3 (assuming cantilever).
69 @param L_0 (float, optional): Position of the inflection point.
70 Defaults to -1, e.g. computed as the total length, assuming cantilever.
71 @param L_b (float, optional): Maximal unbraced lateral torsional buckling length.
72 Defaults to -1, e.g. computed as the total length, assuming cantilever with no bracing support.
73 @param Mc (float, optional): Capping moment. Defaults to -1, e.g. computed in ComputeMc.
74 @param K (float, optional): Residual strength ratio. Defaults to -1, e.g. computed in ComputeK.
75 @param theta_u (float, optional): Ultimate rotation. Defaults to -1, e.g. computed in ComputeTheta_u.
76 @param safety_factors (bool, optional): Safety factors used if standard mechanical parameters are used (not test results). Defaults to False.
77
78 @exception NegativeValue: ID needs to be a positive integer.
79 @exception WrongArgument: Type needs to be 'Col' or 'Beam'.
80 @exception NegativeValue: d needs to be positive.
81 @exception NegativeValue: bf needs to be positive.
82 @exception NegativeValue: tf needs to be positive.
83 @exception NegativeValue: tw needs to be positive.
84 @exception NegativeValue: h_1 needs to be positive.
85 @exception NegativeValue: Iy_mod needs to be positive.
86 @exception NegativeValue: iz needs to be positive.
87 @exception NegativeValue: E needs to be positive.
88 @exception NegativeValue: Fy needs to be positive.
89 @exception NegativeValue: Npl needs to be positive.
90 @exception NegativeValue: My needs to be positive.
91 @exception NegativeValue: L needs to be positive.
92 @exception NegativeValue: N_G needs to be positive.
93 @exception NegativeValue: L_0 needs to be positive if different from -1.
94 @exception NegativeValue: L_b needs to be positive if different from -1.
95 @exception NegativeValue: Mc needs to be positive if different from -1.
96 @exception NegativeValue: K needs to be positive if different from -1.
97 @exception NegativeValue: theta_u needs to be positive if different from -1.
98 @exception InconsistentGeometry: h_1 can't be bigger than d
99 @exception MemberFailure: N_G can't be bigger than Npl (section failure).
100 @exception InconsistentGeometry: L_0 can't be bigger than L
101 """
102 # Check
103 if ID < 0: raise NegativeValue()
104 if Type != "Beam" and Type != "Col": raise WrongArgument()
105 if d < 0: raise NegativeValue()
106 if bf < 0: raise NegativeValue()
107 if tf < 0: raise NegativeValue()
108 if tw < 0: raise NegativeValue()
109 if h_1 < 0: raise NegativeValue()
110 if Iy_mod < 0: raise NegativeValue()
111 if iz < 0: raise NegativeValue()
112 if E < 0: raise NegativeValue()
113 if Fy < 0: raise NegativeValue()
114 if Npl < 0: raise NegativeValue()
115 if My < 0: raise NegativeValue()
116 if L < 0: raise NegativeValue()
117 if N_G < 0: raise NegativeValue()
118 if L_0 != -1 and L_0 < 0: raise NegativeValue()
119 if L_b != -1 and L_b < 0: raise NegativeValue()
120 if Mc != -1 and Mc < 0: raise NegativeValue()
121 if K != -1 and K < 0: raise NegativeValue()
122 if theta_u != -1 and theta_u < 0: raise NegativeValue()
123 if h_1 > d: raise InconsistentGeometry()
124 if N_G > Npl: raise MemberFailure()
125 if L_0 > L: raise InconsistentGeometry()
126
127 # Arguments
128 self.Type = Type
129 self.ID = ID
130 self.d = d
131 self.bf = bf
132 self.tf = tf
133 self.tw = tw
134 self.h_1 = h_1
135 self.Iy_mod = Iy_mod
136 self.iz = iz
137 self.E = E
138 self.Fy = Fy
139 self.Npl = Npl
140 self.My = My
141 self.L = L
142 self.N_G = N_G
143 self.K_factor = K_factor
144 self.L_0 = L if L_0 == -1 else L_0
145 self.L_b = L if L_b == -1 else L_b
146
147 # Initialized the parameters that are dependent from others
148 self.section_name_tag = "None"
149 self.Initialized = False
150 if safety_factors:
151 self.gamma_rm = 1.25
152 self.prob_factor = 1.15
153 else:
154 self.gamma_rm = 1.0
155 self.prob_factor = 1.0
156 self.ReInit(Mc, K, theta_u)
157
158

Member Function Documentation

◆ Bilin()

def Bilin (   self)

Generate the material model Bilin (Modified IMK) using the computed parameters.

See _Bilin function for more information.

Definition at line 478 of file MaterialModels.py.

478 def Bilin(self):
479 """
480 Generate the material model Bilin (Modified IMK) using the computed parameters.
481 See _Bilin function for more information.
482 """
483 _Bilin(self.ID, self.Ke, self.a_s, self.My_star, self.theta_p, self.theta_pc, self.K, self.theta_u, self.rate_det)
484 self.Initialized = True
485 self.UpdateStoredData()
486
487

◆ CheckApplicability()

def CheckApplicability (   self)

Implementation of the homonym abstract method.

See parent class MaterialModels for detailed information.

Reimplemented from MaterialModels.

Definition at line 289 of file MaterialModels.py.

289 def CheckApplicability(self):
290 """
291 Implementation of the homonym abstract method.
292 See parent class MaterialModels for detailed information.
293 """
294 Check = True
295 if self.Type == "Beam":
296 if self.d/self.tw < 20 or self.d/self.tw > 55:
297 Check = False
298 print("The d/tw check was not fullfilled")
299 if self.L_b/self.iz < 20 or self.L_b/self.iz > 80:
300 Check = False
301 print("The Lb/iz check was not fullfilled")
302 if self.bf/2/self.tf < 4 or self.bf/2/self.tf > 8:
303 Check = False
304 print("The bf/2/tf check was not fullfilled")
305 if self.L/self.d < 2.5 or self.L/self.d > 7:
306 Check = False
307 print("The check L/d was not fullfilled")
308 if self.d < 102*mm_unit or self.d > 914*mm_unit:
309 Check = False
310 print("The d check was not fullfilled")
311 if self.Fy < 240*MPa_unit or self.Fy > 450*MPa_unit:
312 Check = False
313 print("The Fy check was not fullfilled")
314 else:
315 if self.h_1/self.tw < 3.71 or self.d/self.tw > 57.5:
316 Check = False
317 print("The h1/tw check was not fullfilled")
318 if self.L_b/self.iz < 38.4 or self.L_b/self.iz > 120:
319 Check = False
320 print("The Lb/iz check was not fullfilled")
321 if self.N_G/self.Npl < 0 or self.N_G/self.Npl > 0.75:
322 Check = False
323 print("The NG/Npl check was not fullfilled")
324 if not Check:
325 print("The validity of the equations is not fullfilled.")
326 print("!!!!!!! WARNING !!!!!!! Check material model of Modified IMK, ID=", self.ID)
327 print("")
328
Module for the material models.

◆ Computea()

def Computea (   self)

Method that computes the strain hardening ratio with the n modification.

Returns
float: Strain hardening ratio.

Definition at line 337 of file MaterialModels.py.

337 def Computea(self):
338 """
339 Method that computes the strain hardening ratio with the n modification.
340
341 @returns float: Strain hardening ratio.
342 """
343 # strain hardening ratio of spring
344 return (n+1.0)*self.My_star*(self.McMy-1.0)/(self.Ke*self.theta_p)
345

◆ Computea_s()

def Computea_s (   self)

Method that computes the modified strain hardening ratio for the spring.

For more info see Ibarra & Krawinkler 2005.

Returns
float: Strain hardening ratio.

Definition at line 346 of file MaterialModels.py.

346 def Computea_s(self):
347 """
348 Method that computes the modified strain hardening ratio for the spring.
349 For more info see Ibarra & Krawinkler 2005.
350
351 @returns float: Strain hardening ratio.
352 """
353 return self.a/(1.0+n*(1.0-self.a))
354

◆ ComputeK()

def ComputeK (   self)

Method that computes the residual strength ratio.

For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.

Returns
float: Residual strength ratio.

Definition at line 384 of file MaterialModels.py.

384 def ComputeK(self):
385 """
386 Method that computes the residual strength ratio.
387 For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.
388
389 @returns float: Residual strength ratio.
390 """
391 if self.Type == "Beam":
392 return 0.4
393 else:
394 tmp = 0.5-0.4*self.N_G/self.Npl
395 return max(tmp, 0)
396

◆ ComputeKe()

def ComputeKe (   self)

Method that computes the elastic stiffness.

Returns
float: The stiffness

Definition at line 329 of file MaterialModels.py.

329 def ComputeKe(self):
330 """
331 Method that computes the elastic stiffness.
332
333 @returns float: The stiffness
334 """
335 return self.K_factor*n*self.E*self.Iy_mod/self.L
336

◆ ComputeMc()

def ComputeMc (   self)

Method that computes the capping moment.

For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.

Returns
float: Capping moment.

Definition at line 370 of file MaterialModels.py.

370 def ComputeMc(self):
371 """
372 Method that computes the capping moment.
373 For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.
374
375 @returns float: Capping moment.
376 """
377 if self.Type == "Beam":
378 return self.My_star*1.11
379 # For RBS: My_star*1.09
380 else:
381 tmp = 12.5*(self.h_1/self.tw)**(-0.2)*(self.L_b/self.iz)**(-0.4)*(1-self.N_G/self.Npl)**0.4
382 return max(min(1.3, tmp), 1.0)*self.My_star
383

◆ ComputeMyStar()

def ComputeMyStar (   self)

Method that computes the effective yield moment.

For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.

Returns
float: Effective yield moment.

Definition at line 355 of file MaterialModels.py.

355 def ComputeMyStar(self):
356 """
357 Method that computes the effective yield moment.
358 For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.
359
360 @returns float: Effective yield moment.
361 """
362 if self.Type == "Beam":
363 return self.prob_factor*self.My*self.gamma_rm*1.1
364 else:
365 if self.N_G/self.Npl > 0.2:
366 return 1.15*self.prob_factor*self.My*self.gamma_rm*(1-self.N_G/self.Npl)*9.0/8.0
367 else:
368 return 1.15*self.prob_factor*self.My*self.gamma_rm*(1-self.N_G/2.0/self.Npl)
369

◆ ComputeRefEnergyDissipationCap()

def ComputeRefEnergyDissipationCap (   self)

Method that computes the reference energy dissipation capacity.

For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.

Returns
float: Reference energy dissipation capacity.

Definition at line 456 of file MaterialModels.py.

456 def ComputeRefEnergyDissipationCap(self):
457 """
458 Method that computes the reference energy dissipation capacity.
459 For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.
460
461 @returns float: Reference energy dissipation capacity.
462 """
463 if self.Type == "Beam":
464 if self.d < 533.0*mm_unit:
465 return 495.0*(self.h_1/self.tw)**(-1.34)*(self.bf/2.0/self.tf)**(-0.595)*(self.Fy/(355.0*MPa_unit))**(-0.360)
466 else:
467 return 536.0*(self.h_1/self.tw)**(-1.26)*(self.bf/2.0/self.tf)**(-0.525)*(self.L_b/self.iz)**(-0.130)*(self.Fy/(355.0*MPa_unit))**(-0.291)
468 # With RBS: ...
469 else:
470 if self.N_G/self.Npl > 0.35:
471 tmp = 268000.0*(self.h_1/self.tw)**(-2.30)*(self.L_b/self.iz)**(-1.130)*(1.0-self.N_G/self.Npl)**(1.19)
472 return min(tmp, 3.0)
473 else:
474 tmp = 25000.0*(self.h_1/self.tw)**(-2.14)*(self.L_b/self.iz)**(-0.53)*(1.0-self.N_G/self.Npl)**(4.92)
475 return min(tmp, 3.0)
476
477

◆ ComputeTheta_p()

def ComputeTheta_p (   self)

Method that computes the plastic rotation.

For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.

Returns
float: Plastic rotation.

Definition at line 406 of file MaterialModels.py.

406 def ComputeTheta_p(self):
407 """
408 Method that computes the plastic rotation.
409 For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.
410
411 @returns float: Plastic rotation.
412 """
413 if self.Type == "Beam":
414 if self.d < 533.0*mm_unit:
415 return 0.0865*(self.h_1/self.tw)**(-0.365)*(self.bf/2.0/self.tf)**(-0.14)*(self.L_0/self.d)**(0.34)*(self.d/(533.0*mm_unit))**(-0.721)*(self.Fy/(355.0*MPa_unit))**(-0.23)
416 else:
417 return 0.318*(self.h_1/self.tw)**(-0.550)*(self.bf/2.0/self.tf)**(-0.345)*(self.L_0/self.d)**(0.090)*(self.L_b/self.iz)**(-0.023)*(self.d/(533.0*mm_unit))**(-0.330)*(self.Fy/(355.0*MPa_unit))**(-0.130)
418 # With RBS: ...
419 else:
420 tmp = 294.0*(self.h_1/self.tw)**(-1.7)*(self.L_b/self.iz)**(-0.7)*(1.0-self.N_G/self.Npl)**(1.6) # *(self.E/self.Fy/gamma_rm)**(0.2) # EC8
421 if tmp > 0.2:
422 tmp = 0.2
423 # if tmp > self.theta_u-self.theta_y:
424 # tmp = (self.theta_u-self.theta_y)*0.799 # convergence issue
425 return tmp
426

◆ ComputeTheta_pc()

def ComputeTheta_pc (   self)

Method that computes the post capping rotation.

For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.

Returns
float: Post capping rotation.

Definition at line 427 of file MaterialModels.py.

427 def ComputeTheta_pc(self):
428 """
429 Method that computes the post capping rotation.
430 For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.
431
432 @returns float: Post capping rotation.
433 """
434 if self.Type == "Beam":
435 if self.d < 533.0*mm_unit:
436 return 5.63*(self.h_1/self.tw)**(-0.565)*(self.bf/2.0/self.tf)**(-0.800)*(self.d/(533.0*mm_unit))**(-0.280)*(self.Fy/(355.0*MPa_unit))**(-0.430)
437 else:
438 return 7.50*(self.h_1/self.tw)**(-0.610)*(self.bf/2.0/self.tf)**(-0.710)*(self.L_b/self.iz)**(-0.110)*(self.d/(533.0*mm_unit))**(-0.161)*(self.Fy/(355.0*MPa_unit))**(-0.320)
439 # With RBS: ...
440 else:
441 tmp = 90.0*(self.h_1/self.tw)**(-0.8)*(self.L_b/self.iz)**(-0.8)*(1.0-self.N_G/self.Npl)**(2.5) # *(self.E/self.Fy/gamma_rm)**(0.07) # EC8
442 return min(tmp, 0.3)
443

◆ ComputeTheta_u()

def ComputeTheta_u (   self)

Method that computes the ultimate rotation.

For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.

Returns
float: Ultimate rotation.

Definition at line 444 of file MaterialModels.py.

444 def ComputeTheta_u(self):
445 """
446 Method that computes the ultimate rotation.
447 For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.
448
449 @returns float: Ultimate rotation.
450 """
451 if self.Type == "Beam":
452 return 0.2
453 else:
454 return 0.15
455

◆ ComputeTheta_y()

def ComputeTheta_y (   self)

Method that computes the yield rotation.

For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.

Returns
float: Yield rotation.

Definition at line 397 of file MaterialModels.py.

397 def ComputeTheta_y(self):
398 """
399 Method that computes the yield rotation.
400 For more info see Lignos & Krawinkler 2011 and Lignos et Al. 2019.
401
402 @returns float: Yield rotation.
403 """
404 return self.My_star/self.Ke*(n+1)
405

◆ ReInit()

def ReInit (   self,
  Mc = -1,
  K = -1,
  theta_u = -1 
)

Implementation of the homonym abstract method.

See parent class DataManagement for detailed information.

Parameters
Mc(float, optional): Capping moment. Defaults to -1, e.g. computed in ComputeMc.
K(float, optional): Residual strength ratio. Defaults to -1, e.g. computed in ComputeK.
theta_u(float, optional): Ultimate rotation. Defaults to -1, e.g. computed in ComputeTheta_u.

Definition at line 160 of file MaterialModels.py.

160 def ReInit(self, Mc = -1, K = -1, theta_u = -1):
161 """
162 Implementation of the homonym abstract method.
163 See parent class DataManagement for detailed information.
164
165 @param Mc (float, optional): Capping moment. Defaults to -1, e.g. computed in ComputeMc.
166 @param K (float, optional): Residual strength ratio. Defaults to -1, e.g. computed in ComputeK.
167 @param theta_u (float, optional): Ultimate rotation. Defaults to -1, e.g. computed in ComputeTheta_u.
168 """
169 # Precompute some members
170 self.My_star = self.ComputeMyStar()
171
172 # Arguments
173 self.Mc = self.ComputeMc() if Mc == -1 else Mc
174 self.K = self.ComputeK() if K == -1 else K
175 self.theta_u = self.ComputeTheta_u() if theta_u == -1 else theta_u
176
177 # Check applicability
178 self.CheckApplicability()
179
180 # Members
181 self.Ke = self.ComputeKe()
182 self.theta_y = self.ComputeTheta_y()
183 self.theta_p = self.ComputeTheta_p()
184 self.theta_pc = self.ComputeTheta_pc()
185 self.McMy = self.Mc/self.My_star
186 self.rate_det = self.ComputeRefEnergyDissipationCap()
187 self.a = self.Computea()
188 self.a_s = self.Computea_s()
189 if self.section_name_tag != "None": self.section_name_tag = self.section_name_tag + " (modified)"
190
191 # Data storage for loading/saving
192 self.UpdateStoredData()
193
194
Module with the parent abstract class DataManagement.

◆ 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 237 of file MaterialModels.py.

237 def ShowInfo(self, plot = False, block = False):
238 """
239 Implementation of the homonym abstract method.
240 See parent class DataManagement for detailed information.
241
242 @param plot (bool, optional): Option to show the plot of the material model. Defaults to False.
243 @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.
244 """
245 Mr = self.K*self.My_star
246 theta_p_plot = self.theta_p
247 if self.theta_p > self.theta_u-self.theta_y:
248 theta_p_plot = self.theta_u-self.theta_y
249 theta_r = self.theta_y + theta_p_plot + self.theta_pc*(1.0-Mr/self.Mc)
250 if theta_r > self.theta_u:
251 theta_r = self.theta_u
252 Mr = self.Mc*(1.0-1.0/self.theta_pc*(self.theta_u-self.theta_y-theta_p_plot))
253
254 print("")
255 print("Requested info for Modified IMK (Ibarra-Medina-Krawinkler) material model Parameters, ID = {}".format(self.ID))
256 print("Section associated: {}".format(self.section_name_tag))
257 print('theta y = {}'.format(self.theta_y))
258 print('theta p = {}'.format(self.theta_p))
259 print('theta r = {}'.format(theta_r))
260 print('theta pc = {}'.format(self.theta_pc))
261 print('theta u = {}'.format(self.theta_u))
262 print('My star = {} kNm'.format(self.My_star/kNm_unit))
263 print('Mc = {} kNm'.format(self.Mc/kNm_unit))
264 print('Mr = {} kNm'.format(Mr/kNm_unit))
265 print('a = {} '.format(self.a))
266 print('as = {} '.format(self.a_s))
267 print('lambda (deterioration rate) = {} '.format(self.rate_det))
268 print("")
269
270 if plot:
271 # Data for plotting
272 x_axis = np.array([0.0, self.theta_y, self.theta_y + theta_p_plot, theta_r, self.theta_u, self.theta_u])
273 x_axis2 = np.array([self.theta_y + theta_p_plot, self.theta_y + theta_p_plot + self.theta_pc])
274 y_axis = np.array([0.0, self.My_star, self.Mc, Mr, Mr, 0.0])/kNm_unit
275 y_axis2 = np.array([self.Mc, 0.0])/kNm_unit
276
277 fig, ax = plt.subplots()
278 ax.plot(x_axis, y_axis, 'k-')
279 ax.plot(x_axis2, y_axis2, 'k--')
280
281 ax.set(xlabel='Rotation [rad]', ylabel='Moment [kNm]',
282 title='Modified IMK deterioration model (ID={})'.format(self.ID))
283 ax.grid()
284
285 if block:
286 plt.show()
287
288

◆ UpdateStoredData()

def UpdateStoredData (   self)

Implementation of the homonym abstract method.

See parent class DataManagement for detailed information.

Definition at line 195 of file MaterialModels.py.

195 def UpdateStoredData(self):
196 """
197 Implementation of the homonym abstract method.
198 See parent class DataManagement for detailed information.
199 """
200 self.data = [["INFO_TYPE", "ModifiedIMK"], # Tag for differentiating different data
201 ["ID", self.ID],
202 ["section_name_tag", self.section_name_tag],
203 ["Type", self.Type],
204 ["d", self.d],
205 ["bf", self.bf],
206 ["tf", self.tf],
207 ["tw", self.tw],
208 ["h_1", self.h_1],
209 ["Iy_mod", self.Iy_mod],
210 ["iz", self.iz],
211 ["E", self.E],
212 ["Fy", self.Fy],
213 ["L", self.L],
214 ["N_G", self.N_G],
215 ["K_factor", self.K_factor],
216 ["Ke", self.Ke],
217 ["L_0", self.L_0],
218 ["L_b", self.L_b],
219 ["gamma_rm", self.gamma_rm],
220 ["prob_factor", self.prob_factor],
221 ["Npl", self.Npl],
222 ["My", self.My],
223 ["My_star", self.My_star],
224 ["Mc", self.Mc],
225 ["McMy", self.McMy],
226 ["K", self.K],
227 ["theta_y", self.theta_y],
228 ["theta_p", self.theta_p],
229 ["theta_pc", self.theta_pc],
230 ["theta_u", self.theta_u],
231 ["rate_det", self.rate_det],
232 ["a", self.a],
233 ["a_s", self.a_s],
234 ["Initialized", self.Initialized]]
235
236

Member Data Documentation

◆ a

a

Definition at line 187 of file MaterialModels.py.

◆ a_s

a_s

Definition at line 188 of file MaterialModels.py.

◆ bf

bf

Definition at line 131 of file MaterialModels.py.

◆ d

d

Definition at line 130 of file MaterialModels.py.

◆ data

data

Definition at line 200 of file MaterialModels.py.

◆ E

E

Definition at line 137 of file MaterialModels.py.

◆ Fy

Fy

Definition at line 138 of file MaterialModels.py.

◆ gamma_rm

gamma_rm

Definition at line 151 of file MaterialModels.py.

◆ h_1

h_1

Definition at line 134 of file MaterialModels.py.

◆ ID

ID

Definition at line 129 of file MaterialModels.py.

◆ Initialized

Initialized

Definition at line 149 of file MaterialModels.py.

◆ Iy_mod

Iy_mod

Definition at line 135 of file MaterialModels.py.

◆ iz

iz

Definition at line 136 of file MaterialModels.py.

◆ K

K

Definition at line 174 of file MaterialModels.py.

◆ K_factor

K_factor

Definition at line 143 of file MaterialModels.py.

◆ Ke

Ke

Definition at line 181 of file MaterialModels.py.

◆ L

L

Definition at line 141 of file MaterialModels.py.

◆ L_0

L_0

Definition at line 144 of file MaterialModels.py.

◆ L_b

L_b

Definition at line 145 of file MaterialModels.py.

◆ Mc

Mc

Definition at line 173 of file MaterialModels.py.

◆ McMy

McMy

Definition at line 185 of file MaterialModels.py.

◆ My

My

Definition at line 140 of file MaterialModels.py.

◆ My_star

My_star

Definition at line 170 of file MaterialModels.py.

◆ n

float n = 10.0
static

Definition at line 45 of file MaterialModels.py.

◆ N_G

N_G

Definition at line 142 of file MaterialModels.py.

◆ Npl

Npl

Definition at line 139 of file MaterialModels.py.

◆ prob_factor

prob_factor

Definition at line 152 of file MaterialModels.py.

◆ rate_det

rate_det

Definition at line 186 of file MaterialModels.py.

◆ section_name_tag

section_name_tag

Definition at line 148 of file MaterialModels.py.

◆ tf

tf

Definition at line 132 of file MaterialModels.py.

◆ theta_p

theta_p

Definition at line 183 of file MaterialModels.py.

◆ theta_pc

theta_pc

Definition at line 184 of file MaterialModels.py.

◆ theta_u

theta_u

Definition at line 175 of file MaterialModels.py.

◆ theta_y

theta_y

Definition at line 182 of file MaterialModels.py.

◆ tw

tw

Definition at line 133 of file MaterialModels.py.

◆ Type

Type

Definition at line 128 of file MaterialModels.py.


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