real norm2(rvec a) = | a |^2 ( = x*y*z )
real norm(rvec a) = | a |
double dnorm(dvec a) = | a |
- void oprod(rvec a,rvec b,rvec c) c = a x b (outer product)
+ void cprod(rvec a,rvec b,rvec c) c = a x b (cross product)
void dprod(rvec a,rvec b,rvec c) c = a * b (direct product)
real cos_angle(rvec a,rvec b)
real cos_angle_no_table(rvec a,rvec b)
return cos;
}
-static inline void oprod(const rvec a,const rvec b,rvec c)
+static inline void cprod(const rvec a,const rvec b,rvec c)
{
c[XX]=a[YY]*b[ZZ]-a[ZZ]*b[YY];
c[YY]=a[ZZ]*b[XX]-a[XX]*b[ZZ];
}
for(i=5*j; (i<5*j+5); i++) {
rvec_dec(x[i],xcm[j]);
- oprod(x[i],f[i],dx);
+ cprod(x[i],f[i],dx);
rvec_inc(torque[j],dx);
rvec_inc(x[i],xcm[j]);
}
rvec_sub(x[aH2],x[aH1],dHH);
rvec_sub(x[aD], x[aO], dOD);
rvec_sub(x[aS], x[aD], dDS);
- oprod(dOH1,dOH2,nW);
+ cprod(dOH1,dOH2,nW);
/* Compute inverse length of normal vector
* (this one could be precomputed, but I'm too lazy now)
*t2 = pbc_rvec_sub(pbc,xk,xj,r_kj); /* 3 */
*t3 = pbc_rvec_sub(pbc,xk,xl,r_kl); /* 3 */
- oprod(r_ij,r_kj,m); /* 9 */
- oprod(r_kj,r_kl,n); /* 9 */
+ cprod(r_ij,r_kj,m); /* 9 */
+ cprod(r_kj,r_kl,n); /* 9 */
*cos_phi=cos_angle(m,n); /* 41 */
phi=acos(*cos_phi); /* 10 */
ipr=iprod(r_ij,n); /* 5 */
rvec_sub(xAI,xAJ,rCC1);
rvec_sub(xAI,xAK,rCC2);
- oprod(rCC1,rCC2,rNN);
+ cprod(rCC1,rCC2,rNN);
nn=norm(rNN);
for(d=0; (d<DIM); d++) {
* This insures that the conformation is not mirrored and
* prevents problems with completely flat reference structures.
*/
- oprod(vh[0],vh[1],vh[2]);
- oprod(vk[0],vk[1],vk[2]);
+ cprod(vh[0],vh[1],vh[2]);
+ cprod(vk[0],vk[1],vk[2]);
} else if (ndim == 2) {
/* Calculate the last eigenvector from the first one */
vh[1][XX] = -vh[0][YY];
for(i=0; (i<natoms); i++) {
m0=mass[i];
tm+=m0;
- oprod(x[i],v[i],a0);
+ cprod(x[i],v[i],a0);
for(m=0; (m<DIM); m++) {
xcm[m]+=m0*x[i][m]; /* c.o.m. position */
vcm[m]+=m0*v[i][m]; /* c.o.m. velocity */
acm[m]+=m0*a0[m]; /* rotational velocity around c.o.m. */
}
}
- oprod(xcm,vcm,a0);
+ cprod(xcm,vcm,a0);
for(m=0; (m<DIM); m++) {
xcm[m]/=tm;
vcm[m]/=tm;
if (vcm->mode == ecmANGULAR) {
/* Calculate angular momentum */
- oprod(x[i],v[i],j0);
+ cprod(x[i],v[i],j0);
for(m=0; (m<DIM); m++) {
vcm->group_j[g][m] += m0*j0[m];
g = group_id[i];
/* Compute the correction to the velocity for each atom */
rvec_sub(x[i],vcm->group_x[g],dx);
- oprod(vcm->group_w[g],dx,dv);
+ cprod(vcm->group_w[g],dx,dv);
rvec_dec(v[i],dv);
}
}
/* Subtract the center of mass contribution to the
* angular momentum
*/
- oprod(vcm->group_x[g],vcm->group_v[g],jcm);
+ cprod(vcm->group_x[g],vcm->group_v[g],jcm);
for(m=0; (m<DIM); m++)
vcm->group_j[g][m] -= tm*jcm[m];
pbc_rvec_sub(pbc,xj,xi,xij);
pbc_rvec_sub(pbc,xk,xi,xik);
- oprod(xij,xik,temp);
+ cprod(xij,xik,temp);
/* 15 Flops */
x[XX] = xi[XX] + a*xij[XX] + b*xik[XX] + c*temp[XX];
xj[m] = c1[j3+m];
xk[m] = c1[jk3+m];
}
- oprod(xj,xk,rr);
+ cprod(xj,xk,rr);
corr[k] += iprod(rr,rr);
}
unitv_no_table(va,va);
unitv_no_table(vb,vb);
fprintf(fkink," %6g",RAD2DEG*acos(iprod(va,vb)));
- oprod(va,vb,vc);
+ cprod(va,vb,vc);
copy_rvec(bun.mid[i],vr);
vr[ZZ] = 0;
unitv_no_table(vr,vr);
we can use the outer product of Cn-1->Cn and Cn+1->Cn, I hope */
rvec_sub(x1[a[index[i+1]+j]], x1[a[index[i]+j]], tmp1);
rvec_sub(x1[a[index[i-1]+j]], x1[a[index[i]+j]], tmp2);
- oprod(tmp1, tmp2, Sx);
+ cprod(tmp1, tmp2, Sx);
svmul(1/norm(Sx), Sx, Sx);
/* now we can get Sy from the outer product of Sx and Sz */
- oprod(Sz, Sx, Sy);
+ cprod(Sz, Sx, Sy);
svmul(1/norm(Sy), Sy, Sy);
/* the square of cosine of the angle between dist and the axis.
ak=index[3*i+2];
rvec_sub(x_s[ai],x_s[aj],xij);
rvec_sub(x_s[aj],x_s[ak],xjk);
- oprod(xij,xjk,n);
+ cprod(xij,xjk,n);
for(m=0; (m<DIM); m++)
c1[i][DIM*teller+m]=n[m];
}
/* i' = unitv(k' x (r(atom2) - r(atom1))) */
pbc_dx(&pbc,x[index[NDX_REF3][i]],x[index[NDX_REF2][i]],i1_mol);
- oprod(i1_mol,rot[2],i2_mol);
+ cprod(i1_mol,rot[2],i2_mol);
unitv(i2_mol,rot[0]);
/* j' = k' x i' */
- oprod(rot[2],rot[0],rot[1]);
+ cprod(rot[2],rot[0],rot[1]);
/* set the point of reference */
rvec_sub(x[index[1]],x[index[0]],c1); /* find two vectors */
rvec_sub(x[index[2]],x[index[0]],c2);
- oprod(c1,c2,result); /* take crossproduct between these */
+ cprod(c1,c2,result); /* take crossproduct between these */
}
/* calculate the angle and distance between the two groups */
svmul(1/r,dx,dx);
unitv(dxh1,dxh1);
inp = iprod(dx,dxh1);
- oprod(dxh1,dxh2,outer);
+ cprod(dxh1,dxh2,outer);
unitv(outer,outer);
outp = iprod(dx,outer);
} else {
j = index[i];
m0=mass[j];
tm+=m0;
- oprod(x[j],v[j],a0);
+ cprod(x[j],v[j],a0);
for(m=0; (m<DIM); m++) {
xcm[m]+=m0*x[j][m]; /* c.o.m. position */
vcm[m]+=m0*v[j][m]; /* c.o.m. velocity */
acm[m]+=m0*a0[m]; /* rotational velocity around c.o.m. */
}
}
- oprod(xcm,vcm,a0);
+ cprod(xcm,vcm,a0);
for(m=0; (m<DIM); m++) {
xcm[m]/=tm;
vcm[m]/=tm;