C++ Logo

std-proposals

Advanced search

Re: [std-proposals] On the standardization of mp-units P3045R1

From: Sebastian Wittmeier <wittmeier_at_[hidden]>
Date: Tue, 18 Jun 2024 15:03:23 +0200
You are specifically talking about   https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3045r1.html#potential-surprises-while-working-with-temperatures     Discussing the difficulty, when to use a difference in temperature or an absolute temperature.   An absolute value in the paper is a quantity_point, a possibly relative value is a quantity.     If I understand correctly, in the current paper to initialize and use absolute temperatures   quantity_point qp2 = (isq::Celsius_temperature(28.0 * deg_C)).in(K) and qp2.quantity_from_zero()     would have to be used instead of quantity Temperature = (28.0 * deg_C).in(K);   The paper also says   "We have added the Celsius temperature quantity type for completeness and to gain more experience with it. Still, maybe a good decision would be to skip it in the standardization process not to confuse users."           -----Ursprüngliche Nachricht----- Von:Sebastian Wittmeier <wittmeier_at_[hidden]> Gesendet:Di 18.06.2024 14:42 Betreff:AW: [std-proposals] On the standardization of mp-units P3045R1 An:std-proposals_at_[hidden]; Hi Tiago, where does this difference of 11x come from? The temperature with 28°C vs. 301K?   -----Ursprüngliche Nachricht----- Von:Tiago Freire via Std-Proposals <std-proposals_at_[hidden]> Gesendet:Di 18.06.2024 14:28 Betreff:[std-proposals] On the standardization of mp-units P3045R1 An:std-proposals_at_[hidden]; CC:Tiago Freire <tmiguelf_at_[hidden]>; Hi, I will be participating in St. Louis. And one of the papers that interested me was P3045R1, unfortunately I may or may not be on time to participate in this particular session.   There’s this question that I would like an answer too, and I wonder if there is anyone who will be attending St. Louis who would be willing to make this question on my behalf:       A lab worker puts in 40Kg of dry ice into a 1 cubic meter pressure tank rated for 10atm, they then vacuum the tank and seal it. As the CO2 warms up to room temperature (which at a specific date was 28°C) it evaporates, and eventually following the ideal gas law: PV=nRT   Is this setup dangerous?   Using mp-units (with the exact same design as the one being proposed for standardization) to solve this problem:   ``` quantity Volume = 1.0 * m*m*m; quantity Temperature = (28.0 * deg_C).in(K); quantity n_ = 0.04401 * kg / mol; quantity R_boltzman = 8.314 * N * m / (K * mol); quantity mass = 40.0 * kg; quantity Pressure = R_boltzman * Temperature * mass / n_ / Volume; std::cout << Pressure << std::endl; ```   We get the following result: `211581 N/m2` (=211.581kPa = 2,09 atm) But the correct answer is actually: 2275.629kPa = 22.5 atm (11 time s higher than what mp-units calculated)   How is this considered a design feature and not a bug? (note that other similar libraries don’t have this problem) And how do the authors think this design choice impacts on safety and user-friendliness?     Thanks.   -- Std-Proposals mailing list Std-Proposals_at_[hidden] https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals  

Received on 2024-06-18 13:03:29