git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@1082 f3b2605a-c512-4ea7-a41b-209d697bcdaa

This commit is contained in:
sjplimp 2007-10-22 21:27:33 +00:00
parent 7f2c643662
commit d7f8074f98
2 changed files with 105 additions and 6 deletions

View File

@ -38,14 +38,18 @@ namespace MathExtra {
double ans[3][3]);
inline void plus3(const double m[3][3], const double m2[3][3],
double ans[3][3]);
inline void times3(const double m[3][3], const double m2[3][3],
double ans[3][3]);
inline void transpose_times3(const double mat1[3][3],
const double mat2[3][3],
const double mat2[3][3],
double ans[3][3]);
inline void invert3(const double mat[3][3], double ans[3][3]);
inline void times_column3(const double mat[3][3], const double*vec,
double *ans);
inline void transpose_times_column3(const double mat[3][3],const double*vec,
double *ans);
inline void transpose_times_diag3(const double mat[3][3],const double*vec,
double ans[3][3]);
inline void row_times3(const double *v, const double m[3][3],
double *ans);
inline void mldivide3(const double mat[3][3], const double *vec,
@ -60,14 +64,20 @@ namespace MathExtra {
inline void axisangle_to_quat(const double *v, const double angle,
double *quat);
inline void multiply_quat_quat(const double *one, const double *two,
double *ans);
double *ans);
inline void multiply_vec_quat(const double *one, const double *two,
double *ans);
double *ans);
// rotation operations
inline void rotation_generator_x(const double m[3][3], double ans[3][3]);
inline void rotation_generator_y(const double m[3][3], double ans[3][3]);
inline void rotation_generator_z(const double m[3][3], double ans[3][3]);
// shape matrix operations
inline void multiply_shape_shape(const double *one, const double *two,
double *ans);
double *ans);
};
/* ----------------------------------------------------------------------
@ -150,12 +160,30 @@ void MathExtra::plus3(const double m[3][3], const double m2[3][3],
ans[2][2] = m[2][2]+m2[2][2];
}
/* ----------------------------------------------------------------------
multiply mat1 times mat2
------------------------------------------------------------------------- */
void MathExtra::times3(const double m[3][3], const double m2[3][3],
double ans[3][3])
{
ans[0][0] = m[0][0]*m2[0][0]+m[0][1]*m2[1][0]+m[0][2]*m2[2][0];
ans[0][1] = m[0][0]*m2[0][1]+m[0][1]*m2[1][1]+m[0][2]*m2[2][1];
ans[0][2] = m[0][0]*m2[0][2]+m[0][1]*m2[1][2]+m[0][2]*m2[2][2];
ans[1][0] = m[1][0]*m2[0][0]+m[1][1]*m2[1][0]+m[1][2]*m2[2][0];
ans[1][1] = m[1][0]*m2[0][1]+m[1][1]*m2[1][1]+m[1][2]*m2[2][1];
ans[1][2] = m[1][0]*m2[0][2]+m[1][1]*m2[1][2]+m[1][2]*m2[2][2];
ans[2][0] = m[2][0]*m2[0][0]+m[2][1]*m2[1][0]+m[2][2]*m2[2][0];
ans[2][1] = m[2][0]*m2[0][1]+m[2][1]*m2[1][1]+m[2][2]*m2[2][1];
ans[2][2] = m[2][0]*m2[0][2]+m[2][1]*m2[1][2]+m[2][2]*m2[2][2];
}
/* ----------------------------------------------------------------------
multiply the transpose of mat1 times mat2
------------------------------------------------------------------------- */
void MathExtra::transpose_times3(const double m[3][3], const double m2[3][3],
double ans[3][3])
double ans[3][3])
{
ans[0][0] = m[0][0]*m2[0][0]+m[1][0]*m2[1][0]+m[2][0]*m2[2][0];
ans[0][1] = m[0][0]*m2[0][1]+m[1][0]*m2[1][1]+m[2][0]*m2[2][1];
@ -214,6 +242,24 @@ void MathExtra::transpose_times_column3(const double m[3][3], const double *v,
ans[2] = m[0][2]*v[0]+m[1][2]*v[1]+m[2][2]*v[2];
}
/* ----------------------------------------------------------------------
transposed matrix times diagonal matrix
------------------------------------------------------------------------- */
void MathExtra::transpose_times_diag3(const double m[3][3],
const double *d, double ans[3][3])
{
ans[0][0] = m[0][0]*d[0];
ans[0][1] = m[1][0]*d[1];
ans[0][2] = m[2][0]*d[2];
ans[1][0] = m[0][1]*d[0];
ans[1][1] = m[1][1]*d[1];
ans[1][2] = m[2][1]*d[2];
ans[2][0] = m[0][2]*d[0];
ans[2][1] = m[1][2]*d[1];
ans[2][2] = m[2][2]*d[2];
}
/* ----------------------------------------------------------------------
row vector times matrix
------------------------------------------------------------------------- */
@ -422,7 +468,7 @@ void MathExtra::multiply_vec_quat(const double *one, const double *two,
------------------------------------------------------------------------- */
void MathExtra::multiply_shape_shape(const double *one, const double *two,
double *ans)
double *ans)
{
ans[0] = one[0]*two[0];
ans[1] = one[1]*two[1];
@ -432,4 +478,55 @@ void MathExtra::multiply_shape_shape(const double *one, const double *two,
ans[5] = one[0]*two[5] + one[5]*two[1];
}
/* ----------------------------------------------------------------------
Apply principal rotation generator about x to rotation matrix m
------------------------------------------------------------------------- */
void MathExtra::rotation_generator_x(const double m[3][3], double ans[3][3])
{
ans[0][0]=0;
ans[0][1]=-m[0][2];
ans[0][2]=m[0][1];
ans[1][0]=0;
ans[1][1]=-m[1][2];
ans[1][2]=m[1][1];
ans[2][0]=0;
ans[2][1]=-m[2][2];
ans[2][2]=m[2][1];
}
/* ----------------------------------------------------------------------
Apply principal rotation generator about y to rotation matrix m
------------------------------------------------------------------------- */
void MathExtra::rotation_generator_y(const double m[3][3], double ans[3][3])
{
ans[0][0]=m[0][2];
ans[0][1]=0;
ans[0][2]=-m[0][0];
ans[1][0]=m[1][2];
ans[1][1]=0;
ans[1][2]=-m[1][0];
ans[2][0]=m[2][2];
ans[2][1]=0;
ans[2][2]=-m[2][0];
}
/* ----------------------------------------------------------------------
Apply principal rotation generator about z to rotation matrix m
------------------------------------------------------------------------- */
void MathExtra::rotation_generator_z(const double m[3][3], double ans[3][3])
{
ans[0][0]=-m[0][1];
ans[0][1]=m[0][0];
ans[0][2]=0;
ans[1][0]=-m[1][1];
ans[1][1]=m[1][0];
ans[1][2]=0;
ans[2][0]=-m[2][1];
ans[2][1]=m[2][0];
ans[2][2]=0;
}
#endif

View File

@ -41,8 +41,10 @@ FixStyle(npt/asphere,FixNPTASphere)
#ifdef PairInclude
#include "pair_gayberne.h"
#include "pair_resquared.h"
#endif
#ifdef PairClass
PairStyle(gayberne,PairGayBerne)
PairStyle(resquared,PairRESquared)
#endif