Esempio n. 1
0
/**
 * This function determines if the bond breaks given the deviation from equilibrium length
 * Equation: kr = kr0 * exp (gamma * sigma * delta / kB / T)
 *
 * @param: delta: the length that the bond is stretched or compressed
 *      from the equilibrium length
 * @return: if breaks
 *
 */
bool ifBreak(double delta) {
    double kr;
    static const double kr_cal = (_sigma * 1000.0 * _gama) / _thermal; // (nm^-1)

    kr = _kr0 * exp(kr_cal * fabs(delta));
    return (sfmt_genrand_res53(&sfmt)< (1.0 - exp(-1.0 * kr * _timeInc)));

}
Esempio n. 2
0
/**
 * This function determines if a potential bond would form
 *      given the distance between pairing ligand and receptor
 * Equation: kf = kf0 * exp ( - sigma_ts * delta * delta / (2*kB*T))
 *
 * @param: bondLength: the distance between pairing ligand and receptor
 * @return: if forms
 *
 */
bool ifForm(double delta) {
    double kf;
    static const double kf_cal = -1.0 * (sigma_ts * 500.0) / _thermal; // (nm^-2)

    kf = _kf0 * exp(kf_cal * delta * delta);
    if (sfmt_genrand_res53(&sfmt)< 1.0 - exp(-1.0 * kf * _timeInc)) {
        return !ifBreak(delta);
    }
    return false;
}
Esempio n. 3
0
int main(int argc, char* argv[]) {
    int i, cnt, seed;
    double x, y, pi;
    const int NUM = 10000;
    sfmt_t sfmt;

    if (argc >= 2) {
	seed = strtol(argv[1], NULL, 10);
    } else {
	seed = 12345;
    }
    cnt = 0;
    sfmt_init_gen_rand(&sfmt, seed);
    for (i = 0; i < NUM; i++) {
	x = sfmt_genrand_res53(&sfmt);
	y = sfmt_genrand_res53(&sfmt);
	if (x * x + y * y < 1.0) {
	    cnt++;
	}
    }
    pi = (double)cnt / NUM * 4;
    printf("%lf\n", pi);
    return 0;
}
Esempio n. 4
0
double wrap_genrand_res53(sfmt_t* sfmt) {
  return sfmt_genrand_res53(sfmt);
}