structuralcodes 0.5.0__py3-none-any.whl → 0.6.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of structuralcodes might be problematic. Click here for more details.

Files changed (40) hide show
  1. structuralcodes/__init__.py +1 -1
  2. structuralcodes/codes/mc2010/_concrete_creep_and_shrinkage.py +2 -2
  3. structuralcodes/core/base.py +115 -4
  4. structuralcodes/geometry/__init__.py +2 -8
  5. structuralcodes/geometry/_geometry.py +11 -22
  6. structuralcodes/geometry/_reinforcement.py +1 -3
  7. structuralcodes/geometry/profiles/__init__.py +19 -0
  8. structuralcodes/geometry/profiles/_base_profile.py +305 -0
  9. structuralcodes/geometry/profiles/_common_functions.py +194 -0
  10. structuralcodes/geometry/profiles/_he.py +192 -0
  11. structuralcodes/geometry/profiles/_ipe.py +130 -0
  12. structuralcodes/geometry/profiles/_ipn.py +329 -0
  13. structuralcodes/geometry/profiles/_ub.py +264 -0
  14. structuralcodes/geometry/profiles/_ubp.py +227 -0
  15. structuralcodes/geometry/profiles/_uc.py +276 -0
  16. structuralcodes/geometry/profiles/_upn.py +315 -0
  17. structuralcodes/materials/basic/_elastic.py +18 -1
  18. structuralcodes/materials/basic/_elasticplastic.py +18 -1
  19. structuralcodes/materials/basic/_generic.py +18 -1
  20. structuralcodes/materials/concrete/__init__.py +3 -0
  21. structuralcodes/materials/concrete/_concrete.py +10 -1
  22. structuralcodes/materials/concrete/_concreteEC2_2004.py +14 -0
  23. structuralcodes/materials/concrete/_concreteEC2_2023.py +14 -0
  24. structuralcodes/materials/concrete/_concreteMC2010.py +19 -0
  25. structuralcodes/materials/constitutive_laws/__init__.py +3 -0
  26. structuralcodes/materials/constitutive_laws/_elasticplastic.py +2 -2
  27. structuralcodes/materials/constitutive_laws/_initial_strain.py +130 -0
  28. structuralcodes/materials/reinforcement/__init__.py +6 -0
  29. structuralcodes/materials/reinforcement/_reinforcement.py +10 -1
  30. structuralcodes/materials/reinforcement/_reinforcementEC2_2004.py +14 -0
  31. structuralcodes/materials/reinforcement/_reinforcementEC2_2023.py +14 -0
  32. structuralcodes/materials/reinforcement/_reinforcementMC2010.py +14 -0
  33. structuralcodes/sections/section_integrators/__init__.py +3 -1
  34. structuralcodes/sections/section_integrators/_marin_integrator.py +1 -1
  35. {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.0.dist-info}/METADATA +2 -2
  36. {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.0.dist-info}/RECORD +39 -29
  37. structuralcodes/geometry/_steel_sections.py +0 -2155
  38. /structuralcodes/{sections/section_integrators → core}/_marin_integration.py +0 -0
  39. {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.0.dist-info}/WHEEL +0 -0
  40. {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,130 @@
1
+ """Initial strain constitutive law."""
2
+
3
+ from __future__ import annotations # To have clean hints of ArrayLike in docs
4
+
5
+ import typing as t
6
+
7
+ import numpy as np
8
+ from numpy.typing import ArrayLike
9
+
10
+ from ...core.base import ConstitutiveLaw
11
+
12
+
13
+ class InitialStrain(ConstitutiveLaw):
14
+ """Class for initial strain Constitutive Law."""
15
+
16
+ _strain_compatibility: bool = True
17
+
18
+ __materials__: t.Tuple[str] = (
19
+ 'steel',
20
+ 'rebars',
21
+ 'concrete',
22
+ )
23
+
24
+ _wrapped_law: ConstitutiveLaw = None
25
+
26
+ def __init__(
27
+ self,
28
+ constitutive_law: ConstitutiveLaw,
29
+ initial_strain: float,
30
+ strain_compatibility: bool = True,
31
+ name: t.Optional[str] = None,
32
+ ) -> None:
33
+ """Initialize an Initial Strain Constitutive Law.
34
+
35
+ This constitutive law is a wrapper for another constitutive law
36
+ that assigns an initial strain.
37
+
38
+ Arguments:
39
+ constitutive_law (ConstitutiveLaw): Wrapped constitutive law.
40
+ initial_strain (float): The initial strain to be applied.
41
+ strain_compatibility (bool): If True, the strain compatibility is
42
+ enforced, otherwise the strain compatibility is released. This
43
+ is helpful for instance for modelling unbonded tendons.
44
+ Default value True.
45
+ """
46
+ name = name if name is not None else 'InitialStrainLaw'
47
+ super().__init__(name=name)
48
+ if not isinstance(constitutive_law, ConstitutiveLaw):
49
+ raise TypeError(
50
+ f'Expected a ConstitutiveLaw instance, '
51
+ f'got {type(constitutive_law)}'
52
+ )
53
+ self._wrapped_law = constitutive_law
54
+ self._initial_strain = initial_strain
55
+ self._initial_stress = self._wrapped_law.get_stress(initial_strain)
56
+ self._strain_compatibility = strain_compatibility
57
+
58
+ @property
59
+ def strain_compatibility(self) -> bool:
60
+ """Return the strain compatibility status."""
61
+ return self._strain_compatibility
62
+
63
+ @property
64
+ def wrapped_law(self) -> ConstitutiveLaw:
65
+ """Return the wrapped constitutive law."""
66
+ return self._wrapped_law
67
+
68
+ def get_stress(
69
+ self, eps: t.Union[float, ArrayLike]
70
+ ) -> t.Union[float, ArrayLike]:
71
+ """Return the stress given strain."""
72
+ stress = self._wrapped_law.get_stress(eps + self._initial_strain)
73
+ if not self._strain_compatibility:
74
+ # If strain compatibility is enforced, return initial stress
75
+ return np.ones_like(stress) * self._initial_stress
76
+ return stress
77
+
78
+ def get_tangent(
79
+ self, eps: t.Union[float, ArrayLike]
80
+ ) -> t.Union[float, ArrayLike]:
81
+ """Return the tangent for given strain."""
82
+ if not self._strain_compatibility:
83
+ return self._wrapped_law.get_tangent(0) * 1e-6
84
+ return self._wrapped_law.get_tangent(eps + self._initial_strain)
85
+
86
+ def __marin__(
87
+ self, strain: t.Tuple[float, float]
88
+ ) -> t.Tuple[t.List[t.Tuple], t.List[t.Tuple]]:
89
+ """Returns coefficients and strain limits for Marin integration in a
90
+ simply formatted way.
91
+
92
+ Arguments:
93
+ strain (float, float): Tuple defining the strain profile: eps =
94
+ strain[0] + strain[1]*y.
95
+
96
+ Example:
97
+ [(0, -0.002), (-0.002, -0.003)]
98
+ [(a0, a1, a2), (a0)]
99
+ """
100
+ return self._wrapped_law.__marin__(
101
+ strain=[strain[0] + self._initial_strain, strain[1]]
102
+ )
103
+
104
+ def __marin_tangent__(
105
+ self, strain: t.Tuple[float, float]
106
+ ) -> t.Tuple[t.List[t.Tuple], t.List[t.Tuple]]:
107
+ """Returns coefficients and strain limits for Marin integration of
108
+ tangent in a simply formatted way.
109
+
110
+ Arguments:
111
+ strain (float, float): Tuple defining the strain profile: eps =
112
+ strain[0] + strain[1]*y.
113
+
114
+ Example:
115
+ [(0, -0.002), (-0.002, -0.003)]
116
+ [(a0, a1, a2), (a0)]
117
+ """
118
+ return self._wrapped_law.__marin_tangent__(
119
+ strain=[strain[0] + self._initial_strain, strain[1]]
120
+ )
121
+
122
+ def get_ultimate_strain(
123
+ self, yielding: bool = False
124
+ ) -> t.Tuple[float, float]:
125
+ """Return the ultimate strain (negative and positive)."""
126
+ ult_strain = self._wrapped_law.get_ultimate_strain(yielding=yielding)
127
+ return (
128
+ ult_strain[0] - self._initial_strain,
129
+ ult_strain[1] - self._initial_strain,
130
+ )
@@ -33,6 +33,7 @@ def create_reinforcement(
33
33
  name: t.Optional[str] = None,
34
34
  density: float = 7850,
35
35
  design_code: t.Optional[str] = None,
36
+ **kwargs,
36
37
  ) -> t.Optional[Reinforcement]:
37
38
  """A factory function to create the correct type of reinforcement based on
38
39
  the desired design code.
@@ -50,6 +51,10 @@ def create_reinforcement(
50
51
  desired standard. If None (default) the globally used design
51
52
  standard will be adopted. Otherwise the design standard specified
52
53
  will be used for the instance of the material.
54
+ **kwargs: Other valid keyword arguments that are collected and passed
55
+ to the specific reinforcement material. Please inspect the
56
+ documentation of the other reinforcement materials to see valid
57
+ arguments.
53
58
 
54
59
  Raises:
55
60
  ValueError: If the design code is not valid or does not cover
@@ -80,5 +85,6 @@ def create_reinforcement(
80
85
  ftk=ftk,
81
86
  epsuk=epsuk,
82
87
  gamma_s=gamma_s,
88
+ **kwargs,
83
89
  )
84
90
  return None
@@ -24,10 +24,19 @@ class Reinforcement(Material):
24
24
  epsuk: float,
25
25
  gamma_s: t.Optional[float] = None,
26
26
  name: t.Optional[str] = None,
27
+ initial_strain: t.Optional[float] = None,
28
+ initial_stress: t.Optional[float] = None,
29
+ strain_compatibility: t.Optional[bool] = None,
27
30
  ) -> None:
28
31
  """Initializes an abstract reinforcement material."""
29
32
  name = name if name is not None else 'Reinforcement'
30
- super().__init__(density, name)
33
+ super().__init__(
34
+ density=density,
35
+ initial_strain=initial_strain,
36
+ initial_stress=initial_stress,
37
+ strain_compatibility=strain_compatibility,
38
+ name=name,
39
+ )
31
40
 
32
41
  self._fyk = abs(fyk)
33
42
  self._Es = abs(Es)
@@ -31,6 +31,9 @@ class ReinforcementEC2_2004(Reinforcement): # noqa: N801
31
31
  ConstitutiveLaw,
32
32
  ]
33
33
  ] = 'elasticplastic',
34
+ initial_strain: t.Optional[float] = None,
35
+ initial_stress: t.Optional[float] = None,
36
+ strain_compatibility: t.Optional[bool] = None,
34
37
  ):
35
38
  """Initializes a new instance of Reinforcement for EC2 2004.
36
39
 
@@ -53,6 +56,13 @@ class ReinforcementEC2_2004(Reinforcement): # noqa: N801
53
56
  constitutive law type for reinforcement. (valid options for
54
57
  string: 'elastic', 'elasticplastic', or
55
58
  'elasticperfectlyplastic').
59
+ initial_strain (Optional[float]): Initial strain of the material.
60
+ initial_stress (Optional[float]): Initial stress of the material.
61
+ strain_compatibility (Optional[bool]): Only relevant if
62
+ initial_strain or initial_stress are different from zero. If
63
+ True, the material deforms with the geometry. If False, the
64
+ stress in the material upon loading is kept constant
65
+ corresponding to the initial strain.
56
66
 
57
67
  Raises:
58
68
  ValueError: If the constitutive law name is not available for the
@@ -71,6 +81,9 @@ class ReinforcementEC2_2004(Reinforcement): # noqa: N801
71
81
  ftk=ftk,
72
82
  epsuk=epsuk,
73
83
  gamma_s=gamma_s,
84
+ initial_strain=initial_strain,
85
+ initial_stress=initial_stress,
86
+ strain_compatibility=strain_compatibility,
74
87
  )
75
88
  self._gamma_eps = gamma_eps
76
89
  self._constitutive_law = (
@@ -84,6 +97,7 @@ class ReinforcementEC2_2004(Reinforcement): # noqa: N801
84
97
  raise ValueError(
85
98
  'The provided constitutive law is not valid for reinforcement.'
86
99
  )
100
+ self._apply_initial_strain()
87
101
 
88
102
  def fyd(self) -> float:
89
103
  """The design yield strength."""
@@ -30,6 +30,9 @@ class ReinforcementEC2_2023(Reinforcement): # noqa: N801
30
30
  ConstitutiveLaw,
31
31
  ]
32
32
  ] = 'elasticplastic',
33
+ initial_strain: t.Optional[float] = None,
34
+ initial_stress: t.Optional[float] = None,
35
+ strain_compatibility: t.Optional[bool] = None,
33
36
  ):
34
37
  """Initializes a new instance of Reinforcement for EC2 2023.
35
38
 
@@ -50,6 +53,13 @@ class ReinforcementEC2_2023(Reinforcement): # noqa: N801
50
53
  constitutive law type for reinforcement. (valid options for
51
54
  string: 'elastic', 'elasticplastic', or
52
55
  'elasticperfectlyplastic').
56
+ initial_strain (Optional[float]): Initial strain of the material.
57
+ initial_stress (Optional[float]): Initial stress of the material.
58
+ strain_compatibility (Optional[bool]): Only relevant if
59
+ initial_strain or initial_stress are different from zero. If
60
+ True, the material deforms with the geometry. If False, the
61
+ stress in the material upon loading is kept constant
62
+ corresponding to the initial strain.
53
63
 
54
64
  Raises:
55
65
  ValueError: If the constitutive law name is not available for the
@@ -67,6 +77,9 @@ class ReinforcementEC2_2023(Reinforcement): # noqa: N801
67
77
  ftk=ftk,
68
78
  epsuk=epsuk,
69
79
  gamma_s=gamma_s,
80
+ initial_strain=initial_strain,
81
+ initial_stress=initial_stress,
82
+ strain_compatibility=strain_compatibility,
70
83
  )
71
84
  self._constitutive_law = (
72
85
  constitutive_law
@@ -79,6 +92,7 @@ class ReinforcementEC2_2023(Reinforcement): # noqa: N801
79
92
  raise ValueError(
80
93
  'The provided constitutive law is not valid for reinforcement.'
81
94
  )
95
+ self._apply_initial_strain()
82
96
 
83
97
  def fyd(self) -> float:
84
98
  """The design yield strength."""
@@ -31,6 +31,9 @@ class ReinforcementMC2010(Reinforcement):
31
31
  ConstitutiveLaw,
32
32
  ]
33
33
  ] = 'elasticplastic',
34
+ initial_strain: t.Optional[float] = None,
35
+ initial_stress: t.Optional[float] = None,
36
+ strain_compatibility: t.Optional[bool] = None,
34
37
  ):
35
38
  """Initializes a new instance of Reinforcement for MC2010.
36
39
 
@@ -53,6 +56,13 @@ class ReinforcementMC2010(Reinforcement):
53
56
  constitutive law type for reinforcement. (valid options for
54
57
  string: 'elastic', 'elasticplastic', or
55
58
  'elasticperfectlyplastic').
59
+ initial_strain (Optional[float]): Initial strain of the material.
60
+ initial_stress (Optional[float]): Initial stress of the material.
61
+ strain_compatibility (Optional[bool]): Only relevant if
62
+ initial_strain or initial_stress are different from zero. If
63
+ True, the material deforms with the geometry. If False, the
64
+ stress in the material upon loading is kept constant
65
+ corresponding to the initial strain.
56
66
 
57
67
  Raises:
58
68
  ValueError: If the constitutive law name is not available for the
@@ -71,6 +81,9 @@ class ReinforcementMC2010(Reinforcement):
71
81
  ftk=ftk,
72
82
  epsuk=epsuk,
73
83
  gamma_s=gamma_s,
84
+ initial_strain=initial_strain,
85
+ initial_stress=initial_stress,
86
+ strain_compatibility=strain_compatibility,
74
87
  )
75
88
  self._gamma_eps = gamma_eps
76
89
  self._constitutive_law = (
@@ -84,6 +97,7 @@ class ReinforcementMC2010(Reinforcement):
84
97
  raise ValueError(
85
98
  'The provided constitutive law is not valid for reinforcement.'
86
99
  )
100
+ self._apply_initial_strain()
87
101
 
88
102
  def fyd(self) -> float:
89
103
  """The design yield strength."""
@@ -1,8 +1,10 @@
1
1
  """Classes for integrating the response of sections."""
2
2
 
3
+ from structuralcodes.core._marin_integration import marin_integration
4
+
3
5
  from ._factory import integrator_factory
4
6
  from ._fiber_integrator import FiberIntegrator
5
- from ._marin_integrator import MarinIntegrator, marin_integration
7
+ from ._marin_integrator import MarinIntegrator
6
8
  from ._section_integrator import SectionIntegrator
7
9
 
8
10
  __all__ = [
@@ -10,13 +10,13 @@ from numpy.typing import ArrayLike, NDArray
10
10
  from shapely import MultiLineString, MultiPolygon, Polygon
11
11
  from shapely.geometry.polygon import orient
12
12
 
13
+ from structuralcodes.core._marin_integration import marin_integration
13
14
  from structuralcodes.geometry import (
14
15
  CompoundGeometry,
15
16
  SurfaceGeometry,
16
17
  create_line_point_angle,
17
18
  )
18
19
 
19
- from ._marin_integration import marin_integration
20
20
  from ._section_integrator import SectionIntegrator
21
21
 
22
22
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: structuralcodes
3
- Version: 0.5.0
3
+ Version: 0.6.0
4
4
  Summary: A Python package that contains models from structural design codes.
5
5
  Author-email: fib - International Federation for Structural Concrete <info@fib-international.org>
6
- Requires-Python: >=3.8
6
+ Requires-Python: >=3.9
7
7
  Description-Content-Type: text/markdown
8
8
  Classifier: Programming Language :: Python :: 3
9
9
  Classifier: Operating System :: OS Independent
@@ -1,4 +1,4 @@
1
- structuralcodes/__init__.py,sha256=Vq8UmTpStvopR5HnfnsUoEB3e53GOoojoXNv-oi6suo,390
1
+ structuralcodes/__init__.py,sha256=UiQOBo8shqGGWKp8sMarkT1ysTrX4Wa32aNCJ1E_Jl8,390
2
2
  structuralcodes/codes/__init__.py,sha256=g5xMAJ3jEZHFd0cypvZY6lMCi7XeVEntsO8zHzI2mWc,2803
3
3
  structuralcodes/codes/ec2_2004/__init__.py,sha256=uh_3lllfMJUZMwbG11S5wuv4nFjNMDlDWPg6vejxaeA,2473
4
4
  structuralcodes/codes/ec2_2004/_concrete_creep_and_shrinkage.py,sha256=Vbxxc3g0WZz2qFWDlfrVvC-uxMO2YJpfclnHxRPMuYQ,15301
@@ -11,7 +11,7 @@ structuralcodes/codes/ec2_2023/_annexB_time_dependent.py,sha256=ykRAHBHzqtMSErkV
11
11
  structuralcodes/codes/ec2_2023/_section5_materials.py,sha256=-vYowBVcebyPyuGvX3wLfxiePdM0OrBgRrYil71Vd88,32384
12
12
  structuralcodes/codes/ec2_2023/_section9_sls.py,sha256=l1d3xcALAweU9jAAf1d91TJaGB_0p-eMzbRGuhfKydQ,11252
13
13
  structuralcodes/codes/mc2010/__init__.py,sha256=2RmgH19YNKLf5AUZuKuP9z1NOobNEOJ8wk_ADi7IS0Y,3483
14
- structuralcodes/codes/mc2010/_concrete_creep_and_shrinkage.py,sha256=lQAj8n0TVhRvttVFF9YLVNzCRo3O3wIqWvBdZRu9vDk,24295
14
+ structuralcodes/codes/mc2010/_concrete_creep_and_shrinkage.py,sha256=NxK4fzp44fI7EMe0UTv9tOV8Z98WI3yaWFoiN_x9hwc,24300
15
15
  structuralcodes/codes/mc2010/_concrete_interface_different_casting_times.py,sha256=x_n9Z9WEPY6DFf8Og5UIERPivNh-O_3RM4ZnGBy64cs,3570
16
16
  structuralcodes/codes/mc2010/_concrete_material_properties.py,sha256=MTz70-9iaN_s0Z8gJksCEzP0Yza4pPfZ-vOI30pzbw4,12362
17
17
  structuralcodes/codes/mc2010/_concrete_punching.py,sha256=OOPbltvs-6z7klCZmBurtqLVBARQsKn_ov_gvSz-tUc,13924
@@ -21,47 +21,57 @@ structuralcodes/codes/mc2010/_interface_concrete_steel_rebar.py,sha256=bkZN4FYA4
21
21
  structuralcodes/codes/mc2010/_reinforcement_material_properties.py,sha256=FELmgMcCrHlajGwQNRRHb8nqKnMCsLso1OyjonsTAdk,2842
22
22
  structuralcodes/codes/mc2020/__init__.py,sha256=5hrAfBtAeG69N_lroFpG10_ZKB1SuNlKBnuHug2DI3E,174
23
23
  structuralcodes/core/__init__.py,sha256=spnvZIm_w3jX_lV-v3bloDjgHh8lrH6UHpA1Nv1zeAI,55
24
+ structuralcodes/core/_marin_integration.py,sha256=SZgya6d_Tequ3jez7UEBlYioZepW2IDKaAxn_6WrMbU,1563
24
25
  structuralcodes/core/_section_results.py,sha256=MzUGThcxmZvyp0UBwxEiUAx2qz49UTlIo7MqoPEy3xk,7968
25
- structuralcodes/core/base.py,sha256=8vpC3SmlEnhWi7_xgxpoI-seas4uV3VWrYH7Hs1ZvE0,8680
26
- structuralcodes/geometry/__init__.py,sha256=STc2chf49NkWlnpcfB8n4mYWmR633VsKtbfyG8ylQ7s,771
26
+ structuralcodes/core/base.py,sha256=19e2r0aX6Bg23vwehNBDUCGHwTxI2lA29K5IwHmG2iU,13032
27
+ structuralcodes/geometry/__init__.py,sha256=nX7ip3EDwVDDSvuu_MZ4hlWB1g8EEnP5SaXoD1rq2yM,676
27
28
  structuralcodes/geometry/_circular.py,sha256=YzR98Tjk3zJ-k8-MoCMUGEqTLe_VBPmVLWs6TkGpjDY,3130
28
- structuralcodes/geometry/_geometry.py,sha256=q1wMYxBJl0-GlEcQSnU-Zk0rNUTq8PLexTaKC-XC7q8,29334
29
+ structuralcodes/geometry/_geometry.py,sha256=AODluFllUeXNMwhfHZFXkflm6MVlLiaFWaHdqLTeUqU,29021
29
30
  structuralcodes/geometry/_rectangular.py,sha256=CfTdRiovUps-rgFdTpE7lKuuWlN65SLVUtXPjHaA2bI,3031
30
- structuralcodes/geometry/_reinforcement.py,sha256=CXXKfOb-eNLVqH5hCztNrdzMzbZTreoZaWYxEJXhM1Q,8849
31
- structuralcodes/geometry/_steel_sections.py,sha256=UdJmhhnK8r5gEfBzvWsMFHGs5gmuoOhFoduBanlRMQg,60225
31
+ structuralcodes/geometry/_reinforcement.py,sha256=B3B2yowRwyR55eiL6J5jkRKoGYgbvBLH9KczXb50JhI,8826
32
+ structuralcodes/geometry/profiles/__init__.py,sha256=oHP5Qs7c6TecdMBVxiyuwsx48Zc7l5QPZGgE8Bd4N7M,275
33
+ structuralcodes/geometry/profiles/_base_profile.py,sha256=nyTFR6iIQGNWtUTj52LBAPj8tQkd1VJPiCNYqt7h3Sw,10373
34
+ structuralcodes/geometry/profiles/_common_functions.py,sha256=s_o47IdcvGM2mdmnhwirgUBxktzZPVHNcMZAYq6TWK4,4772
35
+ structuralcodes/geometry/profiles/_he.py,sha256=-MiacoPzntWPr-Yz1ni4jtR-I1XxswUyb8h8Tet-kl0,8569
36
+ structuralcodes/geometry/profiles/_ipe.py,sha256=5CHWlNYg8jIs4DomKFihabcYCZArQBWLqm1M2Ya3h2s,4313
37
+ structuralcodes/geometry/profiles/_ipn.py,sha256=WA3EcQuN3_f8q_RuzFgKfL6oXUbuxOEg33-xrZlyxlA,7738
38
+ structuralcodes/geometry/profiles/_ub.py,sha256=sXiOjpUPCf99iUMRjruGcrstaiQcpmYs9s6Z3niBmR8,6246
39
+ structuralcodes/geometry/profiles/_ubp.py,sha256=hHH6WI4vBZ5S9GTCJTQPfkyz04qzOeimWFi37J1yhAM,5405
40
+ structuralcodes/geometry/profiles/_uc.py,sha256=N3w6bv-Os7Jp9sRwlbEZ4Mz2yzgBu29eG5y0k3lZySg,6444
41
+ structuralcodes/geometry/profiles/_upn.py,sha256=UT8Uc8nvmunFDpD7NTtXfzTRgnb-eF9B6gMdQ1s51f8,7582
32
42
  structuralcodes/materials/__init__.py,sha256=MF2hxtwTcZhHfXGnGfO_ZqyW9z3Dd-B6mB1cKsNztwY,193
33
43
  structuralcodes/materials/basic/__init__.py,sha256=SrtMwyHakwJRlrFpzJIvbU0TWF8qsOyFXTfdPeIoCDQ,266
34
- structuralcodes/materials/basic/_elastic.py,sha256=VdqiTl-chtUQ1scSw2d8QfTX5SxXnAt3-4n9y6wIUnQ,1485
35
- structuralcodes/materials/basic/_elasticplastic.py,sha256=hSMRStV1pxHAJHVsf47rh4L1ZYsJV6mEqhzBl4vvYe0,1986
36
- structuralcodes/materials/basic/_generic.py,sha256=jjmOM_nLzldwkoIn2nTFBUknNHWkJGPVMFG02TrBDDw,802
37
- structuralcodes/materials/concrete/__init__.py,sha256=GRD5WcbYrnE4iN-L7qVkhVTi7w_PUP7pnbGueOaVeFs,2576
38
- structuralcodes/materials/concrete/_concrete.py,sha256=VmdxxSoqKEPADwcQ-LhL1adukZkgigh2zCfp3QqkTAs,1480
39
- structuralcodes/materials/concrete/_concreteEC2_2004.py,sha256=waNTw-iiytWHGPML1swW2EQDcb10FOQNMsm2y5ykQPk,18713
40
- structuralcodes/materials/concrete/_concreteEC2_2023.py,sha256=5IMw2uSrZcrf984c5iYf-SWbXGCje9MZ-5A-AwH8Owo,17851
41
- structuralcodes/materials/concrete/_concreteMC2010.py,sha256=_TdyCkPuzaFUrfv9bB3zaenSu56ygLZo-KQZMIT8qjQ,18967
42
- structuralcodes/materials/constitutive_laws/__init__.py,sha256=IGpwrTvbfUGJ11lYugY3k4mmaYJUFPqAOw680aUkTxo,3063
44
+ structuralcodes/materials/basic/_elastic.py,sha256=WhVgr49j4ro6imwy0XBhCTkcMuXymUidaDqB2uyQspc,2384
45
+ structuralcodes/materials/basic/_elasticplastic.py,sha256=yxN0haU05Ilpn-O5TdT9_cYjVpbpcoXf9qb8gcmCrTU,2892
46
+ structuralcodes/materials/basic/_generic.py,sha256=t2jKfriZxmARhVf8B8mJYhKEgrM1G43FmYpHCj3oHSA,1700
47
+ structuralcodes/materials/concrete/__init__.py,sha256=ab4j6C0YECmX_xxXTiEqcFnB3MrfUN0mZEfLGb1zXbo,2802
48
+ structuralcodes/materials/concrete/_concrete.py,sha256=gJOGx2l_niSV_Q5ZyzDe1C9NhOcpkG9iIsQmlYpdCBo,1811
49
+ structuralcodes/materials/concrete/_concreteEC2_2004.py,sha256=6JHGGwDZfDTZKl8eXXorF__VYPoXH_9lMkvcYx7LIbY,19545
50
+ structuralcodes/materials/concrete/_concreteEC2_2023.py,sha256=jH4J0gNgotyaDrIpRD-s8l1sosI2q0Mgz9kRxq8aReQ,18683
51
+ structuralcodes/materials/concrete/_concreteMC2010.py,sha256=6mTXpo2QkETyQgIRJh1fvX5cWToA_GbtvZa14uhypfY,20130
52
+ structuralcodes/materials/constitutive_laws/__init__.py,sha256=BXUID127WBSLy5cd82eLajtnKnmwNwNdwpLmWGdn554,3163
43
53
  structuralcodes/materials/constitutive_laws/_bilinearcompression.py,sha256=wap9cPSj4baeAZ4dqSfajWb5wdidkpkcT2pgb2QHrBk,6083
44
54
  structuralcodes/materials/constitutive_laws/_elastic.py,sha256=xxSneoCW41AQy0vj3_x-sTuvE_SsS1kutaG_NbqAWbk,4306
45
- structuralcodes/materials/constitutive_laws/_elasticplastic.py,sha256=VXA4wgkfL8NdGnZa7AQX_TL-JCpEBjMVumIwQhhloFY,8118
55
+ structuralcodes/materials/constitutive_laws/_elasticplastic.py,sha256=t4lOhGmwqT6vClZlWBmUtumIp8blUTS5kFiz-TeLT8o,8138
56
+ structuralcodes/materials/constitutive_laws/_initial_strain.py,sha256=6iZjkY6tg8FAXkVoBkbYI6zySCb3ptvmMzCsqXP5GXY,4480
46
57
  structuralcodes/materials/constitutive_laws/_parabolarectangle.py,sha256=9GeY0HuFE5l9L61OoKi-M5MgQemJpcKccysN0SQ0oXM,8609
47
58
  structuralcodes/materials/constitutive_laws/_popovics.py,sha256=dpXFQ9KHE245C9dgOLz9KXYHZiAYrRan5exgj0j_JxM,4322
48
59
  structuralcodes/materials/constitutive_laws/_sargin.py,sha256=WJGw0EtqkPh-d3N6vTPRIfhE1Ypyc16JpGcoi-0U1A8,3495
49
60
  structuralcodes/materials/constitutive_laws/_userdefined.py,sha256=vr01SyZTQvDimJLJN3-shvhIevvt9_qRtiy8OjodKQQ,9925
50
- structuralcodes/materials/reinforcement/__init__.py,sha256=-UA04GSNN6_xLKqnH_5taiOmgxYwD_wtT6Nw8UbfkJY,2757
51
- structuralcodes/materials/reinforcement/_reinforcement.py,sha256=AzVaUe0ULD01dkD1V2-gpzXbKpnXKssmjFkohSHKIZI,2610
52
- structuralcodes/materials/reinforcement/_reinforcementEC2_2004.py,sha256=V-wnFBhkalZhbEUbSMbmmWlGKr5y8ozVsCCsNy2hzW0,4746
53
- structuralcodes/materials/reinforcement/_reinforcementEC2_2023.py,sha256=qP-Qeg-x7JWZxghUliToABoz_K5nIF--4_EykmUUJmQ,4259
54
- structuralcodes/materials/reinforcement/_reinforcementMC2010.py,sha256=tlZq_x3RwMBngev0KUzFCyOYe2rW-JIpVgobXhpshdI,4421
61
+ structuralcodes/materials/reinforcement/__init__.py,sha256=l2wleHRgA8DYkVePyRvzl5wXkxeZ5zThoFOwWGvZd_I,3041
62
+ structuralcodes/materials/reinforcement/_reinforcement.py,sha256=AXWPdQ_PS0-redEQjxVVz8kcWYJcZ2GtG8r7XyTIzs4,2954
63
+ structuralcodes/materials/reinforcement/_reinforcementEC2_2004.py,sha256=WybbiY49kqbchUhnJkorGgw3AIU1LTou7Ph51dPzlx4,5578
64
+ structuralcodes/materials/reinforcement/_reinforcementEC2_2023.py,sha256=egnkrkd30L2HF1lIkGVRqdt3-eKHoDe4ye497AUqOoM,5091
65
+ structuralcodes/materials/reinforcement/_reinforcementMC2010.py,sha256=guB9AOBMdTKRGDa_jMJFfxR6ZKA3JjGnfqGifvWdLvg,5253
55
66
  structuralcodes/sections/__init__.py,sha256=gUGqiv8zyhiMmxEFme8E9nC2b3aJKs3ieBYz6X2GVFY,545
56
67
  structuralcodes/sections/_generic.py,sha256=JYVx-8LhT7d2MsGGBcvy4aDF2vJz4XzDy5q5fshDRzA,57798
57
68
  structuralcodes/sections/_rc_utils.py,sha256=ri2v7j6YmxZIEBt1GHmjREA0uMbjD7z7piZEsva1tIY,4637
58
- structuralcodes/sections/section_integrators/__init__.py,sha256=PK4ixV0XrfHXN-itIrB1r90npoWo3aIJqMcenqcaees,399
69
+ structuralcodes/sections/section_integrators/__init__.py,sha256=rb9noIs_J7j7YomtZD7N5gQM6_-xoUO6VYbEmNbChuQ,451
59
70
  structuralcodes/sections/section_integrators/_factory.py,sha256=MHp14hfWU-oXTiIutCKLJEC47LirYsHgEAAmHVtnFMY,1242
60
71
  structuralcodes/sections/section_integrators/_fiber_integrator.py,sha256=0n99oNN0fb3RDoktI4qilA5T3ccALYZ4SlxKg1a9AJA,13214
61
- structuralcodes/sections/section_integrators/_marin_integration.py,sha256=SZgya6d_Tequ3jez7UEBlYioZepW2IDKaAxn_6WrMbU,1563
62
- structuralcodes/sections/section_integrators/_marin_integrator.py,sha256=MIDHow_BHa5BFs5OVPHAGM2fuFYKgfRQF8-FG2vZ9Jo,15646
72
+ structuralcodes/sections/section_integrators/_marin_integrator.py,sha256=jMO6nQnAheGju_xQ65FPVyN28yzCn4GSPFhrLQ-JS2w,15666
63
73
  structuralcodes/sections/section_integrators/_section_integrator.py,sha256=aPYuUpqeQLYauVi3_uJoEtXPSuXn79Aau3GTlISn-sI,2355
64
- structuralcodes-0.5.0.dist-info/licenses/LICENSE,sha256=3pqb3JVOTHCoMlvB4xxKrBlj0KsM_5Tyg5nsaCLJcSY,11372
65
- structuralcodes-0.5.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
66
- structuralcodes-0.5.0.dist-info/METADATA,sha256=CWL0lKtMb-lw4BSsD9tfuFest8IeBImok9e-0tBlqbU,2466
67
- structuralcodes-0.5.0.dist-info/RECORD,,
74
+ structuralcodes-0.6.0.dist-info/licenses/LICENSE,sha256=3pqb3JVOTHCoMlvB4xxKrBlj0KsM_5Tyg5nsaCLJcSY,11372
75
+ structuralcodes-0.6.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
76
+ structuralcodes-0.6.0.dist-info/METADATA,sha256=eURCRubO1A0st0QoDbZyP-jBjdSeRj-0zgEoeVCMA8U,2466
77
+ structuralcodes-0.6.0.dist-info/RECORD,,