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.
- structuralcodes/__init__.py +1 -1
- structuralcodes/codes/mc2010/_concrete_creep_and_shrinkage.py +2 -2
- structuralcodes/core/base.py +115 -4
- structuralcodes/geometry/__init__.py +2 -8
- structuralcodes/geometry/_geometry.py +11 -22
- structuralcodes/geometry/_reinforcement.py +1 -3
- structuralcodes/geometry/profiles/__init__.py +19 -0
- structuralcodes/geometry/profiles/_base_profile.py +305 -0
- structuralcodes/geometry/profiles/_common_functions.py +194 -0
- structuralcodes/geometry/profiles/_he.py +192 -0
- structuralcodes/geometry/profiles/_ipe.py +130 -0
- structuralcodes/geometry/profiles/_ipn.py +329 -0
- structuralcodes/geometry/profiles/_ub.py +264 -0
- structuralcodes/geometry/profiles/_ubp.py +227 -0
- structuralcodes/geometry/profiles/_uc.py +276 -0
- structuralcodes/geometry/profiles/_upn.py +315 -0
- structuralcodes/materials/basic/_elastic.py +18 -1
- structuralcodes/materials/basic/_elasticplastic.py +18 -1
- structuralcodes/materials/basic/_generic.py +18 -1
- structuralcodes/materials/concrete/__init__.py +3 -0
- structuralcodes/materials/concrete/_concrete.py +10 -1
- structuralcodes/materials/concrete/_concreteEC2_2004.py +14 -0
- structuralcodes/materials/concrete/_concreteEC2_2023.py +14 -0
- structuralcodes/materials/concrete/_concreteMC2010.py +19 -0
- structuralcodes/materials/constitutive_laws/__init__.py +3 -0
- structuralcodes/materials/constitutive_laws/_elasticplastic.py +2 -2
- structuralcodes/materials/constitutive_laws/_initial_strain.py +130 -0
- structuralcodes/materials/reinforcement/__init__.py +6 -0
- structuralcodes/materials/reinforcement/_reinforcement.py +10 -1
- structuralcodes/materials/reinforcement/_reinforcementEC2_2004.py +14 -0
- structuralcodes/materials/reinforcement/_reinforcementEC2_2023.py +14 -0
- structuralcodes/materials/reinforcement/_reinforcementMC2010.py +14 -0
- structuralcodes/sections/section_integrators/__init__.py +3 -1
- structuralcodes/sections/section_integrators/_marin_integrator.py +1 -1
- {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.0.dist-info}/METADATA +2 -2
- {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.0.dist-info}/RECORD +39 -29
- structuralcodes/geometry/_steel_sections.py +0 -2155
- /structuralcodes/{sections/section_integrators → core}/_marin_integration.py +0 -0
- {structuralcodes-0.5.0.dist-info → structuralcodes-0.6.0.dist-info}/WHEEL +0 -0
- {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__(
|
|
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
|
|
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.
|
|
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.
|
|
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=
|
|
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=
|
|
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=
|
|
26
|
-
structuralcodes/geometry/__init__.py,sha256=
|
|
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=
|
|
29
|
+
structuralcodes/geometry/_geometry.py,sha256=AODluFllUeXNMwhfHZFXkflm6MVlLiaFWaHdqLTeUqU,29021
|
|
29
30
|
structuralcodes/geometry/_rectangular.py,sha256=CfTdRiovUps-rgFdTpE7lKuuWlN65SLVUtXPjHaA2bI,3031
|
|
30
|
-
structuralcodes/geometry/_reinforcement.py,sha256=
|
|
31
|
-
structuralcodes/geometry/
|
|
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=
|
|
35
|
-
structuralcodes/materials/basic/_elasticplastic.py,sha256=
|
|
36
|
-
structuralcodes/materials/basic/_generic.py,sha256=
|
|
37
|
-
structuralcodes/materials/concrete/__init__.py,sha256=
|
|
38
|
-
structuralcodes/materials/concrete/_concrete.py,sha256=
|
|
39
|
-
structuralcodes/materials/concrete/_concreteEC2_2004.py,sha256=
|
|
40
|
-
structuralcodes/materials/concrete/_concreteEC2_2023.py,sha256=
|
|
41
|
-
structuralcodes/materials/concrete/_concreteMC2010.py,sha256=
|
|
42
|
-
structuralcodes/materials/constitutive_laws/__init__.py,sha256=
|
|
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=
|
|
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
|
|
51
|
-
structuralcodes/materials/reinforcement/_reinforcement.py,sha256=
|
|
52
|
-
structuralcodes/materials/reinforcement/_reinforcementEC2_2004.py,sha256=
|
|
53
|
-
structuralcodes/materials/reinforcement/_reinforcementEC2_2023.py,sha256=
|
|
54
|
-
structuralcodes/materials/reinforcement/_reinforcementMC2010.py,sha256=
|
|
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=
|
|
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/
|
|
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.
|
|
65
|
-
structuralcodes-0.
|
|
66
|
-
structuralcodes-0.
|
|
67
|
-
structuralcodes-0.
|
|
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,,
|