code wiki / (root) / nx_ice_stabiliser.nx

nx_ice_stabiliser.nx

buildroot/runtime/nx_ice_stabiliser.nx

14723 B347 linesdepth 2pulls 2 transitivereach 1 importersview sourcekind librarytopic ice
docsdependenciesstructsconstsfunctions

about

nx_ice_stabiliser.nx -- THE HYDROCOLLOID TERM, and the reason it is much smaller than this lane assumed. ===== WHY THIS EXISTS ============================================ nx_ice_recrystal models Ostwald ripening and nx_ice_distribution derives the geometry, but neither knows what a stabiliser does. The gap ledger named this four separate times, each time in the same words: "no stabiliser/hydrocolloid term, and locust bean gum is exactly how industry slows this mechanism". **THAT SENTENCE CONTAINS TWO ERRORS AND THIS ORGAN CORRECTS BOTH.** ERROR 1 -- THE REFERENCE PRODUCT DOES NOT USE LBG. Ben & Jerry's Vanilla declares GUAR (primary) and CARRAGEENAN (secondary). Haagen-Dazs Vanilla declares no stabiliser at all. The lane had been planning to model the competitor's lever using a gum the competitor does not buy. ERROR 2 -- AND THE LARGER ONE: **IN FINISHED ICE CREAM THE EFFECT IS NOT STATISTICALLY SIGNIFICANT.** Flores & Goff 1999 (JDS 82:1408-1415) cycled full ice cream at 0.2% stabiliser and every stabilised sample shared significance letter "a" with the unstabilised control. The mean X50 values LOOK like a 15-25% improvement. The study did not find one. ★★★A DIFFERENCE VISIBLE IN A TABLE IS NOT A DIFFERENCE THE STUDY FOUND. This organ therefore stores the Flores means AND the significance verdict together, and stab_flores_difference_is_significant() returns 0 as a FUNCTION, so no downstream planner can read the means alone and price a lever that the evidence does not support. ===== WHERE THE EFFECT IS REAL =================================== In MODEL SOLUTIONS the effect is real, and it is CONDITIONAL ON MILK PROTEIN rather than monotonic in dose. Regand & Goff (Guelph thesis Table 5.2), 5 cycles -3.5/-6 C, recrystallisation rate in um per cycle: no milk solids with milk solids none 4.02 4.59 LBG 4.05 3.17 carrageenan 3.80 3.02

dependencies 1 imports · 1 importers

nx_syscalls.nx nx_ice_stabiliser.nx nx_ice_stabiliser_gate.nx

imports: nx_syscalls.nx

imported by: nx_ice_stabiliser_gate.nx

structs

none

consts

92const STAB_MAGIC_100000: i64 = 100000
93const STAB_MAGIC_2068: i64 = 2068
94const STAB_MAGIC_1792: i64 = 1792
95const STAB_MAGIC_1724: i64 = 1724
96const STAB_MAGIC_1636: i64 = 1636
97const STAB_MAGIC_2076: i64 = 2076
98const STAB_MAGIC_1745: i64 = 1745
99const STAB_MAGIC_1541: i64 = 1541
100const STAB_MAGIC_1542: i64 = 1542
101const STAB_MAGIC_2979: i64 = 2979
102const STAB_MAGIC_2706: i64 = 2706
103const STAB_MAGIC_2335: i64 = 2335
104const STAB_MAGIC_2520: i64 = 2520
106const STAB_INVALID: i64 = 0 - 1
107const STAB_UNKNOWN: i64 = 0 - 2
111const STAB_NONE: i64 = 0
112const STAB_LBG: i64 = 1
113const STAB_GUAR: i64 = 2
114const STAB_CARRAGEENAN: i64 = 3
115const STAB_CMC: i64 = 4
116const STAB_XANTHAN: i64 = 5
117const STAB_ALGINATE: i64 = 6
118const STAB_GELATIN: i64 = 7
123const STAB_SATURATION_Q4: i64 = 30
127const STAB_CASEIN_CARRAGEENAN_RATIO: i64 = 243
130const STAB_CARRAGEENAN_GEL_Q4: i64 = 3
131const STAB_CARRAGEENAN_FAIL_Q4: i64 = 5
134const STAB_CASEIN_OF_PROTEIN_PERMIL: i64 = 800
282const STAB_FLORES_MILD: i64 = 0 // -15 +/- 2 C, 3 cycles
283const STAB_FLORES_HARSH: i64 = 1 // -15 +/- 5 C, 3 cycles
284const STAB_FLORES_ABUSED: i64 = 2 // -15 +/- 5 C, 9 cycles

functions

143func stab_rate_no_protein_q2(gum: i64) -> i64
called by 4: stab_rate_q2t2t3t13
155func stab_rate_with_protein_q2(gum: i64) -> i64
called by 2: stab_rate_q2t3
167func stab_rate_q2(gum: i64, has_milk_protein: i64) -> i64
172func stab_rate_is_measured(gum: i64, has_milk_protein: i64) -> i64
182func stab_retardation_permil(gum: i64, has_milk_protein: i64) -> i64
192func stab_is_protein_conditional(gum: i64) -> i64
203func stab_lbg_inert_without_protein() -> i64
called by 1: t0 calls 1: stab_retardation_permil
211func stab_effective_dose_q4(dose_q4: i64) -> i64
called by 2: t5t13
217func stab_wasted_dose_q4(dose_q4: i64) -> i64
called by 1: t5
238func stab_casein_permil(protein_permil: i64) -> i64
244func stab_min_carrageenan_q5(protein_permil: i64) -> i64
251func stab_carrageenan_dose_ok_q4(dose_q4: i64, protein_permil: i64) -> i64
called by 1: t8 calls 1: stab_min_carrageenan_q5
261func stab_incompatibility_rank(gum: i64) -> i64
271func stab_needs_secondary_colloid(primary_gum: i64) -> i64
called by 1: t9 calls 1: stab_incompatibility_rank
286func stab_flores_x50_q2(regime: i64, gum: i64) -> i64
312func stab_flores_apparent_gain_permil(regime: i64, gum: i64) -> i64
called by 1: t10 calls 1: stab_flores_x50_q2
325func stab_flores_difference_is_significant() -> i64 { return 0 }
called by 1: t10
330func stab_model_result_transfers_to_product() -> i64 { return 0 }
called by 1: t11
335func stab_gum_swap_is_a_supported_lever(gum: i64) -> i64 { return 0 }
called by 1: t11
341func stab_mechanism_is_ice_adsorption() -> i64 { return 1 }
called by 1: t12
342func stab_viscosity_explains_retardation() -> i64 { return 0 }
called by 1: t12
346func stab_acts_on_storage_not_freezing() -> i64 { return 1 }
called by 1: t12
347func stab_improves_initial_crystal_size() -> i64 { return 0 }
called by 1: t12