From df084a39f3599de220c0d3d30afe7e0fc2de29a3 Mon Sep 17 00:00:00 2001 From: Alexey Zholtikov Date: Tue, 13 Oct 2026 12:12:42 +0300 Subject: [PATCH] feat: added honeywell ram heat exchanger cmm 21-52-80 --- README.md | 3 +- ats0002/21_52_80.h | 217 +++++++++++++++++++++++++ heat_exchander_airflow_pressure_drop.c | 4 +- version.txt | 2 +- 4 files changed, 223 insertions(+), 3 deletions(-) create mode 100644 ats0002/21_52_80.h diff --git a/README.md b/README.md index 0f39e15..2f46d2a 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,9 @@ ## Features 1. Calculation of pressure drop across heat exchangers. -2. Support for three heat exchanger models: +2. Support for heat exchanger models: - Honeywell Heat Exchanger CMM 21-50-14 + - Honeywell Ram Heat Exchanger CMM 21-52-80 - Liebherr Reheater CMM 21-53-89 - Liebherr Condenser CMM 21-53-88 3. Multiple part number selection for each heat exchanger. diff --git a/ats0002/21_52_80.h b/ats0002/21_52_80.h new file mode 100644 index 0000000..06fc9e3 --- /dev/null +++ b/ats0002/21_52_80.h @@ -0,0 +1,217 @@ +#pragma once + +#include "ats0002.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + + /** + * @file 21_52_80.h + * + * @brief Honeywell Ram Heat Exchanger CMM 21-52-80 configuration data. + * + * This module provides static configuration data for Honeywell Ram Heat + * Exchanger CMM 21-52-80, including pressure-to-airflow anchor points for + * cooling and hot sides, air passage definitions, and heat exchanger type + * mappings for part numbers 67200152-00 and 67200152-01. + * + * Key features: + * - Cooling side performance data (Figure TEST-8) + * - Primary hot side performance data (Figure TEST-10) + * - Main hot side performance data (Figure TEST-12) + * - Complete air passage configuration with operational limits + * + * @note All data arrays are static and const-qualified for read-only access. + */ + + /** + * @brief Honeywell Ram Heat Exchanger CMM 21-52-80, Figure TEST-8 (P/N 67200152-00). + * + * Cooling side dependence of ΔPS (KPA) on air flow rate (LB/MIN), UPPER LIMIT. + */ + static const airflow_to_pressure_anchors_data_t _cooling_side_67200152_00[] = { + {50.0, 0.06}, + {60.0, 0.08}, + {70.0, 0.10}, + {80.0, 0.13}, + {90.0, 0.15}, + {100.0, 0.17}, + {200.0, 0.47}, + {300.0, 0.85}, + {400.0, 1.30}, + {500.0, 1.74}, + {600.0, 2.36}}; + + /** + * @brief Honeywell Ram Heat Exchanger CMM 21-52-80, Figure TEST-8 (P/N 67200152-01). + * + * Cooling side dependence of ΔPS (KPA) on air flow rate (LB/MIN), UPPER LIMIT. + */ + static const airflow_to_pressure_anchors_data_t _cooling_side_67200152_01[] = { + {50.0, 0.06}, + {60.0, 0.08}, + {70.0, 0.10}, + {80.0, 0.13}, + {90.0, 0.15}, + {100.0, 0.17}, + {200.0, 0.47}, + {300.0, 0.85}, + {400.0, 1.30}, + {500.0, 1.74}, + {600.0, 2.36}}; + + /** + * @brief Honeywell Ram Heat Exchanger CMM 21-52-80, Figure TEST-10 (P/N 67200152-00). + * + * Primary hot side dependence of ΔPS (PSIG) on air flow rate (LB/MIN), UPPER LIMIT. + */ + static const airflow_to_pressure_anchors_data_t _primary_hot_side_67200152_00[] = { + {25.0, 0.14}, + {30.0, 0.19}, + {40.0, 0.29}, + {50.0, 0.42}, + {60.0, 0.61}, + {70.0, 0.80}, + {80.0, 0.92}, + {90.0, 1.14}, + {100.0, 1.38}, + {200.0, 4.91}, + {300.0, 11.30}}; + + /** + * @brief Honeywell Ram Heat Exchanger CMM 21-52-80, Figure TEST-10 (P/N 67200152-01). + * + * Primary hot side dependence of ΔPS (PSIG) on air flow rate (LB/MIN), UPPER LIMIT. + */ + static const airflow_to_pressure_anchors_data_t _primary_hot_side_67200152_01[] = { + {25.0, 0.14}, + {30.0, 0.19}, + {40.0, 0.29}, + {50.0, 0.42}, + {60.0, 0.61}, + {70.0, 0.80}, + {80.0, 0.92}, + {90.0, 1.14}, + {100.0, 1.38}, + {200.0, 4.91}, + {300.0, 11.30}}; + + /** + * @brief Honeywell Ram Heat Exchanger CMM 21-52-80, Figure TEST-12 (P/N 67200152-00). + * + * Main hot side dependence of ΔPS (PSIG) on air flow rate (LB/MIN), UPPER LIMIT. + */ + static const airflow_to_pressure_anchors_data_t _main_hot_side_67200152_00[] = { + {25.0, 0.34}, + {30.0, 0.43}, + {40.0, 0.68}, + {50.0, 0.89}, + {60.0, 1.18}, + {70.0, 1.47}, + {80.0, 1.82}, + {90.0, 2.26}, + {100.0, 2.75}, + {200.0, 9.82}, + {300.0, 27.01}}; + + /** + * @brief Honeywell Ram Heat Exchanger CMM 21-52-80, Figure TEST-12 (P/N 67200152-01). + * + * Main hot side dependence of ΔPS (PSIG) on air flow rate (LB/MIN), UPPER LIMIT. + */ + static const airflow_to_pressure_anchors_data_t _main_hot_side_67200152_01[] = { + {25.0, 0.34}, + {30.0, 0.43}, + {40.0, 0.68}, + {50.0, 0.89}, + {60.0, 1.18}, + {70.0, 1.47}, + {80.0, 1.82}, + {90.0, 2.26}, + {100.0, 2.75}, + {200.0, 9.82}, + {300.0, 27.01}}; + + static const air_passage_data_t _air_passage_67200152_00_data[] = { + {.air_passage_description = "Cooling Air Side", + .air_passage_anchors = _cooling_side_67200152_00, + .anchors_data_size = ARRAY_SIZE(_cooling_side_67200152_00), + .recalculated_required = true, + .airflow_pressure_unit = KPA, + .min_barometric_pressure = 840.0, + .max_barometric_pressure = 1070.0, + .min_airflow_temperature = 15.0, + .max_airflow_temperature = 35.0, + .min_airflow_pressure = 0.01, + .max_airflow_pressure = 2.0}, + {.air_passage_description = "Primary Bleed Air Side", + .air_passage_anchors = _primary_hot_side_67200152_00, + .anchors_data_size = ARRAY_SIZE(_primary_hot_side_67200152_00), + .recalculated_required = true, + .airflow_pressure_unit = PSIG, + .min_barometric_pressure = 840.0, + .max_barometric_pressure = 1070.0, + .min_airflow_temperature = 15.0, + .max_airflow_temperature = 35.0, + .min_airflow_pressure = 0.01, + .max_airflow_pressure = 15.0}, + {.air_passage_description = "Main Bleed Air Side", + .air_passage_anchors = _main_hot_side_67200152_00, + .anchors_data_size = ARRAY_SIZE(_main_hot_side_67200152_00), + .recalculated_required = true, + .airflow_pressure_unit = PSIG, + .min_barometric_pressure = 840.0, + .max_barometric_pressure = 1070.0, + .min_airflow_temperature = 15.0, + .max_airflow_temperature = 35.0, + .min_airflow_pressure = 0.01, + .max_airflow_pressure = 15.0}}; + + static const air_passage_data_t _air_passage_67200152_01_data[] = { + {.air_passage_description = "Cooling Air Side", + .air_passage_anchors = _cooling_side_67200152_01, + .anchors_data_size = ARRAY_SIZE(_cooling_side_67200152_01), + .recalculated_required = true, + .airflow_pressure_unit = KPA, + .min_barometric_pressure = 840.0, + .max_barometric_pressure = 1070.0, + .min_airflow_temperature = 15.0, + .max_airflow_temperature = 35.0, + .min_airflow_pressure = 0.01, + .max_airflow_pressure = 2.0}, + {.air_passage_description = "Primary Bleed Air Side", + .air_passage_anchors = _primary_hot_side_67200152_01, + .anchors_data_size = ARRAY_SIZE(_primary_hot_side_67200152_01), + .recalculated_required = true, + .airflow_pressure_unit = PSIG, + .min_barometric_pressure = 840.0, + .max_barometric_pressure = 1070.0, + .min_airflow_temperature = 15.0, + .max_airflow_temperature = 35.0, + .min_airflow_pressure = 0.01, + .max_airflow_pressure = 15.0}, + {.air_passage_description = "Main Bleed Air Side", + .air_passage_anchors = _main_hot_side_67200152_01, + .anchors_data_size = ARRAY_SIZE(_main_hot_side_67200152_01), + .recalculated_required = true, + .airflow_pressure_unit = PSIG, + .min_barometric_pressure = 840.0, + .max_barometric_pressure = 1070.0, + .min_airflow_temperature = 15.0, + .max_airflow_temperature = 35.0, + .min_airflow_pressure = 0.01, + .max_airflow_pressure = 15.0}}; + + static const heat_exchanger_type_data_t heat_exchanger_21_52_80_data[] = { + {.part_number_description = "67200152-00", + .air_passages_data = _air_passage_67200152_00_data, + .air_passages_data_size = ARRAY_SIZE(_air_passage_67200152_00_data)}, + {.part_number_description = "67200152-01", + .air_passages_data = _air_passage_67200152_01_data, + .air_passages_data_size = ARRAY_SIZE(_air_passage_67200152_01_data)}}; + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/heat_exchander_airflow_pressure_drop.c b/heat_exchander_airflow_pressure_drop.c index bfe7a43..b4736f6 100644 --- a/heat_exchander_airflow_pressure_drop.c +++ b/heat_exchander_airflow_pressure_drop.c @@ -1,10 +1,12 @@ #include "ats0002/ats0002.h" +#include "ats0002/21_50_14.h" +#include "ats0002/21_52_80.h" #include "ats0002/21_53_89.h" #include "ats0002/21_53_88.h" -#include "ats0002/21_50_14.h" static const heat_exchanger_data_t heat_exchanger_data[] = { {"Honeywell Heat Exchanger CMM 21-50-14", heat_exchanger_21_50_14_data, ARRAY_SIZE(heat_exchanger_21_50_14_data)}, + {"Honeywell Ram Heat Exchanger CMM 21-52-80", heat_exchanger_21_52_80_data, ARRAY_SIZE(heat_exchanger_21_52_80_data)}, {"Liebherr Reheater CMM 21-53-89", heat_exchanger_21_53_89_data, ARRAY_SIZE(heat_exchanger_21_53_89_data)}, {"Liebherr Condenser CMM 21-53-88", heat_exchanger_21_53_88_data, ARRAY_SIZE(heat_exchanger_21_53_88_data)}}; diff --git a/version.txt b/version.txt index afaf360..1cc5f65 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.0 \ No newline at end of file +1.1.0 \ No newline at end of file