void CHECK_SETTINGS (const string projectname) { ASSERT_EXACTLY_ONE_TRUE (is_mode_STD(), is_mode_DEBUG()); const string SFN = capslock (projectname + ".set"); const string sfn = projectname + ".set"; writeln (""); writeln ("============================"); writeln ("1) CHECKING OF SETTINGS FILE"); writeln ("============================"); writeln (""); writeln (" - CHECKING " + SFN + " SETTINGS FILE"); const bool CORR_SET = is_SETTINGS_FILE_CORRECT (sfn); if (CORR_SET) { writeln (" - " + SFN + " SETTINGS FILE IS CORRECT."); vector <vector <string> > SET = READ_SETTINGS_FILE (sfn); SET = COMPLETE_SET_WITH_DEFAULT (SET); INIT_SETTINGS (SET); } else { writeln (""); writeln (" WARNING, SET_ERROR: the input " + SFN + " file structure is incorrect, the file will not be processed."); throw set_error(); } }
void check_dataseparation_mode () { const bool IGNORE = is_GROUPSEPARATION_IGNORE (); const bool by_GROUPCODE = is_GROUPSEPARATION_GROUPCODE (); const bool by_KMEANS = is_GROUPSEPARATION_KMEANS (); const bool by_RUPANG = is_GROUPSEPARATION_RUPANG (); ASSERT_EXACTLY_ONE_TRUE (IGNORE, by_GROUPCODE, by_KMEANS, by_RUPANG); }
double return_sigma_r_tau_teta (const GDB in, const double AZIMUTH, const string MODE) { const bool AZ = AZIMUTH; const bool RAD = MODE == "RAD"; const bool TET = MODE == "TETA"; const bool TAU = MODE == "TAU"; ASSERT_EXACTLY_ONE_TRUE (AZ, RAD, TET, TAU); const double SH = in.SH; const double Sh = in.Sh; const double R = in.N_rad; const double r = in.BBO_rad; const double dP = in.delta_p; ASSERT_FINITE (SH, Sh, R, r, dP); const double var_RRrr = (R*R)/(r*r); const double var_RRRRrrrr = (R*R*R*R)/(r*r*r*r); const double A = ((SH+Sh)/2); const double B = 1 + var_RRrr; const double C = dP * var_RRrr; const double D = 1 + var_RRrr; ASSERT_FINITE (A, B, C, D); double res; if (RAD) { res = (A*B) + (A * (1 - 4*var_RRrr + 3*var_RRRRrrrr) * COS (2*AZ)) + C; } else if (TET) { res = (A*D) - (A * (1 + 3*var_RRRRrrrr) * COS (2*AZ)) - C; } else { res = -A * (1 + 2*var_RRrr - 3*var_RRRRrrrr) * SIN (2*AZ); } ASSERT_FINITE (res); return res; }
GDB return_shmax_shmin (const GDB in) { GDB OUT = in; BBO B; const double MU = OUT.mu; const double R = OUT.N_rad; const double r = OUT.BBO_rad; const double var_2_cos_2_teta = 2 * COS (2 * OUT.teta); const double var_sqrt_1_mu_mu = sqrt (1 + (MU * MU)); const double var_RRrr = (R*R)/(r*r); const double var_RRRRrrrr = (R*R*R*R)/(r*r*r*r); B.a1 = - MU * (1 - var_2_cos_2_teta); B.b1 = - MU * (1 + var_2_cos_2_teta); B.a2 = var_sqrt_1_mu_mu * (1 - var_2_cos_2_teta); B.b2 = var_sqrt_1_mu_mu * (1 + var_2_cos_2_teta); B.c1 = - MU * (1 + (2 * var_RRrr)); B.d1 = - MU * (1 + (2 * var_RRrr)); B.c2 = var_sqrt_1_mu_mu * ( 1 - var_RRrr + 3 * var_RRRRrrrr); B.d2 = var_sqrt_1_mu_mu * (- 1 + 3 * var_RRrr - 3 * var_RRRRrrrr); B.e1 = - var_sqrt_1_mu_mu; B.f1 = - var_sqrt_1_mu_mu * var_RRrr; ASSERT_FINITE (B.a1, B.a2, B.b1, B.b2, B.c1, B.c2, B.d1, B.d2, B.e1, B.f1); const double SH_1 = return_SH (in, B, true, true); const double SH_2 = return_SH (in, B, false, true); const double Sh_1 = return_SH (in, B, true, false); const double Sh_2 = return_SH (in, B, false, false); const bool SH1_GE_0 = SH_1 > 0; const bool SH2_GE_0 = SH_2 > 0; const bool Sh1_GE_0 = Sh_1 > 0; const bool Sh2_GE_0 = Sh_2 > 0; const bool SH1_GE_Sh1 = SH_1 >= Sh_1; const bool SH2_GE_Sh2 = SH_2 >= Sh_2; const bool STRESS_1_OK = (SH1_GE_0 && Sh1_GE_0 && SH1_GE_Sh1); const bool STRESS_2_OK = (SH2_GE_0 && Sh2_GE_0 && SH2_GE_Sh2); ASSERT_EXACTLY_ONE_TRUE (STRESS_1_OK, STRESS_2_OK); if (STRESS_1_OK) { OUT.SH = SH_1; OUT.Sh = Sh_1; } else { OUT.SH = SH_2; OUT.Sh = Sh_2; } return OUT; }