Added color method written by Hans Halberstadt.

Mon, 13 May 2019 16:26:28 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Mon, 13 May 2019 16:26:28 +0200
changeset 372
1365b5e47130
parent 371
023ca640b5af
child 373
ee16d9b844d8

Added color method written by Hans Halberstadt.

www/js/global.js file | annotate | diff | comparison | revisions
www/js/prod_edit.js file | annotate | diff | comparison | revisions
www/js/rec_edit.js file | annotate | diff | comparison | revisions
--- a/www/js/global.js	Mon May 13 12:50:24 2019 +0200
+++ b/www/js/global.js	Mon May 13 16:26:28 2019 +0200
@@ -294,9 +294,10 @@
 var IBUmethodAdapter = new $.jqx.dataAdapter(IBUmethodSource);
 
 var ColorMethodData = [
-	{ id: 0, en: 'Morey',   nl: 'Morey' },
-	{ id: 1, en: 'Mosher',  nl: 'Mosher' },
-	{ id: 2, en: 'Daniels', nl: 'Daniels' }
+	{ id: 0, en: 'Morey',       nl: 'Morey' },
+	{ id: 1, en: 'Mosher',      nl: 'Mosher' },
+	{ id: 2, en: 'Daniels',     nl: 'Daniels' },
+	{ id: 3, en: 'Halberstadt', nl: 'Halberstadt' }
 ];
 var ColorMethodSource = {
 	localdata: ColorMethodData,
@@ -735,6 +736,36 @@
 
 
 /*
+ * Return incremented color by the boil and yeast.
+ * https://www.hobbybrouwen.nl/forum/index.php/topic,19020.msg281132.html#msg281132
+ */
+function get_kt(ebc) {
+
+	var kt = 1;
+	if (ebc < 3)
+		kt = 3.5;
+	else if (ebc < 6)
+		kt = 3;
+	else if (ebc < 8)
+		kt = 2.75;
+	else if (ebc < 10)
+		kt = 2.5;
+	else if (ebc < 20)
+		kt = 1.8;
+	else if (ebc < 30)
+		kt = 1.6;
+	else if (ebc < 60)
+		kt = 1.3;
+	else if (ebc < 100)
+		kt = 1.2;
+	else if (ebc < 300)
+		kt = 1.1;
+	return kt;
+}
+
+
+
+/*
  * Alcohol By Volume
  */
 function abvol(og, fg) {
@@ -768,7 +799,7 @@
 
 
 /*
- * Kleurwerking naar SRM
+ * Kleurwerking naar SRM. Niet voor Halberstadt.
  */
 function kw_to_srm(colormethod, c) {
 
@@ -778,6 +809,8 @@
 		return 0.3 * c + 4.7;
 	if (colormethod == 2)	// Daniels
 		return 0.2 * c + 8.4;
+	if (colormethod == 3)	// Halberstadt
+		return 0;
 }
 
 
--- a/www/js/prod_edit.js	Mon May 13 12:50:24 2019 +0200
+++ b/www/js/prod_edit.js	Mon May 13 16:26:28 2019 +0200
@@ -122,6 +122,7 @@
                         $("#ok_supplies").html("<img src='images/dialog-error.png'>");
 	}
 
+
 	/*
 	 * All calculations that depend on changes in the fermentables,
 	 * volumes and equipments.
@@ -140,9 +141,12 @@
 		var addedmass = 0;	// Added mass after boil
 		var mvol = 0;		// mash volume
 		var colort = 0;		// Colors srm * vol totals
+		var colorh = 0;		// Colors ebc * vol * kt
 		var my_100 = false;
 		var mashtime = 0;	// Total mash time
 		var mashtemp = 0;	// Average mash temperature
+		var bv = 0.925; 	// Bierverlies rendement
+                var sr = 0.95;  	// Mash en spoel rendement
 
 		if ((rows = $('#mashGrid').jqxGrid('getrows'))) {
 			for (var i = 0; i < rows.length; i++) {
@@ -189,6 +193,7 @@
 				vol += (x * sugardensity + (1 - x) * 1) * row.f_amount;
 			}
 			colort += row.f_amount * ebc_to_srm(row.f_color);
+			colorh += row.f_amount * row.f_color * get_kt(row.f_color);
 			// Check supplies.
 			if ((((dataRecord.inventory_reduced <= 2) && (row.f_added <= 1)) ||  // Mash or boil
                              ((dataRecord.inventory_reduced <= 3) && (row.f_added == 2)) ||  // Primary
@@ -255,8 +260,12 @@
 				dataRecord.brew_fermenter_sg = Math.round(plato_to_sg(pt) * 10000) / 10000;
 				$("#brew_fermenter_sg").val(dataRecord.brew_fermenter_sg);
 				// color
-				var cw = colort / (aboil_volume + top) * 8.34436;
-				dataRecord.brew_fermenter_color = kw_to_ebc(dataRecord.color_method, cw);
+				if (dataRecord.color_method == 3) {
+					dataRecord.brew_fermenter_color = Math.round((4.46 * bv * sr) /  (aboil_volume + top) * colorh);
+				} else {
+					var cw = colort / (aboil_volume + top) * 8.34436;
+					dataRecord.brew_fermenter_color = kw_to_ebc(dataRecord.color_method, cw);
+				}
 				$("#brew_fermenter_color").val(dataRecord.brew_fermenter_color);
 				var scolor = ebc_to_color(dataRecord.brew_fermenter_color);
 				$("#bcolorf").show();
@@ -271,8 +280,12 @@
 		}
 
 		// Color of the wort
-		var cw = colort / parseFloat(dataRecord.batch_size) * 8.34436;
-		var color = kw_to_ebc(dataRecord.color_method, cw);
+		if (dataRecord.color_method == 3) {	// Hans Halberstadt
+			var color = Math.round((4.46 * bv * sr) /  parseFloat(dataRecord.batch_size) * colorh);
+		} else {
+			var cw = colort / parseFloat(dataRecord.batch_size) * 8.34436;
+			var color = kw_to_ebc(dataRecord.color_method, cw);
+		}
 		dataRecord.est_color = color;
                 $('#est_color').val(color);
                 $('#est_color2').val(color);
--- a/www/js/rec_edit.js	Mon May 13 12:50:24 2019 +0200
+++ b/www/js/rec_edit.js	Mon May 13 16:26:28 2019 +0200
@@ -169,9 +169,12 @@
 		var addedmass = 0;	// Added mass after boil
 		var mvol = 0;		// mash volume
 		var colort = 0;		// Colors srm * vol totals
+		var colorh = 0;         // Colors ebc * vol * kt
 		var my_100 = false;
 		var mashtime = 0;       // Total mash time
 		var mashtemp = 0;       // Average mash temperature
+		var bv = 0.925;         // Bierverlies rendement
+                var sr = 0.95;          // Mash en spoel rendement
 
 		if ((rows = $('#mashGrid').jqxGrid('getrows'))) {
 			for (var i = 0; i < rows.length; i++) {
@@ -218,6 +221,7 @@
 				vol += (x * sugardensity + (1 - x) * 1) * row.f_amount;
 			}
 			colort += row.f_amount * ebc_to_srm(row.f_color);
+			colorh += row.f_amount * row.f_color * get_kt(row.f_color);
 		}
 		to_100 = my_100;
 		if (to_100) {
@@ -235,8 +239,12 @@
 		preboil_sg = estimate_sg(sugarsm, parseFloat(dataRecord.boil_size));
 
 		// Color of the wort
-		var cw = colort / parseFloat(dataRecord.batch_size) * 8.34436;
-		var color = kw_to_ebc(dataRecord.color_method, cw);
+		if (dataRecord.color_method == 3) {     // Hans Halberstadt
+                        var color = Math.round((4.46 * bv * sr) /  parseFloat(dataRecord.batch_size) * colorh);
+                } else {
+			var cw = colort / parseFloat(dataRecord.batch_size) * 8.34436;
+			var color = kw_to_ebc(dataRecord.color_method, cw);
+		}
 		dataRecord.est_color = color;
 		$('#est_color').val(color);
 		$('#est_color2').val(color);

mercurial