Concrete Mix Design using Indian Standards Module

The main module for computing concrete mix designs as per Indian standards.

Concrete Mix Design using IS 456 and 10262

class civilutils.indian_standards.concrete.ConcreteGrade(*values)[source]

Bases: Enum

Concrete grades as per IS 456.

Parameters:

Enum (str) – The concrete grade designation.

M10 = 'M10'
M15 = 'M15'
M20 = 'M20'
M25 = 'M25'
M30 = 'M30'
M35 = 'M35'
M40 = 'M40'
M45 = 'M45'
M50 = 'M50'
M55 = 'M55'
class civilutils.indian_standards.concrete.MaximumNominalSize(*values)[source]

Bases: Enum

Maximum nominal sizes of aggregates as per IS 456.

Parameters:

Enum (int) – The maximum nominal size in mm.

SIZE_10 = 10
SIZE_20 = 20
SIZE_40 = 40
class civilutils.indian_standards.concrete.CoarseAggregateType(*values)[source]

Bases: Enum

Coarse aggregate types as per IS 456.

Parameters:

Enum (str) – The coarse aggregate type designation.

CRUSHED_STONE = 'Crushed Stone'
GRAVEL = 'Gravel'
ROUNDED_GRAVEL = 'Rounded Gravel'
CRUSHED_ANGULAR = 'Crushed Angular'
class civilutils.indian_standards.concrete.FineAggregateZone(*values)[source]

Bases: Enum

Fine aggregate zones as per IS 456.

Parameters:

Enum (str) – The fine aggregate zone designation.

ZONE_I = 'Zone I'
ZONE_II = 'Zone II'
ZONE_III = 'Zone III'
ZONE_IV = 'Zone IV'
class civilutils.indian_standards.concrete.ExposureCondition(*values)[source]

Bases: Enum

Environmental exposure categories based on IS456 (Table 3).

These categories are used to select design limits (for example maximum water/cement ratio, minimum cement content and cover) according to the service environment the concrete will face.

Members:

  • MILD: Concrete surfaces protected against weather or aggressive conditions (e.g., sheltered or protected locations).

  • MODERATE: Exposed to condensation, rain or continuous wetting (including contact with non-aggressive soil/ground water); sheltered from severe weather.

  • SEVERE: Exposed to severe rain, alternate wetting and drying, occasional freezing when wet, immersion in seawater or coastal environment, or saturated salt air.

  • VERY_SEVERE: Exposed to sea water spray, corrosive fumes, severe freezing, or concrete in contact with or buried under aggressive subsoil/ground water.

  • EXTREME: Members in tidal zones or in direct contact with liquid or solid aggressive chemicals.

MILD = 'Mild'
MODERATE = 'Moderate'
SEVERE = 'Severe'
VERY_SEVERE = 'Very Severe'
EXTREME = 'Extreme'
class civilutils.indian_standards.concrete.Materials(*values)[source]

Bases: Enum

Material types as per IS 456.

Parameters:

Enum (str) – The material designation.

CEMENT = 'Cement'
FINE_AGGREGATE = 'Fine Aggregate'
COARSE_AGGREGATE = 'Coarse Aggregate'
WATER = 'Water'
ADMIXTURE = 'Admixture'
FLY_ASH = 'Fly Ash'
class civilutils.indian_standards.concrete.ChemicalAdmixture(*values)[source]

Bases: Enum

Chemical admixtures as per IS 456.

Parameters:

Enum (str) – The chemical admixture designation.

SUPERPLASTICIZER = 'Superplasticizer'
PLASTICIZER = 'Plasticizer'
__init__(label, default_percentage=20.0)[source]

Initialize the chemical admixture.

Parameters:
  • label (str) – The chemical admixture designation.

  • default_percentage (float, optional) – The default percentage of the admixture. Defaults to 20.0.

class civilutils.indian_standards.concrete.MineralAdmixture(*values)[source]

Bases: Enum

Mineral admixtures as per IS 456.

Parameters:

Enum (str) – The mineral admixture designation.

FLY_ASH = ('Fly Ash', 30.0)
__init__(label, default_percentage=0.0)[source]

Initialize the mineral admixture.

Parameters:
  • label (str) – The mineral admixture designation.

  • default_percentage (float, optional) – The default percentage of replacement for cement. Defaults to 0.0.

class civilutils.indian_standards.concrete.SpecificGravity(material, value)[source]

Bases: object

Specific gravity of materials as per IS 456.

Parameters:
__init__(material, value)[source]

Initialize the specific gravity of a material.

Parameters:
  • material (Materials) – The material type.

  • value (float) – The specific gravity value.

class civilutils.indian_standards.concrete.ConcreteMixDesign(concrete_grade, exposure_condition, specific_gravities, maximum_nominal_size=MaximumNominalSize.SIZE_20, maximum_cement_content=450.0, is_pumpable=True, chemical_admixture=None, chemical_admixture_percentage=None, coarse_aggregate_type=CoarseAggregateType.CRUSHED_ANGULAR, coarse_aggregate_water_absorption=0.0, coarse_aggregate_surface_moisture=0.0, fine_aggregate_zone=FineAggregateZone.ZONE_II, fine_aggregate_surface_moisture=0.0, fine_aggregate_water_absorption=0.0, slump_mm=50.0, mineral_admixture=None, mineral_admixture_percentage=None)[source]

Bases: object

Concrete mix design parameters as per IS 10262 and IS 456.

Parameters:
__init__(concrete_grade, exposure_condition, specific_gravities, maximum_nominal_size=MaximumNominalSize.SIZE_20, maximum_cement_content=450.0, is_pumpable=True, chemical_admixture=None, chemical_admixture_percentage=None, coarse_aggregate_type=CoarseAggregateType.CRUSHED_ANGULAR, coarse_aggregate_water_absorption=0.0, coarse_aggregate_surface_moisture=0.0, fine_aggregate_zone=FineAggregateZone.ZONE_II, fine_aggregate_surface_moisture=0.0, fine_aggregate_water_absorption=0.0, slump_mm=50.0, mineral_admixture=None, mineral_admixture_percentage=None)[source]

Initialize the concrete mix design parameters.

Parameters:
  • concrete_grade (ConcreteGrade) – The grade of concrete (e.g. M20, M25, etc.).

  • exposure_condition (ExposureCondition) – The exposure condition (e.g. Mild, Moderate, Severe).

  • specific_gravities (list[SpecificGravity]) – The specific gravities of the materials.

  • maximum_nominal_size (MaximumNominalSize, optional) – The maximum nominal size of the aggregate. Defaults to MaximumNominalSize.SIZE_20.

  • maximum_cement_content (float, optional) – The maximum cement content (kg/m3). Defaults to 450.0.

  • is_pumpable (str | bool, optional) – Whether the concrete is pumpable. Defaults to True.

  • chemical_admixture (ChemicalAdmixture | None, optional) – The type of chemical admixture used. Defaults to None.

  • chemical_admixture_percentage (float | None, optional) – The percentage of chemical admixture used. Defaults to None.

  • coarse_aggregate_type (CoarseAggregateType, optional) – The type of coarse aggregate used. Defaults to CoarseAggregateType.CRUSHED_ANGULAR.

  • coarse_aggregate_water_absorption (float, optional) – The water absorption of coarse aggregate (%). Defaults to 0.0.

  • coarse_aggregate_surface_moisture (float, optional) – The surface moisture of coarse aggregate (%). Defaults to 0.0.

  • fine_aggregate_zone (FineAggregateZone, optional) – The zone of fine aggregate as per IS 383. Defaults to FineAggregateZone.ZONE_II.

  • fine_aggregate_surface_moisture (float, optional) – The surface moisture of fine aggregate (%). Defaults to 0.0.

  • fine_aggregate_water_absorption (float, optional) – The water absorption of fine aggregate (%). Defaults to 0.0.

  • slump_mm (float, optional) – The slump of concrete (mm). Defaults to 50.0.

  • mineral_admixture (MineralAdmixture | None, optional) – The type of mineral admixture used. Defaults to None.

  • mineral_admixture_percentage (float | None, optional) – The percentage of mineral admixture used. Defaults to None.

Raises:

ValueError – If any of the parameters are invalid.

calculate_volume_based_on_mass_and_specific_gravity(mass, specific_gravity, round_value=3)[source]

Calculate the volume based on mass and specific gravity.

Parameters:
  • mass (float) – The mass of the material.

  • specific_gravity (float) – The specific gravity of the material.

  • round_value (int) – The number of decimal places to round the result.

Returns:

The volume of the material.

Return type:

float

compute_mix_design(display_result=False)[source]

Compute the concrete mix design based on IS 456 and IS 10262.

Parameters:

display_result (bool, optional) – Whether to display the calculation results. Defaults to False.

Returns:

A dictionary containing the mix design parameters.

Return type:

dict

compute_mix_design_for_volume(volume_m3, display_result=False)[source]

Compute mix quantities for a specified volume (multiples of the 1 m^3 design).

This method calls compute_mix_design() to obtain quantities per 1 m^3 and scales the masses and volumes by the requested volume_m3.

Parameters:
  • volume_m3 (float) – Target concrete volume in m^3 (must be > 0).

  • display_result (bool, optional) – Whether to print a summary similar to compute_mix_design.

Returns:

A dictionary containing scaled mix design parameters for the requested volume.

Return type:

dict