コード例 #1
0
ファイル: main.cpp プロジェクト: MPolovyi/SCOLSS
void InitializeSimulations(int argc, char **argv) {
    int p = MPI::COMM_WORLD.Get_size();
    int id = MPI::COMM_WORLD.Get_rank();

    std::string simType = argv[2];

    ESimulationType simT;
    if (simType == "MC") {
        simT = ESimulationType::MonteCarlo;
    } else if (simType == "LD") {
        simT = ESimulationType::LangevinDynamics;
    } else {
        std::cout << "Unknown simulation type " << simType << ". Exiting." << std::endl;
        return;
    }

    std::string simDataFileName = argv[1];

    if (id == p-1) {
        InitTar(simDataFileName);
    }
    std::string samples = argv[3];
    for (int i = 1; i <= std::stoi(samples); i++) {
        std::ifstream simDataFileStream(simDataFileName);

        cereal::JSONInputArchive simDataArchieve(simDataFileStream);

        std::shared_ptr<CBaseSimCtrl> sim;

        switch (simT) {
            case MonteCarlo: {
                CMonteCarloSimParams data;
                data.load(simDataArchieve);
                sim = std::make_shared<CMonteCarloSimCtrl>(CMonteCarloSimCtrl(data));
                break;
            };
            case LangevinDynamics: {
                CLangevinSimParams data;
                data.load(simDataArchieve);
                sim = std::make_shared<CLangevinSimCtrl>(CLangevinSimCtrl(data));
                break;
            };
        }

        std::string fullSaveFileName = "FullData_" + std::to_string(i) + "_" + simDataFileName;
        std::string miniSaveFileName = "MiniData_" + std::to_string(i) + "_" + simDataFileName;
        std::string pictSaveFileName = "PictData_" + std::to_string(i) + "_" + simDataFileName + ".eps";

        SaveDataToFile(sim, fullSaveFileName, miniSaveFileName, simDataFileName, 0);

        RunSimulations(sim, fullSaveFileName, miniSaveFileName, pictSaveFileName, simDataFileName);

        printf("Sample N %i\n", i);
    }

    if (id == p-1) {
        FinishTar(simDataFileName);
    }
}
コード例 #2
0
ファイル: main.cpp プロジェクト: process/euler
int main()
{
	SieveOfEratosthenes(Primes, 1000);

	srand(time(NULL));

	char croaks[] = "PPPPNNPPPNPPNPN";

	RunSimulations();

	bignum numerator;
	bigset(numerator, 119);

	bignum denominator;
	bigset(denominator, 300);

	bignum temp1;
	bigset(temp1, 190);

	bignum temp2;
	bigset(temp2, 405);

	bignum temp3;
	biginit(temp3);

	bignum temp4;
	biginit(temp4);

	bignum temp5;
	biginit(temp5);

	int i;

	for(i = 1; i < 15; i++)
	{
		bigmulint(temp3,bigadd(temp3, temp1, temp2), 7695);

		bigsetbig(temp4, temp1);
		bigsetbig(temp5, temp2);

		bigadd(temp1, bigmulint(temp1, temp1, 81), bigmulint(temp5, temp5, 1805));
		bigadd(temp2, bigmulint(temp2, temp2, 5890), bigmulint(temp4, temp4, 7614));

		if(croaks[i] == 'P')
			bigmulint(temp1, temp1, 2);

		else
			bigmulint(temp2, temp2, 2);
			
		bigmul(numerator, numerator, bigadd(temp4, temp1, temp2));
		bigmul(denominator, denominator, bigmulint(temp3,temp3,3));

		char string1[1000];
		char string2[1000];
		biggetstr(string1, numerator);
		biggetstr(string2, denominator);
		printf("%s/%s\n", string1, string2);
	}

	char string1[1000];
	char string2[1000];
	biggetstr(string1, numerator);
	biggetstr(string2, denominator);
	printf("%s/%s\n", string1, string2);

	return 0;
}