919 static double dexa, de, vmd, vs0, sgl, sgtm, sgtp, sgtd, tgtd, gm, gp, cv1, cv2, yv1, yv2, yv3, csm1, csm2, ysm1, ysm2, ysm3, csp1, csp2, ysp1, ysp2, ysp3, csd1, zd, cfm1, cfm2, cfm3, cfp1, cfp2, cfp3;
931 const double bv1[7] = { -9.67, -0.62, 1.26, -9.21, -0.62, -0.39, 3.15};
932 const double bv2[7] = { 12.7, 9.19, 15.5, 9.05, 9.19, 2.86, 857.9};
933 const double xv1[7] = {144.9e3, 228.9e3, 262.6e3, 84.1e3, 228.9e3, 141.7e3, 2222.e3};
934 const double xv2[7] = {190.3e3, 205.2e3, 185.2e3, 101.1e3, 205.2e3, 315.9e3, 164.8e3};
935 const double xv3[7] = {133.8e3, 143.6e3, 99.8e3, 98.6e3, 143.6e3, 167.4e3, 116.3e3};
936 const double bsm1[7] = { 2.13, 2.66, 6.11, 1.98, 2.68, 6.86, 8.51};
937 const double bsm2[7] = { 159.5, 7.67, 6.65, 13.11, 7.16, 10.38, 169.8};
938 const double xsm1[7] = {762.2e3, 100.4e3, 138.2e3, 139.1e3, 93.7e3, 187.8e3, 609.8e3};
939 const double xsm2[7] = {123.6e3, 172.5e3, 242.2e3, 132.7e3, 186.8e3, 169.6e3, 119.9e3};
940 const double xsm3[7] = { 94.5e3, 136.4e3, 178.6e3, 193.5e3, 133.5e3, 108.9e3, 106.6e3};
941 const double bsp1[7] = { 2.11, 6.87, 10.08, 3.68, 4.75, 8.58, 8.43};
942 const double bsp2[7] = { 102.3, 15.53, 9.60, 159.3, 8.12, 13.97, 8.19};
943 const double xsp1[7] = {636.9e3, 138.7e3, 165.3e3, 464.4e3, 93.2e3, 216.0e3, 136.2e3};
944 const double xsp2[7] = {134.8e3, 143.7e3, 225.7e3, 93.1e3, 135.9e3, 152.0e3, 188.5e3};
945 const double xsp3[7] = { 95.6e3, 98.6e3, 129.7e3, 94.2e3, 113.4e3, 122.7e3, 122.9e3};
948 const double bsd1[7] = { 1.224, 0.801, 1.380, 1.000, 1.224, 1.518, 1.518};
949 const double bzd1[7] = { 1.282, 2.161, 1.282, 20.0, 1.282, 1.282, 1.282};
950 const double bfm1[7] = { 1.0, 1.0, 1.0, 1.0, 0.92, 1.0, 1.0};
951 const double bfm2[7] = { 0.0, 0.0, 0.0, 0.0, 0.25, 0.0, 0.0};
952 const double bfm3[7] = { 0.0, 0.0, 0.0, 0.0, 1.77, 0.0, 0.0};
953 const double bfp1[7] = { 1.0, 0.93, 1.0, 0.93, 0.93, 1.0, 1.0};
954 const double bfp2[7] = { 0.0, 0.31, 0.0, 0.19, 0.31, 0.0, 0.0};
955 const double bfp3[7] = { 0.0, 2.00, 0.0, 1.79, 2.00, 0.0, 0.0};
956 const double rt = 7.8, rl = 24.0;
957 static bool no_location_variability, no_situation_variability;
958 double avarv, q, vs, zt, zl, zc;
962 if (propv.
lvar > 0) {
964 switch (propv.
lvar) {
970 if (propv.
klim <= 0 || propv.
klim > 7) {
973 set_warn(
"Climate index set to continental", 2);
977 temp_klim = propv.
klim - 1;
980 cv1 = bv1[temp_klim];
981 cv2 = bv2[temp_klim];
982 yv1 = xv1[temp_klim];
983 yv2 = xv2[temp_klim];
984 yv3 = xv3[temp_klim];
985 csm1 = bsm1[temp_klim];
986 csm2 = bsm2[temp_klim];
987 ysm1 = xsm1[temp_klim];
988 ysm2 = xsm2[temp_klim];
989 ysm3 = xsm3[temp_klim];
990 csp1 = bsp1[temp_klim];
991 csp2 = bsp2[temp_klim];
992 ysp1 = xsp1[temp_klim];
993 ysp2 = xsp2[temp_klim];
994 ysp3 = xsp3[temp_klim];
995 csd1 = bsd1[temp_klim];
996 zd = bzd1[temp_klim];
997 cfm1 = bfm1[temp_klim];
998 cfm2 = bfm2[temp_klim];
999 cfm3 = bfm3[temp_klim];
1000 cfp1 = bfp1[temp_klim];
1001 cfp2 = bfp2[temp_klim];
1002 cfp3 = bfp3[temp_klim];
1014 no_situation_variability = kdv >= 20;
1015 if (no_situation_variability)
1018 no_location_variability = kdv >= 10;
1019 if (no_location_variability)
1022 if (kdv < 0 || kdv > 3) {
1031 q = log(0.133 * prop.
k);
1032 gm = cfm1 + cfm2 / ((cfm3 * q * cfm3 * q) + 1.0);
1033 gp = cfp1 + cfp2 / ((cfp3 * q * cfp3 * q) + 1.0);
1040 const double a_1 = 9000e3;
1044 dexa = sqrt(2*a_1 * prop.
h_e[0]) +
1045 sqrt(2*a_1 * prop.
h_e[1]) +
1046 pow((575.7e12 / prop.
k),
THIRD);
1054 const double D_0 = 130e3;
1056 de = D_0 * prop.
d / dexa;
1058 de = D_0 + prop.
d - dexa;
1072 vmd =
curve(cv1, cv2, yv1, yv2, yv3, de);
1076 sgtm =
curve(csm1, csm2, ysm1, ysm2, ysm3, de) * gm;
1077 sgtp =
curve(csp1, csp2, ysp1, ysp2, ysp3, de) * gp;
1080 tgtd = (sgtp - sgtd) * zd;
1083 if (no_location_variability) {
1087 q = (1.0 - 0.8 * exp(-prop.
d / 50e3)) * prop.
delta_h * prop.
k;
1089 sgl = 10.0 * q / (q + 13.0);
1093 if (no_situation_variability) {
1096 const double D = 100e3;
1097 vs0 = (5.0 + 3.0 * exp(-de / D));
1136 if (fabs(zt) > 3.1 || fabs(zl) > 3.1 || fabs(zc) > 3.1) {
1137 set_warn(
"Situations variables not optimal", 1);
1149 sgt = sgtd + tgtd / zt;
1151 vs = vs0 + (sgt * zt * sgt * zt) / (rt + zc * zc) + (sgl * zl * sgl * zl) / (rl + zc * zc);
1157 propv.
sgc = sqrt(sgt * sgt + sgl * sgl + vs);
1161 propv.
sgc = sqrt(sgl * sgl + vs);
1164 yr = sqrt(sgt * sgt + sgl * sgl) * zt;
1165 propv.
sgc = sqrt(vs);
1167 yr = sgt * zt + sgl * zl;
1168 propv.
sgc = sqrt(vs);
1172 avarv = prop.
A_ref - vmd - yr - propv.
sgc * zc;
1176 avarv = avarv * (29.0 - avarv) / (29.0 - 10.0 * avarv);