src/Utils.h

Thu, 07 Jul 2022 14:17:53 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Thu, 07 Jul 2022 14:17:53 +0200
changeset 339
2f3cfb983fcc
parent 337
8133cdb19aa1
child 340
b9af88bfe972
permissions
-rw-r--r--

Removed Garetz and Rager IBU calculations, we will only use Tinseth

#ifndef _UTILS_H
#define	_UTILS_H

#include <QString>
#include <QColor>

// #define Ka1 0.0000004445
// #define Ka2 0.0000000000468


/**
 * @namespace Utils
 *
 * @brief Global math functions.
 */
namespace Utils {

    double lintner_to_kolbach(double lintner);
    double kolbach_to_lintner(double kolbach);
    double ebc_to_srm(double ebc);
    double srm_to_ebc(double srm);
    double get_kt(int ebc);
    double plato_to_sg(double plato);
    double sg_to_plato(double sg);
    double brix_to_sg(double brix);
    double sg_to_brix(double sg);
    double brix_to_fg(double o_plato, double refracto);
    double calc_svg(double og, double fg);
    double estimate_sg(double sugars, double batch_size);
    double estimate_fg(double psugar, double pcara, double wgratio, double mashtime, double mashtemp, double svg, double og);
    double kw_to_srm(int colormethod, double c);
    double kw_to_ebc(int colormethod, double c);
    double kw_to_newebc(int colormethod, double c);
    double abvol(double og, double fg);

    /**
     * @brief Calculate standar air pressure at the brewery.
     *        Assume 20°C and use the global setup height.
     * @return Pressure in hPa.
     */
    double brewery_hPa();

    /**
     * @brief Return boil temperature in °C at the brewery height.
     * @return Temperature in °C
     */
    double boilPoint();

    /**
     * @brief Calculate IBU reduction at given temperature.
     * @param Tc temperature in °C.
     * @return The reduction factor.
     */
    double IBU_reduction(double Tc);

    /**
     * @brief Calculate IBU's of a hop at 100°C using the Tinseth formula.
     * @param SG the density
     * @param Volume in liters
     * @param Amount in kilograms
     * @param Time in minutes
     * @param Alpha in procent
     * @return The calculated IBU's
     */
    double TinsethIBU(double SG, double Volume, double Amount, double Time, double Alpha);

    /**
     * @brief Calculate IBU's of a hop during the whole production process.
     * @param Use HOP_USEAT_MASH HOP_USEAT_FWH HOP_USEAT_BOIL HOP_USEAT_AROMA HOP_USEAT_WHIRLPOOL HOP_USEAT_DRY_HOP HOP_USEAT_BOTTLING
     * @param Form HOP_FORMS_PELLET HOP_FORMS_PLUG HOP_FORMS_LEAF HOP_FORMS_LEAF_WET HOP_FORMS_CRYO HOP_FORMS_EXTRACT
     * @param SG the density
     * @param Volume in liters
     * @param Amount in kilograms
     * @param Boiltime in minutes
     * @param Alpha in procent
     * @param Method, 0 = Tinseth, 1 = Tinseth++ (+flamout, +whirlpool etc).
     * @param Whirlpool9 time in whirlpool above 80°C or zero.
     * @param Whirlpool7 time in whirlpool between 72°C and 77°C.
     * @param Whirlpool6 time in whirlpool between 60°C amd 66°C.
     * @param Fulltime, full boiltime, even for aroma hops.
     * @return The calculated IBU's
     */
    double toIBU(int Use, int Form, double SG, double Volume, double Amount, double Boiltime, double Alpha,
                 int Method, double Whirlpool9, double Whirlpool7, double Whirlpool6, double Fulltime);

    double hopFlavourContribution(double bt, double vol, int use, double amount);
    double hopAromaContribution(double bt, double vol, int use, double amount);
    QString hours_to_string(int hours);
    double kettle_cm(double volume, double kettle_volume, double kettle_height);
    double kettle_vol(double cm, double kettle_volume, double kettle_height);

    /**
     * @brief Map SRM color to RGB and return as QColor.
     * @param srm The srm value.
     * @return QColor
     */
    QColor srm_to_color(int srm);

    /**
     * @brief Map EBC color to RGB and return as QColor.
     * @param ebc The ebc value.
     * @return QColor
     */
    QColor ebc_to_color(int ebc);

    /**
     * @brief Map SRM color to a QString for stylesheets.
     * @param srm The srm value.
     * @return A QString with stylesheet colors.
     */
    QString srm_to_style(int ebc);

    /**
     * @brief Map EBC color to a QString for stylesheets.
     * @param ebc The ebc value.
     * @return A QString with stylesheet colors.
     */
    QString ebc_to_style(int srm);

    /**
     * @brief Mix water volumes and ingredients.
     *
     */
    double mix(double v1, double v2, double c1, double c2);

    /**
     * @brief Return mg/l as CaCO3
     */
    double ResidualAlkalinity(double total_alkalinity, double calcium, double magnesium);

    double PartCO3(double pH);

    double PartHCO3(double pH);

    double Charge(double pH);

    double CalcFrac(double TpH, double pK1, double pK2, double pK3);
}

#endif

mercurial