1use crate::common::boundaries::*;
6use crate::common::constant::*;
7use crate::common::propertry_id::*;
8
9use crate::r1::region1_T_phps::*;
10use crate::r1::region1_pT::*;
11
12use crate::r2::region2_T_ps::*;
13use crate::r2::region2_pT::*;
14use crate::r2::region2_p_hs::*;
15
16use crate::r3::region3::*;
17use crate::r3::region3_Td::*;
18use crate::r3::region3_Tv_phps::*;
19use crate::r3::region3_v_pT::*;
20
21use crate::r4::region4_pTx::*;
22use crate::r4::region4_sat_pT::*;
23
24use crate::r5::region5_pT::*;
25use crate::r5::region5_ph_ps_hs::*;
26
27pub const REGION_NONE: i32 = 10;
29
30pub fn pT_sub_region(p: f64, T: f64) -> i32 {
33 if p < P_MIN || p > 100.0 {
34 return INVALID_P;
35 }
36 if T < 273.15 || T > 2273.15 {
37 return INVALID_T;
38 }
39 if T > 1073.15 && T <= 2273.15 && p > 50.0 {
40 return INVALID_P;
41 }
42
43 const psatTol: f64 = 1.0e-6;
48 if T >= 273.15 && T < TC_WATER {
49 let ps: f64 = p_saturation(T);
50 if (p - ps).abs() / ps < psatTol {
51 return 4;
52 }
53 }
54 if T == TC_WATER && p == PC_WATER {
56 return 3;
57 }
58
59 if T >= 273.15 && T <= 623.15 {
60 if p >= p_saturation(T) && p <= 100.0 {
61 return 1;
62 }
63 if p < p_saturation(T) && p > P_MIN {
64 return 2;
65 }
66 };
67
68 if T > 623.15 && T <= 863.15 {
70 if p >= P_MIN && p <= B23_T2p(T) {
71 return 2;
72 }
73 if p > B23_T2p(T) && p <= 100.0 {
74 return 3;
75 }
76 };
77
78 if T > 863.15 && T <= 1073.15 && p >= P_MIN && p <= 100.0 {
79 return 2;
80 }
81
82 if 1073.15 < T && T <= 2273.15 && P_MIN <= p && p <= 50.0 {
83 return 5;
84 }
85 INVALID_VALUE
86}
87
88pub fn ph_sub_region(p: f64, h: f64) -> i32 {
91 let hmin: f64 = pT2h_reg1(p, 273.15);
92 let hmax: f64 = pT2h_reg5(p, 2273.15);
93
94 if P_MIN <= p && p <= Ps_623
95 {
97 let T_sat: f64 = T_saturation(p);
98 let h14: f64 = pT2h_reg1(p, T_sat);
99 let h24: f64 = pT2h_reg2(p, T_sat);
100 let h25: f64 = pT2h_reg2(p, 1073.15);
101
102 if hmin <= h && h <= h14 {
103 return 1;
104 } else if h14 < h && h < h24 {
105 return 4;
106 } else if h24 <= h && h <= h25 {
107 return 2;
108 } else if h25 < h && h <= hmax {
109 return 5;
110 }
111 };
112
113 if Ps_623 < p && p < PC_WATER {
114 let h13: f64 = pT2h_reg1(p, 623.15);
115 let h32: f64 = pT2h_reg2(p, B23_p2T(p)); let h25: f64 = pT2h_reg2(p, 1073.15);
117
118 if hmin <= h && h <= h13 {
119 return 1;
120 }
121
122 if h13 < h && h < h32 {
123 let p34: f64 = h2p_sat_reg3(h); if p < p34 {
125 return 4;
126 } else {
127 return 3;
128 }
129 };
130
131 if h32 <= h && h <= h25 {
132 return 2;
133 }
134 if h25 < h && h <= hmax {
135 return 5;
136 }
137 };
138
139 if PC_WATER <= p && p <= 100.0 {
140 let h13: f64 = pT2h_reg1(p, 623.15);
141 let h32: f64 = pT2h_reg2(p, B23_p2T(p));
142 let h25: f64 = pT2h_reg2(p, 1073.15);
143
144 if hmin <= h && h <= h13 {
145 return 1;
146 }
147 if h13 < h && h < h32 {
148 return 3;
149 }
150 if h32 <= h && h <= h25 {
151 return 2;
152 }
153 if (p <= 50.0) && (h25 <= h && h <= hmax) {
154 return 5;
155 }
156 };
157 INVALID_VALUE
158}
159
160pub fn ps_sub_region(p: f64, s: f64) -> i32 {
163 let smin: f64 = pT2s_reg1(p, 273.15);
164 let smax: f64 = pT2s_reg5(p, 2273.15);
165
166 if P_MIN <= p && p <= Ps_623 {
168 let Tsat: f64 = T_saturation(p);
169 let s14: f64 = pT2s_reg1(p, Tsat);
170 let s24: f64 = pT2s_reg2(p, Tsat);
171 let s25: f64 = pT2s_reg2(p, 1073.15);
172
173 if smin <= s && s <= s14 {
174 return 1;
175 }
176 if s14 < s && s < s24 {
177 return 4;
178 }
179 if s24 <= s && s <= s25 {
180 return 2;
181 }
182 if s25 < s && s <= smax {
183 return 5;
184 }
185 };
186
187 if Ps_623 < p && p < PC_WATER {
189 let s13: f64 = pT2s_reg1(p, 623.15);
190 let s32: f64 = pT2s_reg2(p, B23_p2T(p));
191 let s25: f64 = pT2s_reg2(p, 1073.15);
192 if smin <= s && s <= s13 {
193 return 1;
194 }
195 if s13 < s && s < s32 {
196 let p34: f64 = s2p_sat_reg3(s); if p < p34 {
198 return 4;
199 } else {
200 return 3;
201 }
202 };
203
204 if s32 <= s && s <= s25 {
205 return 2;
206 }
207 if s25 < s && s <= smax {
208 return 5;
209 }
210 };
211 if PC_WATER <= p && p <= 100.0 {
213 let s13: f64 = pT2s_reg1(p, 623.15);
214 let s32: f64 = pT2s_reg2(p, B23_p2T(p));
215 let s25: f64 = pT2s_reg2(p, 1073.15);
216 if smin <= s && s <= s13 {
217 return 1;
218 }
219 if s13 < s && s < s32 {
220 return 3;
221 }
222 if s32 <= s && s <= s25 {
223 return 2;
224 }
225
226 if p <= 50.0 && s25 <= s && s <= smax {
227 return 5;
228 }
229 };
230 INVALID_VALUE
231}
232
233pub fn hs_sub_region(h: f64, s: f64) -> i32 {
235 let mut T: f64 = 0.0;
236 let mut p: f64 = 0.0;
237 let mut v: f64 = 0.0;
238 let mut hs: f64 = 0.0;
239 let s13: f64 = pT2s_reg1(100.0, 623.15);
240 let s13s: f64 = pT2s_reg1(Ps_623, 623.15);
241 let sTPmax: f64 = pT2s_reg2(100.0, 1073.15);
242 let s2ab: f64 = pT2s_reg2(4.0, 1073.15); let mut smin: f64 = pT2s_reg1(100.0, 273.15);
246 let mut hmin: f64 = pT2h_reg1(P_MIN, 273.15);
247
248 let mut hmax: f64 = pT2h_reg2(P_MIN, 1073.15);
250 let mut smax: f64 = pT2s_reg2(P_MIN, 1073.15);
251
252 let h4l: f64 = pT2h_reg1(P_MIN, 273.15);
254 let s4l: f64 = pT2s_reg1(P_MIN, 273.15);
255
256 let h4v: f64 = pT2h_reg2(P_MIN, 273.15);
257 let s4v: f64 = pT2s_reg2(P_MIN, 273.15);
258
259 if pT2s_reg5(50.0, 1073.15) < s
262 && s <= pT2s_reg5(P_MIN, 2273.15)
263 && pT2h_reg5(50.0, 1073.15) < h
264 && h <= pT2h_reg5(P_MIN, 2273.15)
265 {
266 p = hs2p_reg5(h, s);
267 T = ph2T_reg5(p, h);
268 if 1073.15 < T && T <= 2273.15 && P_MIN <= p && p <= 50.0 {
269 return 5;
270 }
271 };
272 if smin <= s && s <= s13 {
273 hmin = h4l + (s - s4l) / (s4v - s4l) * (h4v - h4l);
274 hs = hs_region_h1_s(s);
275 T = ps2T_reg1(100.0, s) - 0.0218;
276 hmax = pT2h_reg1(100.0, T);
277 if hmin <= h && h < hs {
278 return 4;
279 }
280 if hs <= h && h <= hmax {
281 return 1;
282 }
283 };
284
285 if s13 < s && s <= s13s {
286 hmin = h4l + (s - s4l) / (s4v - s4l) * (h4v - h4l);
287 hs = hs_region_h1_s(s);
288 let h13: f64 = hs_region_h13_s(s);
289 v = ps2v_reg3(100.0, s) * (1.0 + 9.6e-5);
290 T = ps2T_reg3(100.0, s) - 0.0248;
291 hmax = Td2h_reg3(T, 1.0 / v);
292 if hmin <= h && h < hs {
293 return 4;
294 }
295 if hs <= h && h < h13 {
296 return 1;
297 }
298 if h13 <= h && h <= hmax {
299 return 3;
300 }
301 };
302
303 if s13s < s && s <= SC_WATER {
304 hmin = h4l + (s - s4l) / (s4v - s4l) * (h4v - h4l);
305 hs = hs_region_h3a_s(s);
306 v = ps2v_reg3(100.0, s) * (1.0 + 9.6e-5);
307 T = ps2T_reg3(100.0, s) - 0.0248;
308 hmax = Td2h_reg3(T, 1.0 / v);
309 if hmin <= h && h < hs {
310 return 4;
311 }
312 if hs <= h && h <= hmax {
313 return 3;
314 }
315 };
316
317 if SC_WATER < s && s < 5.049096828 {
318 hmin = h4l + (s - s4l) / (s4v - s4l) * (h4v - h4l);
319 hs = hs_region_h2c3b_s(s);
320 v = ps2v_reg3(100.0, s) * (1.0 + 9.6e-5);
321 T = ps2T_reg3(100.0, s) - 0.0248;
322 hmax = Td2h_reg3(T, 1.0 / v);
323 if hmin <= h && h < hs {
324 return 4;
325 }
326 if hs <= h && h <= hmax {
327 return 3;
328 }
329 };
330
331 if 5.049096828 <= s && s < 5.260578707 {
332 hmin = h4l + (s - s4l) / (s4v - s4l) * (h4v - h4l);
334 hs = hs_region_h2c3b_s(s);
335 let h23max: f64 = pT2h_reg2(100.0, 863.15);
336 let h23min: f64 = pT2h_reg2(Ps_623, 623.15);
337 T = ps2T_reg2(100.0, s) - 0.019;
338 hmax = pT2h_reg2(100.0, T);
339
340 if hmin <= h && h < hs {
341 return 4;
342 }
343 if hs <= h && h < h23min {
344 return 3;
345 }
346
347 if h23min <= h && h < h23max {
348 if hs2p_reg2c(h, s) <= B23_T2p(hs_region_t_hs(h, s))
349 {
351 return 2;
352 } else {
353 return 3;
354 }
355 }
356
357 if h23max <= h && h <= hmax {
358 return 2;
359 }
360 };
361
362 if 5.260578707 <= s && s < 5.85 {
363 hmin = h4l + (s - s4l) / (s4v - s4l) * (h4v - h4l);
364 hs = hs_region_h2c3b_s(s);
365 T = ps2T_reg2(100.0, s) - 0.019;
366 hmax = pT2h_reg2(100.0, T);
367 if hmin <= h && h < hs {
368 return 4;
369 }
370 if hs <= h && h <= hmax {
371 return 2;
372 }
373 }
374
375 if 5.85 <= s && s < sTPmax {
376 hmin = h4l + (s - s4l) / (s4v - s4l) * (h4v - h4l);
377 hs = hs_region_h2ab_s(s);
378 T = ps2T_reg2(100.0, s) - 0.019;
379 hmax = pT2h_reg2(100.0, T);
380 if hmin <= h && h < hs {
381 return 4;
382 }
383 if hs <= h && h <= hmax {
384 return 2;
385 }
386 };
387
388 if sTPmax <= s && s < s2ab {
389 hmin = h4l + (s - s4l) / (s4v - s4l) * (h4v - h4l);
390 hs = hs_region_h2ab_s(s);
391 p = hs2p_reg2(h, s);
392 hmax = pT2h_reg2(p, 1073.15);
393 if hmin <= h && h < hs {
394 return 4;
395 }
396 if hs <= h && h <= hmax {
397 return 2;
398 }
399 };
400
401 if s2ab <= s && s < s4v {
402 hmin = h4l + (s - s4l) / (s4v - s4l) * (h4v - h4l);
403 hs = hs_region_h2ab_s(s);
404 p = hs2p_reg2(h, s);
405 hmax = pT2h_reg2(p, 1073.15);
406 if hmin <= h && h < hs {
407 return 4;
408 }
409 if hs <= h && h <= hmax {
410 return 2;
411 }
412 }
413
414 if s4v <= s && s <= smax {
415 hmin = pT2h_reg2(P_MIN, 273.15);
416 p = hs2p_reg2a(h, s); hmax = pT2h_reg2(p, 1073.15);
418 if P_MIN <= p && p <= 100.0 && hmin <= h && h <= hmax {
419 return 2;
420 }
421 }
422 INVALID_VALUE
423}
424
425pub fn pv_sub_region(p: f64, v: f64) -> i32 {
428 if (p < P_MIN2) || (p > P_MAX2) {
429 return INVALID_VALUE;
430 }
431
432 let vt273: f64 = pT2v_reg1(p, 273.15);
433 let vt1073: f64 = pT2v_reg2(p, 1073.15);
434 let mut vt2273: f64 = 0.0;
435 if (p >= P_MIN5) && (p <= P_MAX5) {
436 vt2273 = pT2v_reg5(p, 2273.15);
437 }
438
439 let mut T1: f64 = 0.0;
440 let mut vsw: f64 = 0.0;
441 let mut vss: f64 = 0.0;
442 let mut vt623: f64 = 0.0;
443 let mut vB23: f64 = 0.0;
444
445 if (p > 0.000611213) && (p <= P_MIN3) {
446 T1 = T_saturation(p);
447 vsw = pT2v_reg1(p, T1);
448 vss = pT2v_reg2(p, T1);
449 } else if (p > P_MIN3) && (p <= P_MAX3) {
450 vt623 = pT2v_reg1(p, 623.15);
451 T1 = B23_p2T(p);
452 vB23 = pT2v_reg2(p, T1); if p <= PC_WATER {
454 T1 = T_saturation(p);
455 vsw = pT2v_sat_reg3(p, T1, 0.0);
456 vss = pT2v_sat_reg3(p, T1, 1.0);
457 }
458 }
459 if ((p >= P_MIN1) && (p <= P_MIN3)) && ((v >= vt273) && (v <= vsw))
460 || ((p > P_MIN3) && (p <= P_MAX1)) && ((v >= vt273) && (v <= vt623))
461 {
462 return 1;
463 };
464 if ((p >= P_MIN2) && (p <= P_MIN3) && (v > vss) && (v <= vt1073))
465 || ((p > P_MIN3) && (p <= P_MAX2) && (v >= vB23) && (v <= vt1073))
466 {
467 return 2;
468 };
469 if ((p > P_MIN3) && (p <= PC_WATER) && (((v > vt623) && (v < vsw)) || ((v > vss) && (v < vB23))))
470 || ((p > PC_WATER) && (p <= P_MAX3) && (v > vt623) && (v < vB23))
471 {
472 return 3;
473 };
474 if (p > P_MIN) && (p <= PC_WATER) && (v >= vsw) && (v <= vss) {
475 return 4; };
477 if (p > P_MIN5) && (p <= P_MAX5) && (v > vt1073) && (v <= vt2273) {
478 return 5;
479 };
480 INVALID_VALUE
481}
482
483pub fn tv_sub_region(t: f64, v: f64) -> i32 {
485 let T: f64 = t + 273.15;
486 if (T < 273.15) || (T > 2273.15) {
487 return INVALID_VALUE;
488 }
489
490 let mut vpmax2: f64 = 0.0;
491 if (T >= T_MIN2) && (T <= T_MAX2) {
492 vpmax2 = pT2v_reg2(P_MIN2, T);
493 }
494
495 let mut vpmax5: f64 = 0.0;
496 let mut vp50: f64 = 0.0;
497 if (T >= T_MIN5) && (T <= T_MAX5) {
498 vpmax5 = pT2v_reg5(P_MIN5, T);
499 vp50 = pT2v_reg5(50.0, T);
500 }
501
502 let mut vp100: f64 = 0.0;
504 if (T >= T_MIN1) && (T <= T_MAX1) {
505 vp100 = pT2v_reg1(100.0, T);
506 }
507 if (T > T_MIN3) && (T <= T_MAX3) {
508 vp100 = pT2v_reg3(100.0, T);
509 }
510
511 if (T > T_MAX3) && (T <= T_MAX2) {
512 vp100 = pT2v_reg2(100.0, T);
513 }
514
515 let mut vsw: f64 = 0.0;
516 let mut vss: f64 = 0.0;
517 let mut vB23: f64 = 0.0;
518 let mut p1: f64 = 0.0;
519
520 if (T >= T_MIN1) && (T <= T_MAX1) {
521 vsw = T2sat_water(T, OV);
522 vss = T2sat_steam(T, OV);
523 } else if (T > T_MIN3) && (T <= T_MAX3) {
524 p1 = B23_T2p(T);
525 vB23 = pT2v_reg2(p1, T); if T <= TC_WATER {
527 p1 = p_saturation(T);
528 vsw = pT2v_sat_reg3(p1, T, 0.0);
529 vss = pT2v_sat_reg3(p1, T, 1.0);
530 };
531 };
532
533 if (T >= T_MIN1) && (T <= T_MAX1) && (v < vsw) && (v > vp100) {
535 return 1;
536 };
537 if ((T >= T_MIN2) && (T <= T_MAX1) && (v > vss) && (v < vpmax2))
538 || ((T > T_MAX1) && (T <= T_MAX3) && (v >= vB23) && (v < vpmax2))
539 {
540 return 2;
541 };
542 if ((T > T_MIN3) && (T <= TC_WATER) && (((v > vss) && (v < vB23)) || ((v >= vp100) && (v < vsw))))
543 || ((T > TC_WATER) && (T <= T_MAX3) && (v >= vp100) && (v < vB23))
544 {
545 return 3;
546 };
547
548 if (T >= T_MIN1) && (T <= TC_WATER) && (v >= vsw) && (v <= vss) {
549 return 4; };
551
552 if (T > T_MIN5) && (T <= T_MAX5) && (v >= vp50) && (v <= vpmax5) {
553 return 5;
554 };
555 INVALID_VALUE
556}
557
558pub fn th_sub_region(t: f64, h: f64) -> i32 {
560 let T: f64 = t + 273.15;
561 if T < 273.15 || T > 2273.15 {
562 return INVALID_VALUE;
563 }
564
565 let mut hpmax2: f64 = 0.0;
566 if (T >= T_MIN2) && (T <= T_MAX2) {
567 hpmax2 = pT2h_reg2(P_MIN2, T);
568 }
569
570 let mut hpm50: f64 = 0.0;
571 let mut hpmax5: f64 = 0.0;
572 if (T > T_MIN5) && (T <= T_MAX5) {
573 hpm50 = pT2h_reg5(P_MAX5, T);
574 hpmax5 = pT2h_reg5(P_MIN5, T);
575 }
576 let mut hp100: f64 = 0.0;
578 if (T >= T_MIN1) && (T <= T_MAX1) {
579 hp100 = pT2h_reg1(100.0, T);
580 } else if (T > T_MIN3) && (T <= T_MAX3) {
581 hp100 = pt_reg3(100.0, T - 273.15, OH);
582 }
583
584 let mut hsw: f64 = 0.0;
585 let mut hss: f64 = 0.0;
586 let mut p1: f64 = 0.0;
587 let mut hB23: f64 = 0.0;
588 if (T >= T_MIN1) && (T <= T_MAX1) {
589 hsw = T2sat_water(T, OH);
590 hss = T2sat_steam(T, OH);
591 } else if (T > T_MIN3) && (T <= T_MAX3) {
592 p1 = B23_T2p(T);
593 hB23 = pT2h_reg2(p1, T);
594 if T <= TC_WATER {
595 p1 = p_saturation(T);
596 let mut v: f64 = pT2v_sat_reg3(p1, T, 0.0);
597 hsw = Td2h_reg3(T, 1.0 / v);
598 v = pT2v_sat_reg3(p1, T, 1.0);
599 hss = Td2h_reg3(T, 1.0 / v);
600 };
601 };
602
603 if (T >= T_MIN1) && (T < (250.0 + T_MIN1)) && (h > hsw) && (h <= hp100) {
605 return 1;
606 }
607 if (T >= (250.0 + 273.15)) && (T <= T_MAX1) && (h < hsw) && (h <= hp100) {
609 let mut Hmin: f64 = hsw;
610 let mut p11: f64 = p1 + 0.1;
611 let mut Hmid: f64 = pT2h_reg1(p11, T);
612 if Hmid < Hmin {
613 let mut HminFounded: bool = false;
614
615 while !HminFounded {
616 p11 += 0.1;
617 Hmid = pT2h_reg1(p11, T);
618 if Hmid < Hmin {
619 Hmin = Hmid;
620 } else {
621 HminFounded = true;
622 }
623 }
624 if h >= Hmin {
625 return 1;
626 } else {
627 return INVALID_VALUE;
628 };
629 } else {
630 return INVALID_VALUE;
631 }
632 };
633
634 if (T >= T_MIN2) && (T <= T_MAX1) && (h > hss) && (h < hpmax2) {
635 return 2;
636 };
637 if (T > T_MAX1) && (T <= T_MAX3) && (h >= hB23) && (h < hpmax2) {
638 return 2;
639 };
640 if (T > T_MIN3) && (T <= TC_WATER) && (((h > hss) && (h < hB23)) || ((h >= hp100) && (h < hsw)))
641 || ((T > TC_WATER) && (T <= T_MAX3) && (h >= hp100) && (h < hB23))
642 {
643 return 3;
644 };
645
646 if (T >= T_MIN1) && (T <= TC_WATER) && (h >= hsw) && (h <= hss) {
648 return 4;
649 };
650
651 if (T > T_MIN5) && (T <= T_MAX5) && (h >= hpm50) && (h <= hpmax5) {
652 return 5;
653 };
654 INVALID_VALUE
655}
656
657pub fn ts_sub_region(t: f64, s: f64) -> i32 {
659 let T: f64 = t + 273.15;
660 if (T < 273.15) || (T > 2273.15) {
661 return INVALID_T;
662 }
663
664 if (s > S_MAX) || (s < S_MIN) {
665 return INVALID_S;
666 }
667
668 let mut spmax2: f64 = 0.0;
669 if (T >= T_MIN2) && (T <= T_MAX2) {
670 spmax2 = pT2s_reg2(P_MIN2, T);
671 }
672
673 let mut spmax5: f64 = 0.0;
674 let mut sp50: f64 = 0.0;
675 if (T >= T_MIN5) && (T <= T_MAX5) {
676 spmax5 = pT2s_reg5(P_MIN5, T);
677 sp50 = pT2s_reg5(50.0, T);
678 }
679 let mut sp100: f64 = 0.0;
681 if (T >= T_MIN1) && (T <= T_MAX1) {
682 sp100 = pT2s_reg1(100.0, T);
683 }
684
685 if (T > T_MIN3) && (T <= T_MAX3) {
686 sp100 = pT_reg3(100.0, T, OS);
687 }
688
689 if (T > T_MAX3) && (T <= T_MAX2) {
690 sp100 = pT2s_reg2(100.0, T);
691 }
692
693 let mut p1: f64 = 0.0;
694 let mut ssw: f64 = 0.0;
695 let mut sss: f64 = 0.0;
696 let mut sB23: f64 = 0.0;
697 if (T >= T_MIN1) && (T <= T_MAX1) {
698 p1 = p_saturation(T);
699 ssw = pT2s_reg1(p1, T);
700 sss = pT2s_reg2(p1, T);
701 } else if (T > T_MIN3) && (T <= T_MAX3) {
702 p1 = B23_T2p(T);
703 sB23 = pT2s_reg2(p1, T); if T <= TC_WATER {
705 p1 = p_saturation(T);
706 let mut v: f64 = pT2v_sat_reg3(p1, T, 0.0);
707 ssw = Td2s_reg3(T, 1.0 / v);
708 v = pT2v_sat_reg3(p1, T, 1.0);
709 sss = Td2s_reg3(T, 1.0 / v);
710 };
711 };
712 if (T >= T_MIN1) && (T <= T_MAX1) && (s < ssw) && (s > sp100) {
714 return 1;
715 };
716 if ((T >= T_MIN2) && (T <= T_MAX1) && (s > sss) && (s < spmax2))
717 || ((T > T_MAX1) && (T <= T_MAX3) && (s >= sB23) && (s < spmax2))
718 {
719 return 2;
720 };
721 if ((T > T_MIN3) && (T <= TC_WATER) && (((s > sss) && (s < sB23)) || ((s >= sp100) && (s < ssw))))
722 || ((T > TC_WATER) && (T <= T_MAX3) && (s >= sp100) && (s < sB23))
723 {
724 return 3;
725 };
726 if (T >= T_MIN1) && (T <= TC_WATER) && (s >= ssw) && (s <= sss) {
727 return 4;
728 };
729 if (T > T_MIN5) && (T <= T_MAX5) && (s >= sp50) && (s <= spmax5) {
730 return 5;
731 };
732 INVALID_VALUE
733}