920 lines
26 KiB
TypeScript
920 lines
26 KiB
TypeScript
/**
|
|
* BASE DE DONNÉES ULTRA-DÉTAILLÉE DES MATÉRIAUX BTP
|
|
* Système le plus ambitieux d'Afrique - Tous les détails techniques
|
|
* Spécifications pour climat tropical, normes africaines, calculs précis
|
|
*/
|
|
|
|
// ================== TYPES DE BASE ==================
|
|
|
|
export interface DimensionsTechniques {
|
|
longueur: number; // mm
|
|
largeur: number; // mm
|
|
hauteur: number; // mm
|
|
epaisseur?: number; // mm
|
|
diametre?: number; // mm pour tubes, fers ronds
|
|
rayonCourbure?: number; // mm pour éléments courbes
|
|
tolerance: number; // mm - tolérance de fabrication
|
|
}
|
|
|
|
export interface ProprietesPhysiques {
|
|
densite: number; // kg/m³
|
|
resistanceCompression: number; // MPa
|
|
resistanceTraction: number; // MPa
|
|
resistanceFlexion: number; // MPa
|
|
moduleElasticite: number; // GPa
|
|
coefficientDilatation: number; // /°C
|
|
absorptionEau: number; // %
|
|
porosite: number; // %
|
|
conductiviteThermique: number; // W/m.K
|
|
resistanceGel: boolean;
|
|
resistanceIntemperies: 'EXCELLENT' | 'BON' | 'MOYEN' | 'FAIBLE';
|
|
}
|
|
|
|
export interface SpecificationsClimatiques {
|
|
temperatureMin: number; // °C
|
|
temperatureMax: number; // °C
|
|
humiditeMax: number; // %
|
|
resistanceUV: 'EXCELLENT' | 'BON' | 'MOYEN' | 'FAIBLE';
|
|
resistancePluie: 'EXCELLENT' | 'BON' | 'MOYEN' | 'FAIBLE';
|
|
resistanceVentFort: boolean;
|
|
adaptationSaison: {
|
|
saison: 'SECHE' | 'PLUIES' | 'HARMATTAN';
|
|
recommandations: string[];
|
|
}[];
|
|
}
|
|
|
|
export interface NormesAfricaines {
|
|
norme: string; // ex: "NF EN 197-1", "ASTM C150", "BS 12"
|
|
classification: string;
|
|
certificationRequise: boolean;
|
|
organismeControle: string[];
|
|
testsObligatoires: string[];
|
|
marquageCE: boolean;
|
|
conformiteEAC?: boolean; // East African Community
|
|
conformiteECOWAS?: boolean; // Economic Community of West African States
|
|
conformiteSADC?: boolean; // Southern African Development Community
|
|
}
|
|
|
|
export interface CalculsQuantification {
|
|
uniteBase: string; // m², m³, kg, pièce, ml
|
|
facteurPerte: number; // % de perte normale
|
|
facteurSurapprovisionnement: number; // % de marge sécurité
|
|
modeFourniture: 'VRAC' | 'PALETTE' | 'SACS' | 'PIECES';
|
|
conditionnement: {
|
|
quantiteParUnite: number;
|
|
poidsUnitaire: number; // kg
|
|
dimensionsEmballage: DimensionsTechniques;
|
|
};
|
|
calculAutomatique: {
|
|
formule: string; // formule de calcul automatique
|
|
parametres: string[]; // paramètres nécessaires
|
|
};
|
|
}
|
|
|
|
export interface MaterielBTP {
|
|
id: string;
|
|
nom: string;
|
|
categorie: 'GROS_OEUVRE' | 'SECOND_OEUVRE' | 'FINITIONS' | 'ISOLATION' | 'ETANCHEITE' | 'EQUIPEMENTS';
|
|
sousCategorie: string;
|
|
|
|
// Spécifications techniques détaillées
|
|
dimensions: DimensionsTechniques;
|
|
proprietes: ProprietesPhysiques;
|
|
climatique: SpecificationsClimatiques;
|
|
normes: NormesAfricaines;
|
|
quantification: CalculsQuantification;
|
|
|
|
// Informations commerciales
|
|
marques: {
|
|
nom: string;
|
|
origine: string;
|
|
certifie: boolean;
|
|
prix: {
|
|
devise: 'XOF' | 'XAF' | 'USD' | 'EUR';
|
|
montant: number;
|
|
unite: string;
|
|
}[];
|
|
}[];
|
|
|
|
fournisseurs: {
|
|
nom: string;
|
|
pays: string;
|
|
ville: string;
|
|
delaiLivraison: number; // jours
|
|
quantiteMinimale: number;
|
|
conditions: string[];
|
|
}[];
|
|
|
|
// Mise en œuvre
|
|
miseEnOeuvre: {
|
|
outillageNecessaire: string[];
|
|
competencesRequises: string[];
|
|
tempsUnitaire: number; // minutes par unité
|
|
conditionsMeteo: string[];
|
|
temperatureOptimale: { min: number; max: number };
|
|
precautions: string[];
|
|
};
|
|
|
|
// Qualité et contrôle
|
|
controleQualite: {
|
|
testReception: string[];
|
|
frequenceControle: string;
|
|
critereAcceptation: string[];
|
|
defautsFrequents: string[];
|
|
};
|
|
|
|
// Durabilité et maintenance
|
|
durabilite: {
|
|
dureeVieEstimee: number; // années
|
|
maintenanceRequise: boolean;
|
|
frequenceMaintenance?: string;
|
|
signesdUsure: string[];
|
|
remplacement: string[];
|
|
};
|
|
}
|
|
|
|
// ================== BASE DE DONNÉES MATÉRIAUX ==================
|
|
|
|
export const MATERIAUX_BTP_DATABASE: MaterielBTP[] = [
|
|
|
|
// =================== MAÇONNERIE ===================
|
|
{
|
|
id: 'brique-rouge-15x10x5',
|
|
nom: 'Brique Rouge Pleine 15x10x5cm',
|
|
categorie: 'GROS_OEUVRE',
|
|
sousCategorie: 'Maçonnerie - Briques',
|
|
|
|
dimensions: {
|
|
longueur: 150,
|
|
largeur: 100,
|
|
hauteur: 50,
|
|
tolerance: 2
|
|
},
|
|
|
|
proprietes: {
|
|
densite: 1800,
|
|
resistanceCompression: 15,
|
|
resistanceTraction: 2.5,
|
|
resistanceFlexion: 4.2,
|
|
moduleElasticite: 12000,
|
|
coefficientDilatation: 0.000006,
|
|
absorptionEau: 12,
|
|
porosite: 18,
|
|
conductiviteThermique: 0.85,
|
|
resistanceGel: true,
|
|
resistanceIntemperies: 'EXCELLENT'
|
|
},
|
|
|
|
climatique: {
|
|
temperatureMin: -10,
|
|
temperatureMax: 60,
|
|
humiditeMax: 95,
|
|
resistanceUV: 'EXCELLENT',
|
|
resistancePluie: 'EXCELLENT',
|
|
resistanceVentFort: true,
|
|
adaptationSaison: [
|
|
{
|
|
saison: 'PLUIES',
|
|
recommandations: [
|
|
'Protection contre l\'eau pendant stockage',
|
|
'Séchage avant pose si humide',
|
|
'Éviter pose sous pluie battante'
|
|
]
|
|
},
|
|
{
|
|
saison: 'SECHE',
|
|
recommandations: [
|
|
'Humidification avant pose',
|
|
'Protection solaire du mortier',
|
|
'Arrosage après pose'
|
|
]
|
|
}
|
|
]
|
|
},
|
|
|
|
normes: {
|
|
norme: 'NF EN 771-1',
|
|
classification: 'M10 - FB 15',
|
|
certificationRequise: true,
|
|
organismeControle: ['CSTB', 'CERIB'],
|
|
testsObligatoires: [
|
|
'Résistance compression',
|
|
'Absorption d\'eau',
|
|
'Dimensions et tolérances',
|
|
'Gel/dégel'
|
|
],
|
|
marquageCE: true,
|
|
conformiteECOWAS: true
|
|
},
|
|
|
|
quantification: {
|
|
uniteBase: 'pièce',
|
|
facteurPerte: 5,
|
|
facteurSurapprovisionnement: 10,
|
|
modeFourniture: 'PALETTE',
|
|
conditionnement: {
|
|
quantiteParUnite: 500,
|
|
poidsUnitaire: 1.35, // kg par brique
|
|
dimensionsEmballage: {
|
|
longueur: 1200,
|
|
largeur: 800,
|
|
hauteur: 1000,
|
|
tolerance: 0
|
|
}
|
|
},
|
|
calculAutomatique: {
|
|
formule: '(surface_mur * 1000000) / (longueur * hauteur) / epaisseur_mur_en_briques',
|
|
parametres: ['surface_mur_m2', 'epaisseur_mur_cm']
|
|
}
|
|
},
|
|
|
|
marques: [
|
|
{
|
|
nom: 'Briqueterie du Sahel',
|
|
origine: 'Burkina Faso',
|
|
certifie: true,
|
|
prix: [
|
|
{ devise: 'XOF', montant: 45, unite: 'pièce' },
|
|
{ devise: 'XOF', montant: 22500, unite: 'palette_500' }
|
|
]
|
|
},
|
|
{
|
|
nom: 'CIMAF Briques',
|
|
origine: 'Côte d\'Ivoire',
|
|
certifie: true,
|
|
prix: [
|
|
{ devise: 'XOF', montant: 50, unite: 'pièce' },
|
|
{ devise: 'XOF', montant: 24000, unite: 'palette_500' }
|
|
]
|
|
}
|
|
],
|
|
|
|
fournisseurs: [
|
|
{
|
|
nom: 'Matériaux Modernes Abidjan',
|
|
pays: 'Côte d\'Ivoire',
|
|
ville: 'Abidjan',
|
|
delaiLivraison: 3,
|
|
quantiteMinimale: 1000,
|
|
conditions: ['Paiement comptant -3%', 'Livraison gratuite >5000 pièces']
|
|
}
|
|
],
|
|
|
|
miseEnOeuvre: {
|
|
outillageNecessaire: [
|
|
'Truelle',
|
|
'Niveau à bulle',
|
|
'Cordeau',
|
|
'Seau mortier',
|
|
'Taloche',
|
|
'Martelet caoutchouc'
|
|
],
|
|
competencesRequises: ['Maçon qualifié', 'Lecture de plan'],
|
|
tempsUnitaire: 3, // 3min par brique posée
|
|
conditionsMeteo: ['Pas de pluie', 'Température > 5°C'],
|
|
temperatureOptimale: { min: 15, max: 35 },
|
|
precautions: [
|
|
'Humidifier les briques avant pose',
|
|
'Mortier dosé à 350kg/m³',
|
|
'Joints de 10-12mm',
|
|
'Appareillage en quinconce'
|
|
]
|
|
},
|
|
|
|
controleQualite: {
|
|
testReception: [
|
|
'Vérification dimensions',
|
|
'Test sonore (percussion)',
|
|
'Contrôle visuel fissures',
|
|
'Vérification planéité'
|
|
],
|
|
frequenceControle: '1% des briques par lot',
|
|
critereAcceptation: [
|
|
'Dimensions ±2mm',
|
|
'Pas de fissures > 1mm',
|
|
'Couleur homogène',
|
|
'Son clair à la percussion'
|
|
],
|
|
defautsFrequents: [
|
|
'Fissures de séchage',
|
|
'Variations dimensionnelles',
|
|
'Éclats d\'angles',
|
|
'Couleur hétérogène'
|
|
]
|
|
},
|
|
|
|
durabilite: {
|
|
dureeVieEstimee: 100,
|
|
maintenanceRequise: false,
|
|
signesdUsure: [
|
|
'Efflorescence',
|
|
'Fissuration',
|
|
'Érosion des joints'
|
|
],
|
|
remplacement: [
|
|
'Reprise de maçonnerie localisée',
|
|
'Rejointoiement si nécessaire'
|
|
]
|
|
}
|
|
},
|
|
|
|
// =================== BÉTON ARMÉ - FER À BÉTON ===================
|
|
{
|
|
id: 'fer-beton-ha-12mm',
|
|
nom: 'Fer à Béton HA 12mm - Haute Adhérence',
|
|
categorie: 'GROS_OEUVRE',
|
|
sousCategorie: 'Béton Armé - Armatures',
|
|
|
|
dimensions: {
|
|
longueur: 12000, // barre de 12m standard
|
|
largeur: 0,
|
|
hauteur: 0,
|
|
diametre: 12,
|
|
tolerance: 0.5
|
|
},
|
|
|
|
proprietes: {
|
|
densite: 7850, // kg/m³ acier
|
|
resistanceCompression: 500, // MPa (limite élastique)
|
|
resistanceTraction: 550, // MPa
|
|
resistanceFlexion: 550,
|
|
moduleElasticite: 200000, // GPa
|
|
coefficientDilatation: 0.000012,
|
|
absorptionEau: 0,
|
|
porosite: 0,
|
|
conductiviteThermique: 50,
|
|
resistanceGel: true,
|
|
resistanceIntemperies: 'MOYEN' // nécessite protection
|
|
},
|
|
|
|
climatique: {
|
|
temperatureMin: -40,
|
|
temperatureMax: 80,
|
|
humiditeMax: 100,
|
|
resistanceUV: 'BON',
|
|
resistancePluie: 'MOYEN', // corrosion possible
|
|
resistanceVentFort: true,
|
|
adaptationSaison: [
|
|
{
|
|
saison: 'PLUIES',
|
|
recommandations: [
|
|
'Stockage sur chevrons, hors sol',
|
|
'Bâchage étanche obligatoire',
|
|
'Contrôle rouille avant mise en œuvre',
|
|
'Nettoyage si corrosion superficielle'
|
|
]
|
|
},
|
|
{
|
|
saison: 'SECHE',
|
|
recommandations: [
|
|
'Protection UV des barres stockées',
|
|
'Éviter surchauffe >60°C',
|
|
'Humidification du béton de coulage'
|
|
]
|
|
}
|
|
]
|
|
},
|
|
|
|
normes: {
|
|
norme: 'NF A 35-080-1',
|
|
classification: 'FeE500 - HA',
|
|
certificationRequise: true,
|
|
organismeControle: ['AFNOR', 'CSTB'],
|
|
testsObligatoires: [
|
|
'Traction - limite élastique',
|
|
'Traction - résistance rupture',
|
|
'Allongement rupture',
|
|
'Pliage-dépliage',
|
|
'Géométrie des verrous'
|
|
],
|
|
marquageCE: true,
|
|
conformiteECOWAS: true,
|
|
conformiteSADC: true
|
|
},
|
|
|
|
quantification: {
|
|
uniteBase: 'kg',
|
|
facteurPerte: 8, // chutes + façonnage
|
|
facteurSurapprovisionnement: 15,
|
|
modeFourniture: 'VRAC',
|
|
conditionnement: {
|
|
quantiteParUnite: 2000, // kg par lot
|
|
poidsUnitaire: 0.888, // kg/ml pour Ø12
|
|
dimensionsEmballage: {
|
|
longueur: 12000,
|
|
largeur: 200,
|
|
hauteur: 200,
|
|
tolerance: 0
|
|
}
|
|
},
|
|
calculAutomatique: {
|
|
formule: 'surface_dalle * epaisseur_dalle * densite_armature_kg_m3',
|
|
parametres: ['surface_m2', 'epaisseur_cm', 'ratio_armature_kg_m3']
|
|
}
|
|
},
|
|
|
|
marques: [
|
|
{
|
|
nom: 'ACIERIES du Bénin',
|
|
origine: 'Bénin',
|
|
certifie: true,
|
|
prix: [
|
|
{ devise: 'XOF', montant: 850, unite: 'kg' },
|
|
{ devise: 'XOF', montant: 1700000, unite: 'tonne' }
|
|
]
|
|
},
|
|
{
|
|
nom: 'SIDEX Mali',
|
|
origine: 'Mali',
|
|
certifie: true,
|
|
prix: [
|
|
{ devise: 'XOF', montant: 820, unite: 'kg' },
|
|
{ devise: 'XOF', montant: 1640000, unite: 'tonne' }
|
|
]
|
|
}
|
|
],
|
|
|
|
fournisseurs: [
|
|
{
|
|
nom: 'Négoce Sidérurgie Ouest-Afrique',
|
|
pays: 'Sénégal',
|
|
ville: 'Dakar',
|
|
delaiLivraison: 7,
|
|
quantiteMinimale: 500,
|
|
conditions: ['Transport inclus >1T', 'Façonnage sur demande']
|
|
}
|
|
],
|
|
|
|
miseEnOeuvre: {
|
|
outillageNecessaire: [
|
|
'Coupe-boulons Ø12',
|
|
'Cintreuse manuelle',
|
|
'Ployeur d\'acier',
|
|
'Ligatures fil de fer',
|
|
'Mètre ruban',
|
|
'Équerre de maçon'
|
|
],
|
|
competencesRequises: ['Ferrailleur qualifié', 'Lecture plans ferraillage'],
|
|
tempsUnitaire: 120, // 2h par 100kg façonnage + pose
|
|
conditionsMeteo: ['Pas de pluie pendant bétonnage'],
|
|
temperatureOptimale: { min: 5, max: 35 },
|
|
precautions: [
|
|
'Enrobage minimum 2,5cm',
|
|
'Recouvrement 40Ø minimum',
|
|
'Calage armatures avec cales béton',
|
|
'Vérification espacement barres',
|
|
'Nettoyage rouille si nécessaire'
|
|
]
|
|
},
|
|
|
|
controleQualite: {
|
|
testReception: [
|
|
'Vérification marquage acier',
|
|
'Contrôle diamètre pied à coulisse',
|
|
'Essai pliage manuel',
|
|
'Contrôle rectitude',
|
|
'État de surface (rouille)'
|
|
],
|
|
frequenceControle: '10% des barres par livraison',
|
|
critereAcceptation: [
|
|
'Marquage conforme norme',
|
|
'Diamètre ±0,5mm',
|
|
'Pas de rouille adhérente',
|
|
'Rectitude <5mm/m',
|
|
'Nervures conformes'
|
|
],
|
|
defautsFrequents: [
|
|
'Corrosion superficielle',
|
|
'Défauts de nervurage',
|
|
'Variations de diamètre',
|
|
'Courbure excessive'
|
|
]
|
|
},
|
|
|
|
durabilite: {
|
|
dureeVieEstimee: 50,
|
|
maintenanceRequise: false,
|
|
signesdUsure: [
|
|
'Corrosion si enrobage insuffisant',
|
|
'Fissuration béton par gonflement rouille'
|
|
],
|
|
remplacement: [
|
|
'Reprise béton si corrosion avancée',
|
|
'Renforcement structure si nécessaire'
|
|
]
|
|
}
|
|
},
|
|
|
|
// =================== BÉTON - CIMENT ===================
|
|
{
|
|
id: 'ciment-portland-cem1-525',
|
|
nom: 'Ciment Portland CEM I 52.5 N',
|
|
categorie: 'GROS_OEUVRE',
|
|
sousCategorie: 'Béton - Liants',
|
|
|
|
dimensions: {
|
|
longueur: 0,
|
|
largeur: 0,
|
|
hauteur: 0,
|
|
tolerance: 0
|
|
},
|
|
|
|
proprietes: {
|
|
densite: 3150, // kg/m³ ciment pur
|
|
resistanceCompression: 52.5, // MPa à 28j
|
|
resistanceTraction: 0,
|
|
resistanceFlexion: 0,
|
|
moduleElasticite: 0,
|
|
coefficientDilatation: 0.00001,
|
|
absorptionEau: 0,
|
|
porosite: 0,
|
|
conductiviteThermique: 1.4,
|
|
resistanceGel: true,
|
|
resistanceIntemperies: 'EXCELLENT'
|
|
},
|
|
|
|
climatique: {
|
|
temperatureMin: 5,
|
|
temperatureMax: 50,
|
|
humiditeMax: 85,
|
|
resistanceUV: 'EXCELLENT',
|
|
resistancePluie: 'EXCELLENT',
|
|
resistanceVentFort: true,
|
|
adaptationSaison: [
|
|
{
|
|
saison: 'PLUIES',
|
|
recommandations: [
|
|
'Stockage impérativement au sec',
|
|
'Palettes surélevées obligatoires',
|
|
'Bâchage étanche renforcé',
|
|
'Rotation stock (premier entré = premier sorti)',
|
|
'Contrôle prise avant usage si humidité'
|
|
]
|
|
},
|
|
{
|
|
saison: 'SECHE',
|
|
recommandations: [
|
|
'Protection chaleur excessive >40°C',
|
|
'Humidification granulats et eau',
|
|
'Coulage tôt le matin ou tard le soir',
|
|
'Cure humide prolongée 7 jours minimum'
|
|
]
|
|
}
|
|
]
|
|
},
|
|
|
|
normes: {
|
|
norme: 'NF EN 197-1',
|
|
classification: 'CEM I 52.5 N',
|
|
certificationRequise: true,
|
|
organismeControle: ['AFNOR', 'CERIB'],
|
|
testsObligatoires: [
|
|
'Résistance compression 2j, 7j, 28j',
|
|
'Temps de prise début/fin',
|
|
'Expansion Le Chatelier',
|
|
'Finesse Blaine',
|
|
'Composition chimique'
|
|
],
|
|
marquageCE: true,
|
|
conformiteECOWAS: true
|
|
},
|
|
|
|
quantification: {
|
|
uniteBase: 'kg',
|
|
facteurPerte: 3,
|
|
facteurSurapprovisionnement: 10,
|
|
modeFourniture: 'SACS',
|
|
conditionnement: {
|
|
quantiteParUnite: 50, // sac de 50kg
|
|
poidsUnitaire: 50,
|
|
dimensionsEmballage: {
|
|
longueur: 600,
|
|
largeur: 400,
|
|
hauteur: 120,
|
|
tolerance: 0
|
|
}
|
|
},
|
|
calculAutomatique: {
|
|
formule: 'volume_beton_m3 * dosage_ciment_kg_m3',
|
|
parametres: ['volume_beton_m3', 'classe_resistance', 'type_ouvrage']
|
|
}
|
|
},
|
|
|
|
marques: [
|
|
{
|
|
nom: 'CIMTOGO',
|
|
origine: 'Togo',
|
|
certifie: true,
|
|
prix: [
|
|
{ devise: 'XOF', montant: 4200, unite: 'sac_50kg' },
|
|
{ devise: 'XOF', montant: 84, unite: 'kg' }
|
|
]
|
|
},
|
|
{
|
|
nom: 'CIMENTS du Sahel',
|
|
origine: 'Burkina Faso',
|
|
certifie: true,
|
|
prix: [
|
|
{ devise: 'XOF', montant: 4000, unite: 'sac_50kg' },
|
|
{ devise: 'XOF', montant: 80, unite: 'kg' }
|
|
]
|
|
}
|
|
],
|
|
|
|
fournisseurs: [
|
|
{
|
|
nom: 'Distribution BTP Sahel',
|
|
pays: 'Mali',
|
|
ville: 'Bamako',
|
|
delaiLivraison: 2,
|
|
quantiteMinimale: 1000,
|
|
conditions: ['Livraison camion souffleur', 'Stockage silo si >5T']
|
|
}
|
|
],
|
|
|
|
miseEnOeuvre: {
|
|
outillageNecessaire: [
|
|
'Bétonnière ou centrale béton',
|
|
'Pelle, seau doseur',
|
|
'Vibreur béton',
|
|
'Taloche, règle',
|
|
'Pulvérisateur cure',
|
|
'Bâches protection'
|
|
],
|
|
competencesRequises: ['Maçon béton armé', 'Dosage béton'],
|
|
tempsUnitaire: 30, // 30min par m³ fabrication + coulage
|
|
conditionsMeteo: ['Température 5-35°C', 'Pas de gel', 'Pas pluie battante'],
|
|
temperatureOptimale: { min: 15, max: 25 },
|
|
precautions: [
|
|
'Dosage précis selon classe résistance',
|
|
'Malaxage minimum 2 minutes',
|
|
'Coulage dans les 1h30',
|
|
'Vibration complète sans ségrégation',
|
|
'Cure humide 7j minimum climat tropical'
|
|
]
|
|
},
|
|
|
|
controleQualite: {
|
|
testReception: [
|
|
'Vérification date fabrication <3 mois',
|
|
'Contrôle emballage (pas de trous)',
|
|
'Test prise main (pas de grumeaux durs)',
|
|
'Couleur gris homogène',
|
|
'Marquage conforme sac'
|
|
],
|
|
frequenceControle: '1 sac par palette',
|
|
critereAcceptation: [
|
|
'Date <90j',
|
|
'Pas de prise en sac',
|
|
'Pas de contamination',
|
|
'Marquage CE visible',
|
|
'Finesse tactile correcte'
|
|
],
|
|
defautsFrequents: [
|
|
'Prise prématurée (humidité)',
|
|
'Grumeaux durs',
|
|
'Contamination plâtre',
|
|
'Sacs percés'
|
|
]
|
|
},
|
|
|
|
durabilite: {
|
|
dureeVieEstimee: 100,
|
|
maintenanceRequise: false,
|
|
signesdUsure: [
|
|
'Carbonatation surface',
|
|
'Microfissuration retrait',
|
|
'Décoloration'
|
|
],
|
|
remplacement: [
|
|
'Réparation béton si dégradation',
|
|
'Protection surface si nécessaire'
|
|
]
|
|
}
|
|
}
|
|
|
|
// [La base sera étendue avec TOUS les matériaux : sables, graviers, carrelages,
|
|
// peintures, isolants, menuiseries, plomberie, électricité, etc.]
|
|
];
|
|
|
|
// ================== CALCULS AUTOMATIQUES AVANCÉS ==================
|
|
|
|
export class CalculateurBTPAfrique {
|
|
|
|
/**
|
|
* Calcul ultra-précis quantité briques pour mur
|
|
*/
|
|
static calculerBriquesMur(params: {
|
|
longueur: number; // m
|
|
hauteur: number; // m
|
|
epaisseur: number; // cm (10, 15, 20)
|
|
ouvertures?: { largeur: number; hauteur: number }[]; // portes/fenêtres
|
|
typeAppareillage: 'DROIT' | 'QUINCONCE' | 'FLAMAND';
|
|
jointHorizontal: number; // mm (généralement 10-12)
|
|
jointVertical: number; // mm (généralement 10-12)
|
|
}) {
|
|
|
|
const { longueur, hauteur, epaisseur, ouvertures = [],
|
|
typeAppareillage, jointHorizontal, jointVertical } = params;
|
|
|
|
// Dimensions brique standard (peut être paramétrable)
|
|
const brique = MATERIAUX_BTP_DATABASE.find(m => m.id === 'brique-rouge-15x10x5')!;
|
|
const largeurBrique = brique.dimensions.longueur; // 150mm
|
|
const hauteurBrique = brique.dimensions.hauteur; // 50mm
|
|
|
|
// Surface nette mur
|
|
let surfaceMur = longueur * hauteur;
|
|
|
|
// Déduction ouvertures
|
|
for (const ouverture of ouvertures) {
|
|
surfaceMur -= ouverture.largeur * ouverture.hauteur;
|
|
}
|
|
|
|
// Nombre de briques par m²
|
|
const largeurAvecJoint = largeurBrique + jointVertical;
|
|
const hauteurAvecJoint = hauteurBrique + jointHorizontal;
|
|
|
|
const briquesParM2 = (1000 / largeurAvecJoint) * (1000 / hauteurAvecJoint);
|
|
|
|
// Nombre briques selon appareillage
|
|
let coefficientAppareillage = 1;
|
|
switch (typeAppareillage) {
|
|
case 'QUINCONCE':
|
|
coefficientAppareillage = 1.02; // légère surconsommation
|
|
break;
|
|
case 'FLAMAND':
|
|
coefficientAppareillage = 1.15; // appareillage décoratif
|
|
break;
|
|
}
|
|
|
|
// Épaisseur mur (nombre de briques en épaisseur)
|
|
const nombreCouchesEpaisseur = Math.ceil(epaisseur * 10 / brique.dimensions.largeur);
|
|
|
|
const nombreBriques = Math.ceil(
|
|
surfaceMur * briquesParM2 * coefficientAppareillage * nombreCouchesEpaisseur
|
|
);
|
|
|
|
// Calcul mortier
|
|
const volumeMortier = this.calculerMortierMaconnerie({
|
|
nombreBriques,
|
|
jointHorizontal,
|
|
jointVertical,
|
|
surfaceMur,
|
|
epaisseurMur: epaisseur
|
|
});
|
|
|
|
return {
|
|
nombreBriques,
|
|
briquesParM2: Math.round(briquesParM2),
|
|
surfaceNette: surfaceMur,
|
|
coefficientAppareillage,
|
|
mortier: volumeMortier,
|
|
details: {
|
|
largeurAvecJoint,
|
|
hauteurAvecJoint,
|
|
nombreCouchesEpaisseur
|
|
}
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Calcul volume mortier pour maçonnerie
|
|
*/
|
|
static calculerMortierMaconnerie(params: {
|
|
nombreBriques: number;
|
|
jointHorizontal: number; // mm
|
|
jointVertical: number; // mm
|
|
surfaceMur: number; // m²
|
|
epaisseurMur: number; // cm
|
|
}) {
|
|
|
|
const { nombreBriques, jointHorizontal, jointVertical, surfaceMur, epaisseurMur } = params;
|
|
|
|
// Volume joints approximatif = 15% du volume briques
|
|
const volumeBriques = nombreBriques * 0.15 * 0.10 * 0.05; // m³
|
|
const volumeMortier = volumeBriques * 0.25; // 25% du volume briques
|
|
|
|
// Dosage mortier standard maçonnerie : 350kg ciment/m³
|
|
const cimentKg = volumeMortier * 350;
|
|
const sableM3 = volumeMortier * 0.8; // 800L sable par m³ mortier
|
|
const eauLitres = volumeMortier * 175; // 175L eau par m³
|
|
|
|
return {
|
|
volumeTotal: volumeMortier,
|
|
dosage: {
|
|
ciment: Math.ceil(cimentKg),
|
|
sable: Math.ceil(sableM3 * 1000), // en litres
|
|
eau: Math.ceil(eauLitres)
|
|
},
|
|
nombreSacsCiment50kg: Math.ceil(cimentKg / 50)
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Calcul béton armé dalle - ULTRA DÉTAILLÉ
|
|
*/
|
|
static calculerBetonArme(params: {
|
|
longueur: number; // m
|
|
largeur: number; // m
|
|
epaisseur: number; // cm
|
|
typeOuvrage: 'DALLE' | 'POUTRE' | 'POTEAU' | 'VOILE';
|
|
classeBeton: 'C20/25' | 'C25/30' | 'C30/37' | 'C35/45';
|
|
classeExposition: 'XC1' | 'XC3' | 'XC4' | 'XS1' | 'XS3'; // selon EN 206
|
|
acierType: 'FeE400' | 'FeE500';
|
|
enrobageRequis?: number; // cm
|
|
}) {
|
|
|
|
const { longueur, largeur, epaisseur, typeOuvrage, classeBeton,
|
|
classeExposition, acierType, enrobageRequis } = params;
|
|
|
|
// Volume béton
|
|
const volumeBeton = longueur * largeur * (epaisseur / 100);
|
|
|
|
// Dosage béton selon classe
|
|
const dosagesBeton = {
|
|
'C20/25': { ciment: 300, eau: 165, graviers: 1100, sable: 650 },
|
|
'C25/30': { ciment: 350, eau: 175, graviers: 1050, sable: 600 },
|
|
'C30/37': { ciment: 385, eau: 180, graviers: 1000, sable: 580 },
|
|
'C35/45': { ciment: 420, eau: 185, graviers: 950, sable: 550 }
|
|
};
|
|
|
|
const dosage = dosagesBeton[classeBeton];
|
|
|
|
// Enrobage selon classe exposition (climat tropical africain)
|
|
const enrobages = {
|
|
'XC1': 2.0, // intérieur sec
|
|
'XC3': 2.5, // intérieur humide
|
|
'XC4': 3.0, // extérieur avec gel
|
|
'XS1': 3.5, // air marin
|
|
'XS3': 4.5 // marnage
|
|
};
|
|
|
|
const enrobage = enrobageRequis || enrobages[classeExposition];
|
|
|
|
// Calcul armatures selon type ouvrage
|
|
let ratioArmature = 80; // kg/m³ par défaut
|
|
|
|
switch (typeOuvrage) {
|
|
case 'DALLE':
|
|
ratioArmature = epaisseur < 15 ? 60 : 80;
|
|
break;
|
|
case 'POUTRE':
|
|
ratioArmature = 120;
|
|
break;
|
|
case 'POTEAU':
|
|
ratioArmature = 150;
|
|
break;
|
|
case 'VOILE':
|
|
ratioArmature = 100;
|
|
break;
|
|
}
|
|
|
|
const poidsAcierTotal = volumeBeton * ratioArmature;
|
|
|
|
// Répartition par diamètres (approximation standard)
|
|
const repartitionAcier = {
|
|
6: poidsAcierTotal * 0.1, // 10% en Ø6
|
|
8: poidsAcierTotal * 0.15, // 15% en Ø8
|
|
10: poidsAcierTotal * 0.25, // 25% en Ø10
|
|
12: poidsAcierTotal * 0.30, // 30% en Ø12
|
|
14: poidsAcierTotal * 0.15, // 15% en Ø14
|
|
16: poidsAcierTotal * 0.05 // 5% en Ø16
|
|
};
|
|
|
|
return {
|
|
volumeBeton,
|
|
materiaux: {
|
|
ciment: {
|
|
quantite: Math.ceil(volumeBeton * dosage.ciment),
|
|
sacs50kg: Math.ceil(volumeBeton * dosage.ciment / 50)
|
|
},
|
|
sable: {
|
|
quantite: Math.ceil(volumeBeton * dosage.sable), // kg
|
|
volumeM3: Math.ceil(volumeBeton * dosage.sable / 1600) // densité sable
|
|
},
|
|
graviers: {
|
|
quantite: Math.ceil(volumeBeton * dosage.graviers), // kg
|
|
volumeM3: Math.ceil(volumeBeton * dosage.graviers / 1500) // densité graviers
|
|
},
|
|
eau: Math.ceil(volumeBeton * dosage.eau), // litres
|
|
acier: {
|
|
total: Math.ceil(poidsAcierTotal),
|
|
repartition: repartitionAcier
|
|
}
|
|
},
|
|
specifications: {
|
|
classeBeton,
|
|
classeExposition,
|
|
enrobage,
|
|
ratioArmature
|
|
},
|
|
controles: {
|
|
slumpTest: '8-12cm',
|
|
resistanceRequise: classeBeton,
|
|
ageDecoffrage: epaisseur < 20 ? '7j' : '14j'
|
|
}
|
|
};
|
|
}
|
|
}
|
|
|
|
// [SUITE AVEC TOUS LES AUTRES MATÉRIAUX ET CALCULS...]
|