Skip to content

fcfim/Concrete-Mix-Design-IPT-Method

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧱 Concrete Mix Design API - IPT/EPUSP Method

Next.js TypeScript License Norma Norma Norma

A modern REST API for concrete mix design using the IPT/EPUSP method, widely adopted in Brazil for precise concrete proportioning based on experimental data.

🎯 Features

  • IPT/EPUSP Method - Complete implementation with Abrams, Lyse, and Molinari laws
  • NBR Compliance - Automatic verification against NBR 6118:2023 and NBR 12655:2022
  • Interactive Playground - Web interface for real-time testing
  • Dosage Charts - Visualization of regression curves
  • Clean Architecture - Maintainable and testable codebase
  • Edge Runtime - Fast, globally distributed API

πŸ“š Documentation

Document Description
API Reference Complete endpoint documentation with examples
Mathematical Models Abrams, Lyse, and Molinari laws explained
Normative Standards NBR 6118, NBR 12655, NBR 8953
Architecture Clean Architecture layers and data flow

πŸš€ Quick Start

Installation

# Clone the repository
git clone https://github.com/fcfim/Concrete-Mix-Design-IPT-Method.git
cd Concrete-Mix-Design-IPT-Method

# Install dependencies
npm install

# Start development server
npm run dev

First API Call

curl -X POST http://localhost:3000/api/v1/dosage \
  -H "Content-Type: application/json" \
  -d '{
    "experimentalPoints": [
      {"m": 3.5, "ac": 0.45, "fcj": 42, "density": 2350},
      {"m": 5.0, "ac": 0.58, "fcj": 32, "density": 2300},
      {"m": 6.5, "ac": 0.72, "fcj": 22, "density": 2250}
    ],
    "target": {
      "fck": 30,
      "sd": 5.5,
      "aggressivenessClass": 2,
      "elementType": "CA",
      "slump": 100,
      "mortarContent": 52
    }
  }'

Response

{
  "success": true,
  "data": {
    "finalTrace": {
      "cement": 1,
      "sand": 1.56,
      "gravel": 2.36,
      "water": 0.49
    },
    "consumption": {
      "cement": 432,
      "sand": 674,
      "gravel": 1019,
      "water": 212
    },
    "parameters": {
      "fcjTarget": 39.08,
      "targetAC": 0.486,
      "targetM": 3.92
    }
  }
}

πŸ”¬ How It Works

The IPT/EPUSP method uses three experimental traces (Rich, Pilot, Lean) to determine optimal concrete proportions:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   INPUT: 3 Experimental Traces                              β”‚
β”‚   Rico:   m=3.5, a/c=0.45, fcj=42 MPa                       β”‚
β”‚   Piloto: m=5.0, a/c=0.58, fcj=32 MPa                       β”‚
β”‚   Pobre:  m=6.5, a/c=0.72, fcj=22 MPa                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚   1️⃣ Abrams Law: fcj = k₁ / kβ‚‚^(a/c) β†’ target a/c           β”‚
β”‚   2️⃣ Lyse Law:   m = k₃ + kβ‚„ Γ— (a/c) β†’ target m             β”‚
β”‚   3️⃣ Molinari:   C = 1000 / (kβ‚… + k₆ Γ— m) β†’ cement kg/mΒ³    β”‚
β”‚                                                             β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚   OUTPUT: Final Unit Trace                                  β”‚
β”‚   1 : 1.56 : 2.36 : 0.49                                    β”‚
β”‚   (cement : sand : gravel : water)                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β†’ See Mathematical Models for detailed formulas.


πŸ“‹ API Reference

POST /api/v1/dosage

Calculate concrete mix design from experimental data.

Request Body

Field Type Description
experimentalPoints array Minimum 3 experimental traces
experimentalPoints[].m number Dry trace ratio (0.1-15)
experimentalPoints[].ac number Water/cement ratio (0.1-1.0)
experimentalPoints[].fcj number Compressive strength (MPa)
experimentalPoints[].density number Fresh density (kg/mΒ³)
target.fck number Characteristic strength (MPa)
target.sd number Standard deviation (MPa)
target.aggressivenessClass 1-4 Environmental class (NBR 6118)
target.elementType "CA"/"CP" Reinforced/Prestressed
target.slump number Slump test (mm)
target.mortarContent number Mortar content (%)

β†’ See API Reference for complete documentation.


πŸ›οΈ Normative Standards

This API enforces Brazilian normative requirements:

Standard Description Key Rules
NBR 6118:2023 Concrete structures Max a/c, min fck per environment
NBR 12655:2022 Production control f_cj = f_ck + 1.65Γ—Sd formula
NBR 8953:2015 Concrete classes Strength classifications

β†’ See Normative Standards for detailed tables.


πŸ—οΈ Architecture

Clean Architecture with 4 layers:

src/
β”œβ”€β”€ app/              # Presentation (Next.js routes, UI)
β”œβ”€β”€ core/
β”‚   β”œβ”€β”€ domain/       # Entities (TraceResult, DosageTarget)
β”‚   β”œβ”€β”€ application/  # Use Cases (CalculateDosageUseCase)
β”‚   └── infrastructure/
β”‚       β”œβ”€β”€ math/     # Abrams, Lyse, Molinari services
β”‚       └── normative/# NBR 6118, NBR 12655 services
└── shared/
    └── lib/schemas/  # Zod validation

β†’ See Architecture for data flow diagrams.


πŸ› οΈ Tech Stack

Technology Purpose
Next.js 15 Framework (App Router)
TypeScript Type safety
Zod Runtime validation
Recharts Dosage charts
Tailwind CSS Styling
shadcn/ui UI components

πŸ“Š Playground

Access the interactive playground at http://localhost:3000:

  • Pre-filled experimental data
  • Real-time calculation
  • Dosage charts (Abrams, Lyse, Molinari)
  • JSON response viewer
  • Dark/Light mode toggle

πŸ“– References

Normative Documents

Standard Title
NBR 6118:2023 Projeto de estruturas de concreto
NBR 12655:2022 Concreto - Preparo e controle
NBR 8953:2015 ClassificaΓ§Γ£o do concreto

Technical Resources

  • IBRACON - Instituto Brasileiro do Concreto
  • IPT/EPUSP Method - Escola PolitΓ©cnica USP
  • TUTIKIAN, Bernardo F.; HELENE, Paulo. Dosagem dos Concretos de Cimento Portland. In: ISAIA, Geraldo Cechella (ed.). Concreto: CiΓͺncia e Tecnologia. SΓ£o Paulo: Ibracon, 2011. Cap. 12, p. 38. DisponΓ­vel em: https://www.phd.eng.br/wpcontent/uploads/2014/07/lc56.pdf. Acesso em: 12 ago. 2021.

πŸ‘¨β€πŸ’» Author

Filipe Carboni Fim - Civil Engineer

GitHub LinkedIn


πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


🀝 Contributing

Contributions are welcome! Please read our contributing guidelines before submitting a PR.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

About

REST API for concrete mix design using the IPT/EPUSP method. Includes Abrams, Lyse, and Molinari laws with NBR compliance.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors