fix some more code formatting issues, add newline at EOF

This commit is contained in:
Axel Kohlmeyer
2017-03-16 14:24:28 -04:00
parent db0281b4df
commit 1995f434f3
2 changed files with 63 additions and 108 deletions

View File

@ -48,26 +48,26 @@ using namespace FixConst;
// allocate space for static class variable
FixFilterCorotate *FixFilterCorotate::fsptr;
FixFilterCorotate *FixFilterCorotate::fsptr = NULL;
#define BIG 1.0e20
#define MASSDELTA 0.1
static const char cite_filter_corotate[] =
"Mollified Impulse Method with Corotational Filter:\n\n"
"@Article{Fath2017,\n"
" Title ="
"{A fast mollified impulse method for biomolecular atomistic simulations},\n"
" Author = {L. Fath and M. Hochbruck and C.V. Singh},\n"
" Journal = {Journal of Computational Physics},\n"
" Year = {2017},\n"
" Pages = {180 - 198},\n"
" Volume = {333},\n\n"
" Doi = {http://dx.doi.org/10.1016/j.jcp.2016.12.024},\n"
" ISSN = {0021-9991},\n"
" Keywords = {Mollified impulse method},\n"
" Url = {http://www.sciencedirect.com/science/article/pii/S0021999116306787}\n"
"}\n\n";
"Mollified Impulse Method with Corotational Filter:\n\n"
"@Article{Fath2017,\n"
" Title ="
"{A fast mollified impulse method for biomolecular atomistic simulations},\n"
" Author = {L. Fath and M. Hochbruck and C.V. Singh},\n"
" Journal = {Journal of Computational Physics},\n"
" Year = {2017},\n"
" Pages = {180 - 198},\n"
" Volume = {333},\n\n"
" Doi = {http://dx.doi.org/10.1016/j.jcp.2016.12.024},\n"
" ISSN = {0021-9991},\n"
" Keywords = {Mollified impulse method},\n"
" Url = {http://www.sciencedirect.com/science/article/pii/S0021999116306787}\n"
"}\n\n";
/* ---------------------------------------------------------------------- */
@ -1259,29 +1259,6 @@ void FixFilterCorotate::find_clusters()
memory->destroy(partner_shake);
memory->destroy(partner_nshake);
// -----------------------------------------------------
// set bond_type and angle_type negative for SHAKE clusters
// must set for all SHAKE bonds and angles stored by each atom
// -----------------------------------------------------
/* for (i = 0; i < nlocal; i++) {
* if (shake_flag[i] == 0) continue;
* else if (shake_flag[i] == 1) {
* bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],-1);
* bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],-1);
* angletype_findset(i,shake_atom[i][1],shake_atom[i][2],-1);
} else if (shake_flag[i] == 2) {
bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],-1);
} else if (shake_flag[i] == 3) {
bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],-1);
bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],-1);
} else if (shake_flag[i] == 4) {
bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],-1);
bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],-1);
bondtype_findset(i,shake_atom[i][0],shake_atom[i][3],-1);
}
}*/
// -----------------------------------------------------
// print info on SHAKE clusters
// -----------------------------------------------------
@ -1427,7 +1404,7 @@ void FixFilterCorotate::ring_shake(int ndatum, char *cbuf)
int FixFilterCorotate::masscheck(double massone)
{
for (int i = 0; i < nmass; i++){
for (int i = 0; i < nmass; i++) {
if (fabs(mass_list[i]-massone) <= MASSDELTA) return 1;
}
return 0;
@ -1441,35 +1418,34 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
{
//index: shake index, index_in_list: corresponding index in list
//get q0, nselect:
double *q0 = clist_q0[index_in_list];
int nselect1 = clist_nselect1[index_in_list];
int nselect2 = clist_nselect2[index_in_list];
int *select1 = clist_select1[index_in_list];
int *select2 = clist_select2[index_in_list];
int N = shake_flag[index]; //number of atoms in cluster
if (N == 1) N = 3; //angle cluster
int N = shake_flag[index]; //number of atoms in cluster
if (N == 1) N = 3; //angle cluster
double**x = atom->x;
double norm1, norm2, norm3;
int* list_cluster = new int[N]; // contains local IDs of cluster atoms,
// 0 = center
double* m = new double[N]; //contains local mass
double *r = new double[N]; //contains r[i] = 1/||del[i]||
int* list_cluster = new int[N]; // contains local IDs of cluster atoms,
// 0 = center
double* m = new double[N]; //contains local mass
double *r = new double[N]; //contains r[i] = 1/||del[i]||
double** del = new double*[N]; //contains del[i] = x_i-x_0
for (int i = 0; i<N; i++)
del[i] = new double[3];
for (int i = 0; i < N; i++)
{
for (int i = 0; i < N; i++) {
list_cluster[i] = atom->map(shake_atom[index][i]);
m[i] = atom->mass[atom->type[list_cluster[i]]];
}
//%CALC r_i:
for (int i = 1; i < N; i++)
{
for (int i = 1; i < N; i++) {
del[i][0] = x[list_cluster[i]][0] - x[list_cluster[0]][0];
del[i][1] = x[list_cluster[i]][1] - x[list_cluster[0]][1];
del[i][2] = x[list_cluster[i]][2] - x[list_cluster[0]][2];
@ -1484,8 +1460,7 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
n1[0] = n1[1] = n1[2] = 0.0;
int k;
for (int i = 0; i < nselect1; i++)
{
for (int i = 0; i < nselect1; i++) {
k = select1[i];
n1[0] += del[k][0]*r[k];
n1[1] += del[k][1]*r[k];
@ -1500,8 +1475,7 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
//calc n2:
n2[0] = n2[1] = n2[2] = 0.0;
for (int i = 0; i < nselect2; i++)
{
for (int i = 0; i < nselect2; i++) {
k = select2[i];
n2[0] += del[k][0]*r[k];
n2[1] += del[k][1]*r[k];
@ -1533,8 +1507,7 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
n3[2] *= norm3;
//%x_filter:
for (int i = 0; i < N; i++)
{
for (int i = 0; i < N; i++) {
k = list_cluster[i];
array_atom[k][0] = x[k][0]+q0[3*i]*n1[0]+q0[3*i+1]*n2[0]+q0[3*i+2]*n3[0];
array_atom[k][1] = x[k][1]+q0[3*i]*n1[1]+q0[3*i+1]*n2[1]+q0[3*i+2]*n3[1];
@ -1547,11 +1520,9 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
//%x+X_center
for (int i = 0; i<N; i++)
{
for (int i = 0; i<N; i++) {
k = list_cluster[i];
for (int j = 0; j < N; j++)
{
for (int j = 0; j < N; j++) {
array_atom[k][0] += m[j]/m_all*(del[j][0]-del[i][0]);
array_atom[k][1] += m[j]/m_all*(del[j][1]-del[i][1]);
array_atom[k][2] += m[j]/m_all*(del[j][2]-del[i][2]);
@ -1566,20 +1537,18 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
sum1[i][j] = 0;
double I3mn1n1T[3][3]; //(I_3 - n1n1T)
for (int i=0; i<3; i++)
{
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++)
I3mn1n1T[i][j] = -n1[i]*n1[j];
I3mn1n1T[i][i] += 1.0;
}
// sum1 part of dn1dx:
for (int l = 0; l < nselect1; l++)
{
for (int l = 0; l < nselect1; l++) {
k = select1[l];
for (int i=0; i<3; i++)
{
for (int j=0; j<3; j++)
{
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++) {
double help = del[k][i]*del[k][j]*r[k]*r[k]*r[k];
sum1[i][j+3*k] -= help;
sum1[i][j] += help;
@ -1588,11 +1557,11 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
sum1[i][i] -= r[k];
}
}
//dn1dx = norm1 * I3mn1n1T * sum1
for (int i=0; i<3; i++)
{
for (int j=0; j<3*N; j++)
{
for (int i=0; i<3; i++) {
for (int j=0; j<3*N; j++) {
double sum = 0;
for (int l = 0; l<3; l++)
sum += I3mn1n1T[i][l]*sum1[l][j];
@ -1601,27 +1570,25 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
}
//dn2dx: norm2 * I3mn2n2T * (I3mn1n1T*sum2 - rkn1pn1rk*dn1dx)
double sum2[3][3*N];
for (int i=0; i<3; i++)
for (int j=0; j<3*N; j++)
sum2[i][j] = 0;
double I3mn2n2T[3][3]; //(I_3 - n2n2T)
for (int i=0; i<3; i++)
{
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++)
I3mn2n2T[i][j] = -n2[i]*n2[j];
I3mn2n2T[i][i] += 1.0;
}
// sum2 part of dn1dx:
for (int l = 0; l < nselect2; l++)
{
for (int l = 0; l < nselect2; l++) {
k = select2[l];
for (int i=0; i<3; i++)
{
for (int j=0; j<3; j++)
{
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++) {
double help = del[k][i]*del[k][j]*r[k]*r[k]*r[k];
sum2[i][j+3*k] -= help;
sum2[i][j] += help;
@ -1631,54 +1598,51 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
}
}
//prefaktor:
//prefactor:
double rkn1pn1rk[3][3];
double rk[3]; rk[0] = rk[1] = rk[2] = 0.0;
for (int i = 0; i < nselect2; i++)
{
for (int i = 0; i < nselect2; i++) {
k = select2[i];
rk[0] += del[k][0]*r[k];
rk[1] += del[k][1]*r[k];
rk[2] += del[k][2]*r[k];
}
//rkn1pn1rk = rkT*n1*I3 + n1*rkT
double scalar = rk[0]*n1[0]+rk[1]*n1[1]+rk[2]*n1[2];
for (int i=0; i<3; i++)
{
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++)
rkn1pn1rk[i][j] = n1[i]*rk[j];
rkn1pn1rk[i][i] += scalar;
}
//dn2dx: norm2 * I3mn2n2T * (I3mn1n1T*sum2 - rkn1pn1rk*dn1dx)
//sum3 = (I3mn1n1T*sum2 - rkn1pn1rk*dn1dx)
double sum3[3][3*N];
for (int i=0; i<3; i++)
{
for (int j=0; j<3*N; j++)
{
for (int j=0; j<3*N; j++) {
double sum = 0;
for (int l = 0; l<3; l++)
sum += I3mn1n1T[i][l]*sum2[l][j] - rkn1pn1rk[i][l]*dn1dx[l][j];
sum3[i][j] = sum;
}
}
//dn2dx = norm2 * I3mn2n2T * sum3
for (int i=0; i<3; i++)
{
for (int j=0; j<3*N; j++)
{
for (int j=0; j<3*N; j++) {
double sum = 0;
for (int l = 0; l<3; l++)
sum += I3mn2n2T[i][l]*sum3[l][j];
dn2dx[i][j] = norm2*sum;
}
}
//dn3dx = norm3 * I3mn3n3T * cross
double I3mn3n3T[3][3]; //(I_3 - n3n3T)
for (int i=0; i<3; i++)
{
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++)
I3mn3n3T[i][j] = -n3[i]*n3[j];
I3mn3n3T[i][i] += 1.0;
@ -1686,8 +1650,7 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
double cross[3][3*N];
for (int j=0; j<3*N; j++)
{
for (int j=0; j<3*N; j++) {
cross[0][j] = dn1dx[1][j]*n2[2] -dn1dx[2][j]*n2[1] +
n1[1]*dn2dx[2][j]-n1[2]*dn2dx[1][j];
cross[1][j] = dn1dx[2][j]*n2[0] -dn1dx[0][j]*n2[2] +
@ -1697,15 +1660,12 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list)
}
for (int i=0; i<3; i++)
{
for (int j=0; j<3*N; j++)
{
for (int j=0; j<3*N; j++) {
double sum = 0;
for (int l = 0; l<3; l++)
sum += I3mn3n3T[i][l]*cross[l][j];
dn3dx[i][j] = norm3*sum;
}
}
for (int l=0; l<N; l++)
for (int i=0; i<3; i++)
@ -1738,8 +1698,7 @@ int FixFilterCorotate::pack_forward_comm(int n, int *list, double *buf,
int i,j,m;
double**f = atom->f;
m = 0;
for (i = 0; i < n; i++)
{
for (i = 0; i < n; i++) {
j = list[i];
buf[m++] = f[j][0];
@ -1866,10 +1825,6 @@ double FixFilterCorotate::memory_usage()
bytes += (nb+na+nt)*sizeof(int);
bytes += (nt-1+nb+na+15*15+18+10*15)*sizeof(double);
//output:
//bytes += (2*nb+2*na)*sizeof(int);
//bytes += (6*na+6*nb)*sizeof(double);
return bytes;
}
@ -2059,4 +2014,4 @@ int FixFilterCorotate::unpack_exchange(int nlocal, double *buf)
shake_type[nlocal][3] = static_cast<int> (buf[m++]);
}
return m;
}
}

View File

@ -136,4 +136,4 @@ namespace LAMMPS_NS
}
#endif
#endif
#endif