⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nonbonds.cc

📁 c++编写的并行拉马克遗传算法的程序。实现分析对接程序
💻 CC
字号:
/* nonbonds.cc */#include <math.h>#ifdef sgi    #include <stdio.h>    #include <string.h>    #include <ctype.h>    #include "nonbonds.h"#else    extern "C"    {	#include <stdio.h>	#include <string.h>	#include <ctype.h>        #include "nonbonds.h"    }#endif#ifdef DEBUGextern  FILE    *logFile;#endif /* DEBUG */void nonbonds( float crdpdb[MAX_ATOMS][SPACE],               int nbmatrix_binary[MAX_ATOMS][MAX_ATOMS],               int natom,               int atomnumber[MAX_RECORDS],                int nrecord,               char record[MAX_RECORDS][LINE_LEN],               int piece[MAX_ATOMS],               int Htype,               int type[MAX_ATOMS] ){    char rec5[5];    static float d12max  = 2.101;    static float d12min  = 1.000;    static float d13max  = 2.650;    static float d13min  = 2.100;    static float d14max  = 3.970;    static float d14min  = 2.651;    static float dH12max = 1.437;    static float dH12min = 0.900;    static float dH13max = 2.200;    static float dH13min = 1.700;    static float dH14max = 3.310;    static float dH14min = 2.201;    float rij = 0.;    float threshold = 4.0;    int ii = 0;    int npiece = 0;    register int XYZ = 0;    register int i = 0;    register int j = 0;    float d[SPACE];/*** ** Create list of internal non-bond distances to check...** */#ifdef DEBUG    pr( logFile, "\n__A__              " );    for (j = 0;  j < natom;  j++) {	/*pr( logFile, " %c %-2d", atm_typ_str[type[j]], j);*/	pr( logFile, " ? %-2d", j);    }    pr( logFile, "\n__A__              " );    for (j = 0;  j < natom;  j++) {	pr( logFile, " ____" );    }#endif /* DEBUG */    for (i = 0;  i < natom;  i++) {#ifdef DEBUG        pr( logFile, "\n__A__ d[? %-2d][ ] = ",i);        /* pr( logFile, "\n__A__ d[%c %-2d][ ] = ",atm_typ_str[type[i]],i); */#endif /* DEBUG */        for (j = 0;  j < natom;  j++) {            nbmatrix_binary[i][j] = 1;    /*** MUST KEEP THIS LINE! ***/            for (XYZ = 0;  XYZ < SPACE;  XYZ++) {                d[XYZ] = crdpdb[i][XYZ] - crdpdb[j][XYZ] ;            }/*XYZ*/            rij = sqhypotenuse( d[X], d[Y], d[Z] );#ifdef DEBUG            pr( logFile, (rij < 100.)?"|%4.2f":"|%4.1f", sqrt(rij) );#endif /* DEBUG */            if (rij < threshold) {                nbmatrix_binary[i][j] = nbmatrix_binary[j][i] = 0;            }/*if*/        }/*j*/#ifdef DEBUG            pr( logFile, "\n__A__              " );#endif /* DEBUG */        for (j = 0;  j < natom;  j++) {            for (XYZ = 0;  XYZ < SPACE;  XYZ++) {                d[XYZ] = crdpdb[i][XYZ] - crdpdb[j][XYZ];            }/*XYZ*/            rij = hypotenuse( d[X], d[Y], d[Z] );            if ((type[i] != Htype) && (type[j] != Htype)) {                if (rij < d12min) {#ifdef DEBUG                    pr( logFile, "|****" );#endif /* DEBUG */                    /* sep = 0; */                    nbmatrix_binary[i][j] = nbmatrix_binary[j][i] = 0;                } else if ((rij >= d12min) && (rij <= d12max)) {#ifdef DEBUG                    pr( logFile, "|_12_" );#endif /* DEBUG */                    /* sep = 2; */                    nbmatrix_binary[i][j] = nbmatrix_binary[j][i] = 0;                } else if ((rij >= d13min) && (rij <= d13max)) {#ifdef DEBUG                    pr( logFile, "|_13_" );#endif /* DEBUG */                    /* sep = 3; */                    nbmatrix_binary[i][j] = nbmatrix_binary[j][i] = 0;                } else if ((rij >= d14min) && (rij <= d14max)) {#ifdef DEBUG                    pr( logFile, "|_14_" );#endif /* DEBUG */                    /* sep = 4; */                } else if (rij>d14max) {#ifdef DEBUG                    pr( logFile, "|_15+" );#endif /* DEBUG */                    /* sep = 5; */                } else {#ifdef DEBUG                    pr( logFile, "|_?__" );#endif /* DEBUG */                    /* sep = 9; */                    nbmatrix_binary[i][j] = nbmatrix_binary[j][i] = 0;                }            } else {                if (rij < dH12min) {#ifdef DEBUG                    pr( logFile, "|H***" );#endif /* DEBUG */                    /* sep = 0; */                    nbmatrix_binary[i][j] = nbmatrix_binary[j][i] = 0;                } else if ((rij >= dH12min) && (rij <= dH12max)) {#ifdef DEBUG                    pr( logFile, "|H12_" );#endif /* DEBUG */                    /* sep = 2; */                    nbmatrix_binary[i][j] = nbmatrix_binary[j][i] = 0;                } else if ((rij >= dH13min) && (rij <= dH13max)) {#ifdef DEBUG                    pr( logFile, "|H13_" );#endif /* DEBUG */                    /* sep = 3; */                    nbmatrix_binary[i][j] = nbmatrix_binary[j][i] = 0;                } else if ((rij >= dH14min) && (rij <= dH14max)) {                    /* sep = 4; */#ifdef DEBUG                    pr( logFile, "|H14_" );#endif /* DEBUG */                } else if (rij > dH14max) {                    /* sep = 5; */#ifdef DEBUG                    pr( logFile, "|H15+" );#endif /* DEBUG */                } else {                    /* sep = 9; */#ifdef DEBUG                    pr( logFile, "| ?  " );#endif /* DEBUG */                    nbmatrix_binary[i][j] = nbmatrix_binary[j][i] = 0;                }/*endif*/            }/*endif*/        }/*j*/    }/*i*/#ifdef DEBUG    pr( logFile, "\n\n" );#endif /* DEBUG */    for (j = 0;  j < nrecord;  j++) {        i = atomnumber[j];        for (ii = 0; ii < 4; ii++)  {	    rec5[ii] = (char)tolower( (int)record[j][ii] ); 	}        if ( equal(rec5,"atom", 4) || equal(rec5,"heta", 4)) {            piece[i] = npiece;        } else {            ++npiece;        }/*if*/    }/*j*/}/* EOF */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -