Lien : www.aquaportail.com
Code source : test-calculs-aquarium.zip
Il vous faut connaître les longueur, largeur et hauteur en cm, on calculera ensuite le volume en litres.
Si on indique l’épaisseur du verre en mm pour avoir le volume interne, il est possible d’estimer le poids de l’aquarium. Le calcul est réalisé depuis une densité de 2,53 pour du verre sodo-calcique de qualité courante sans tenir compte du poids des renforts, entretoises, raidisseurs, verre de couverture, …
void calcul_cuve()
{
// en cm
double longueur = 150;
double largeur = 100;
double hauteur = 100;
// en mm
double epaisseurVerre = 20;
double densiteVerre = 2.53;
cout << "Aquarium (en cm) : " << longueur << "x" << largeur << "x" << hauteur << endl << endl;
cout << "Volume brut = " << (longueur*largeur*hauteur/1000.) << " litres" << endl;
double longueurCorrigee = ((longueur*10.)-(2*epaisseurVerre))/10.;
double largeurCorrigee = ((largeur*10.)-(2*epaisseurVerre))/10.;
double hauteurCorrigee = ((hauteur*10.)-epaisseurVerre)/10.;
double volumeVerre = ((longueur*hauteur*2.)+(largeur*hauteur*2.)+(longueur*largeur))*epaisseurVerre/10.;
cout << "Volume interne = " << (longueurCorrigee*largeurCorrigee*hauteurCorrigee/1000.) << " litres" << endl;
cout << "1 cm de hauteur dans la cuve vaut : " << (longueurCorrigee*largeurCorrigee/1000.) << " litres" << endl;
cout << "Poids cuve à vide = " << (volumeVerre*densiteVerre/1000.) << " Kg" << endl;
}
Il vous faut connaître les dimensions de votre aquarium (L x l x h) en cm et les 2 températures demandées en °Celcius : celle de la pièce dans laquelle va être l’aquarium est au minimum de 10°C et doit être inférieure à celle de l’eau de l’aquarium.
On calcule la puissance indicative du chauffage en Watts (par multiple de 25 W).
void calcul_chauffage()
{
// en cm
double longueur = 150;
double largeur = 100;
double hauteur = 100;
//
double temperaturePiece = 25;
double temperatureEau = 27;
double delta = temperatureEau-temperaturePiece;
double surface;
cout << "Aquarium (en cm) : " << longueur << "x" << largeur << "x" << hauteur << endl << endl;
if(delta < 0.)
{
temperatureEau = temperaturePiece;
delta = 0.;
}
surface = ((longueur*hauteur*2.)+(largeur*hauteur*2.)+(longueur*largeur));
double chauffage = (2.*0.6*surface*delta/1000.);
double chauffageWatts = (chauffage-(fmod(chauffage, 25))+25);
cout << "Température de la pièce = " << temperaturePiece << " °C" << endl;
cout << "Température de l'eau = " << temperatureEau << " °C" << endl;
cout << "Delta = " << delta << " °C" << endl;
cout << "Surface = " << surface << " cm^2" << endl;
cout << "Chauffage en watts = " << chauffage << " W" << endl;
cout << "Chauffage en watts (par multiple de 25W) = " << chauffageWatts << " W" << endl; // par multiple de 25
}
std::string IntToString(int n)
{
std::ostringstream oss;
oss << n;
return oss.str();
}
std::string DoubleToString(double n)
{
std::ostringstream oss;
oss << n;
return oss.str();
}
void calcul_durete()
{
//
double thEauOsmose = 0.; // °f -> supposée à 0
double thEau = 15.; // °f -> Eau moyennement dure
double thFinal = 8.; // °f -> Eau douce
//
double volumeFinal = 100.;
double volumeEauOsmose;
double volumeEauRobinet;
cout << "Détermination des volumes à mélanger pour une dureté voulue" << endl;
cout << "TH eau du robinet = " << thEau << " °f" << endl;
cout << "TH souhaité = " << thFinal << " °f" << endl;
cout << "Volume souhaité = " << volumeFinal << " litres" << endl;
volumeEauOsmose = (volumeFinal*(thEau-thFinal))/(thEau-thEauOsmose); // Volume eau osmosé
volumeEauRobinet = (volumeFinal*(thFinal-thEauOsmose))/(thEau-thEauOsmose); // Volume eau de conduite
cout << "Il faut mélanger " << volumeEauOsmose << " litres d'eau osmosée et " << volumeEauRobinet << " litres d'eau du robinet." << endl;
cout << endl;
}
void calculMGfromCA()
{
double th = 15.; // °f
double gh = th*56.0774/100.0869; // °all
double tca = 10.0; // mg/l Calcium
double r = ((th/10000.)-(tca/40078.))*24305.; // mg/l Magnésium
cout << "Détermination du taux de Magnésium" << endl;
cout << "TH = " << th << " °f" << endl;
cout << "GH = " << gh << " °all" << endl;
cout << "Taux de Calcium = " << tca << " mg/l" << endl;
cout << "Taux de Magnésium = " << r << " mg/l" << endl;
cout << endl;
}
void calculGHTHfromCAMG()
{
double tca = 10.;
double tmg = 30.39;
double caco3 = (100.0869/40.078*tca)+(100.0869/24.305)*tmg;
double th = caco3/10;
double gh = th*56.0774/100.0869;
cout << "Calculs de dureté totale (TH - GH) à partir des taux de Calcium et de Magnésium" << endl;
cout << "Taux de Calcium = " << tca << " mg/l" << endl;
cout << "Taux de Magnésium = " << tmg << " mg/l" << endl;
cout << "TH = " << th << " °f" << endl;
cout << "GH = " << gh << " °all" << endl;
cout << endl;
}
void calculCO2()
{
double r1 = 8; // KH °all
double r2 = 7; // ph
double tauxco2 = (ceil((3*r1*pow(10,7-r2))*100)/100); // mg/l CO2
cout << "Détermination du taux de CO2" << endl;
cout << "KH = " << r1 << " °all" << endl;
cout << "pH = " << r2 << " " << endl;
cout << "Taux CO2 = " << tauxco2 << " mg/l" << endl;
cout << endl;
}
void maketableCO2()
{
double co2;
double ph, kh;
string c, s;
s = "";
for(kh=0; kh<=20; kh++)
{
if(kh==0) s += "KH / PH ";
else s += IntToString(kh) + "\t";
//for(ph=60;ph<=80;ph++)
for(ph=60;ph<=71;ph++)
{
if(kh!=0)
{
co2 = (ceil((3*kh*pow(10,7-(ph/10)))*100.)/100.);
if(co2<15.)
{c="ok";}
else if(co2<40.)
{c="juste";}
else if(co2<100.)
{c="danger";}
else
{c="mortel";}
}
else
{
co2=(ph/10.);
}
//s += DoubleToString(co2) + "(" + c + ")";
s += DoubleToString(co2) + "\t" ;
}
s += "\n";
}
cout << s << endl ;
cout << "Les valeurs entre 0 et 15 mg/l de CO2 sont insuffisantes." << endl;
cout << "Les valeurs entre 15 et 40 mg/l de CO2 sont les meilleures." << endl;
cout << "Les valeurs entre 40 et 100 mg/l de CO2 sont dangeureuses à très dangereuses." << endl;
cout << "Les valeurs au dessus de 100 mg/l de CO2 sont mortelles." << endl;
cout << endl;
}
Code source : test-calculs-aquarium.zip