Skip to content

nominal_concrete_cover

checks.eurocode.concrete.nominal_concrete_cover

Calculation of nominal concrete cover from EN 1992-1-1: Chapter 4 - Durability and cover to reinforcement.

Classes:

  • NominalConcreteCover

    Class responsible for the calculation of the nominal concrete cover [\(c_{nom}\)] [\(mm\)].

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover dataclass

NominalConcreteCover(
    reinforcement_diameter: MM,
    nominal_max_aggregate_size: MM,
    constants: NominalConcreteCoverConstantsBase,
    structural_class: ConcreteStructuralClassBase | int,
    carbonation: Carbonation
    | Literal["XC1", "XC2", "XC3", "XC4", "NA"] = lambda: NA(),
    chloride: Chloride | Literal["XD1", "XD2", "XD3", "NA"] = lambda: NA(),
    chloride_seawater: ChlorideSeawater
    | Literal["XS1", "XS2", "XS3", "NA"] = lambda: NA(),
    delta_c_dur_gamma: MM = 0,
    delta_c_dur_st: MM = 0,
    delta_c_dur_add: MM = 0,
    casting_surface: CastingSurface = PERMANENTLY_EXPOSED,
    uneven_surface: bool = False,
    abrasion_class: AbrasionClass = NA,
)

Bases: CheckProtocol

Class responsible for the calculation of the nominal concrete cover [\(c_{nom}\)] [\(mm\)]. It takes considerations of art.4.4.1.2 and 4.4.1.3 into account.

Parameters:

  • reinforcement_diameter (MM) –

    The diameter of the reinforcement [\(mm\)].

  • nominal_max_aggregate_size (MM) –

    The nominal maximum aggregate size [\(mm\)].

  • constants (NominalConcreteCoverConstantsBase) –

    The constants for the calculation of the nominal concrete cover.

  • structural_class (ConcreteStructuralClassBase | int) –

    The structural class of the concrete. Either an instance of the ConcreteStructuralClassBase class or an integer. Tip: Use the :class:Table4Dot3ConcreteStructuralClass class to calculate the structural class.

  • carbonation (Carbonation | Literal['XC1', 'XC2', 'XC3', 'XC4', 'NA'], default: lambda: NA() ) –

    The classification of corrosion induced by carbonation. Default is "Not applicable".

  • chloride (Chloride | Literal['XD1', 'XD2', 'XD3', 'NA'], default: lambda: NA() ) –

    The classification of corrosion induced by chlorides other than by sea water. Default is "Not applicable".

  • chloride_seawater (ChlorideSeawater | Literal['XS1', 'XS2', 'XS3', 'NA'], default: lambda: NA() ) –

    The classification of corrosion induced by chlorides from sea water. Default is "Not applicable".

  • delta_c_dur_gamma (MM, default: 0 ) –

    [\(\Delta c_{dur,\gamma}\)] An additional safety requirement based on art. 4.4.1.2 (6) [\(mm\)]. The value of [\(\Delta c_{dur,\gamma}\)] for use in a Country may be found in its National Annex. The recommended value is 0 mm. 0 mm is the default value in the formula if not specified otherwise.

  • delta_c_dur_st (MM, default: 0 ) –

    [\(\Delta c_{dur,st}\)] A reduction of minimum concrete cover when using stainless steel based on art. 4.4.1.2 (7) [\(mm\)]. The value of [\(\Delta c_{dur,st}\)] for use in a Country may be found in its National Annex. The recommended value, without further specification, is 0 mm. 0 mm is the default value in the formula if not specified otherwise.

  • delta_c_dur_add (MM, default: 0 ) –

    [\(\Delta c_{dur,add}\)] A reduction of minimum concrete cover when using additional protection based on art. 4.4.1.2 (8) [\(mm\)]. The value of [\(\Delta c_{dur,add}\)] for use in a Country may be found in its National Annex. The recommended value, without further specification, is 0 mm. 0 mm is the default value in the formula if not specified otherwise.

  • casting_surface (CastingSurface, default: PERMANENTLY_EXPOSED ) –

    The casting surface of the concrete according to art. 4.4.1.3 (4). The default value is "Permanently exposed".

  • uneven_surface (bool, default: False ) –

    Is the surface uneven according to art. 4.4.1.2 (11)? The default value is False.

  • abrasion_class (AbrasionClass, default: NA ) –

    The abrasion class of the concrete surface according to art. 4.4.1.2 (13). The default value is "Not applicable".

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.c_min

c_min() -> Form4Dot2MinimumConcreteCover

Minimum concrete cover according to formula 4.2 from EN 1992-1-1.

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
133
134
135
136
137
138
139
140
141
def c_min(self) -> Form4Dot2MinimumConcreteCover:
    """Minimum concrete cover according to formula 4.2 from EN 1992-1-1."""
    return Form4Dot2MinimumConcreteCover(
        c_min_b=self.c_min_b(),
        c_min_dur=self.c_min_dur(),
        delta_c_dur_gamma=self.delta_c_dur_gamma,
        delta_c_dur_st=self.delta_c_dur_st,
        delta_c_dur_add=self.delta_c_dur_add,
    )

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.c_min_b

c_min_b() -> Table4Dot2MinimumCoverWithRegardToBond

Minimum concrete cover with regard to bond according to table 4.2 from EN 1992-1-1.

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
125
126
127
def c_min_b(self) -> Table4Dot2MinimumCoverWithRegardToBond:
    """Minimum concrete cover with regard to bond according to table 4.2 from EN 1992-1-1."""
    return Table4Dot2MinimumCoverWithRegardToBond(self.reinforcement_diameter, self.nominal_max_aggregate_size > 32)

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.c_min_dur

c_min_dur() -> Table4Dot4nMinimumCoverDurabilityReinforcementSteel

Minimum concrete cover with regard to durability according to table 4.4N from EN 1992-1-1.

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
129
130
131
def c_min_dur(self) -> Table4Dot4nMinimumCoverDurabilityReinforcementSteel:
    """Minimum concrete cover with regard to durability according to table 4.4N from EN 1992-1-1."""
    return Table4Dot4nMinimumCoverDurabilityReinforcementSteel(self.exposure_classes(), self.structural_class)

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.c_min_total

c_min_total() -> MM

Total minimum concrete cover according to art. 4.4.1.2 (11) and (13) from EN 1992-1-1.

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
151
152
153
154
155
156
157
158
def c_min_total(self) -> MM:
    """Total minimum concrete cover according to art. 4.4.1.2 (11) and (13) from EN 1992-1-1."""
    c_min = self.c_min()
    # According to art. 4.4.1.2 (11) from EN 1992-1-1
    c_min += self.cover_increase_for_uneven_surface()
    # According to art. 4.4.1.2 (13) from EN 1992-1-1
    c_min += self.cover_increase_for_abrasion_class()
    return c_min

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.c_nom

c_nom() -> Form4Dot1NominalConcreteCover

Nominal concrete cover according to art. 4.4.1 from EN 1992-1-1.

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
160
161
162
def c_nom(self) -> Form4Dot1NominalConcreteCover:
    """Nominal concrete cover according to art. 4.4.1 from EN 1992-1-1."""
    return Form4Dot1NominalConcreteCover(c_min=self.c_min_total(), delta_c_dev=self.constants.DEFAULT_DELTA_C_DEV)

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.cover_increase_for_abrasion_class

cover_increase_for_abrasion_class() -> MM

Calculate the increase of the concrete cover for abrasion class according to art. 4.4.1.2 (13).

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
147
148
149
def cover_increase_for_abrasion_class(self) -> MM:
    """Calculate the increase of the concrete cover for abrasion class according to art. 4.4.1.2 (13)."""
    return self.constants.COVER_INCREASE_FOR_ABRASION_CLASS[self.abrasion_class]

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.cover_increase_for_uneven_surface

cover_increase_for_uneven_surface() -> MM

Calculate the increase of the concrete cover for uneven surface according to art. 4.4.1.2 (11).

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
143
144
145
def cover_increase_for_uneven_surface(self) -> MM:
    """Calculate the increase of the concrete cover for uneven surface according to art. 4.4.1.2 (11)."""
    return self.constants.COVER_INCREASE_FOR_UNEVEN_SURFACE * self.uneven_surface

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.exposure_classes

exposure_classes() -> Table4Dot1ExposureClasses

Exposure classes according to table 4.1 from EN 1992-1-1.

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
115
116
117
118
119
120
121
122
123
def exposure_classes(self) -> Table4Dot1ExposureClasses:
    """Exposure classes according to table 4.1 from EN 1992-1-1."""
    return Table4Dot1ExposureClasses(
        cast(Carbonation, self.carbonation),
        cast(Chloride, self.chloride),
        cast(ChlorideSeawater, self.chloride_seawater),
        FreezeThaw.NA,
        Chemical.NA,
    )

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.latex

latex(n: int = 1) -> str

Returns the lateX string representation for Nominal concrete cover check.

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
175
176
177
def latex(self, n: int = 1) -> str:
    """Returns the lateX string representation for Nominal concrete cover check."""
    return str(self.report(n=n).to_latex())

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.minimum_cover_with_regard_to_casting_surface

minimum_cover_with_regard_to_casting_surface() -> MM

Calculate the minimum cover with regard to casting surface according to art. 4.4.1.3 (4) from EN 1992-1-1.

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
164
165
166
def minimum_cover_with_regard_to_casting_surface(self) -> MM:
    """Calculate the minimum cover with regard to casting surface according to art. 4.4.1.3 (4) from EN 1992-1-1."""
    return self.constants.minimum_cover_with_regard_to_casting_surface(self.c_min_dur(), self.casting_surface)

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.report

report(n: int = 2) -> Report

Generate formatted report of check results.

Produces human-readable reports in various formats for documentation.

Parameters:

  • n (int, default: 2 ) –

    Number of decimal places for numerical values in the report (default is 2).

Returns:

  • Report

    Formatted report on the nominal concrete cover calculation, including minimum cover requirements, durability considerations, and the governing value.

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
def report(self, n: int = 2) -> Report:
    """Generate formatted report of check results.

    Produces human-readable reports in various formats for documentation.

    Parameters
    ----------
    n : int, optional
        Number of decimal places for numerical values in the report (default is 2).

    Returns
    -------
    Report
        Formatted report on the nominal concrete cover calculation, including
        minimum cover requirements, durability considerations, and the governing value.
    """
    report = Report(f"Nominal concrete cover according to art. 4.4.1 from {self.constants.CODE_PREFIX}EN 1992-1-1{self.constants.CODE_SUFFIX}")

    # Minimum cover with regard to bond
    report.add_paragraph("Minimum concrete cover with regard to bond according to table 4.2:")
    report.add_formula(self.c_min_b(), n=n)
    report.add_newline(n=2)

    # Minimum cover with regard to durability
    report.add_paragraph("Minimum concrete cover with regard to durability according to table 4.4N:")
    report.add_formula(self.c_min_dur(), n=n)
    report.add_newline(n=2)

    # Minimum concrete cover
    report.add_paragraph("Minimum concrete cover according to formula 4.2:")
    report.add_formula(self.c_min(), n=n)
    report.add_newline(n=2)

    # Total minimum concrete cover with additional requirements
    report.add_paragraph("Total minimum concrete cover including adjustments for uneven surface and abrasion class (art. 4.4.1.2 (11) and (13)):")
    report.add_equation(
        r"c_{min,total} = c_{min} + \Delta c_{uneven\ surface} + \Delta c_{abrasion\ class} = "
        rf"{self.c_min():.{n}f} + {self.cover_increase_for_uneven_surface():.{n}f} + "
        rf"{self.cover_increase_for_abrasion_class():.{n}f} = {self.c_min_total():.{n}f} \ mm"
    )
    report.add_newline(n=2)

    # Nominal concrete cover
    report.add_paragraph("Nominal concrete cover according to formula 4.1:")
    report.add_formula(self.c_nom(), n=n)
    report.add_newline(n=2)

    # Minimum cover with regard to casting surface
    report.add_paragraph(
        text=f"Minimum cover with regard to casting surface according to art. 4.4.1.3 (4): "
        f"{self.minimum_cover_with_regard_to_casting_surface():.{n}f} mm"
    )
    report.add_newline(n=2)

    # Governing value
    report.add_paragraph(text="Governing nominal concrete cover:", bold=True)
    report.add_equation(
        rf"c_{{nom}} = {latex_max_curly_brackets(f'{float(self.c_nom()):.{n}f}', f'{self.minimum_cover_with_regard_to_casting_surface():.{n}f}')}"
        rf" = {self.value():.{n}f} \ mm"
    )

    return report

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.result

result() -> CheckResult

Execute check and return standardized result.

This is the primary public API method. Call this to execute your structural check and get a pass/fail result in a standardized format.

Returns:

  • CheckResult

    Standardized Blueprints result object.

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
def result(self) -> CheckResult:
    """Execute check and return standardized result.

    This is the primary public API method. Call this to execute your
    structural check and get a pass/fail result in a standardized format.

    Returns
    -------
    CheckResult
        Standardized Blueprints result object.
    """
    raise NotImplementedError(
        "The result method is not implemented for the NominalConcreteCover check. "
        "This check is intended to be used as a sub-check in a larger durability check according to art. 4.4.1 from EN 1992-1-1."
    )

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.source_docs staticmethod

source_docs() -> list[str]

The source documents for this check.

Returns:

  • list[str]

    List of source document identifiers

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
183
184
185
186
187
188
189
190
191
192
@staticmethod
def source_docs() -> list[str]:
    """The source documents for this check.

    Returns
    -------
    list[str]
        List of source document identifiers
    """
    return [EN_1992_1_1_2004]

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.subchecks

subchecks() -> dict[str, CheckProtocol]

There are no sub-checks for the NominalConcreteCover check as it is intended to be used as a sub-check in a larger durability check according to art. 4.4.1 from EN 1992-1-1.

Returns:

  • dict[str, CheckProtocol]

    Empty dictionary as there are no sub-checks for this check.

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
194
195
196
197
198
199
200
201
202
203
def subchecks(self) -> dict[str, CheckProtocol]:
    """There are no sub-checks for the NominalConcreteCover check as it is intended to be used as a
    sub-check in a larger durability check according to art. 4.4.1 from EN 1992-1-1.

    Returns
    -------
    dict[str, CheckProtocol]
        Empty dictionary as there are no sub-checks for this check.
    """
    return {}

checks.eurocode.concrete.nominal_concrete_cover.NominalConcreteCover.value

value() -> MM

Get the value of the nominal concrete cover.

Source code in blueprints/checks/eurocode/concrete/nominal_concrete_cover.py
168
169
170
171
172
173
def value(self) -> MM:
    """Get the value of the nominal concrete cover."""
    return max(
        self.c_nom(),
        self.minimum_cover_with_regard_to_casting_surface(),
    )