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();
	}
}
Пример #2
0
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);
}
Пример #3
0
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;
}
Пример #4
0
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;
}