Unverified Commit 500363ab authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

move functions in MathExtra namespace to math_extra.h header file

parent 51f41d45
Loading
Loading
Loading
Loading
+0 −77
Original line number Diff line number Diff line
@@ -108,83 +108,6 @@ class PairMesoCNT : public Pair {

}

// inlined matrix functions

namespace MathExtra {

  // set matrix to zero

  inline void zeromat3(double m[3][3])
  {
    m[0][0] = m[0][1] = m[0][2] = 0.0;
    m[1][0] = m[1][1] = m[1][2] = 0.0;
    m[2][0] = m[2][1] = m[2][2] = 0.0;
  }

  inline void zeromat3(double **m)
  {
    m[0][0] = m[0][1] = m[0][2] = 0.0;
    m[1][0] = m[1][1] = m[1][2] = 0.0;
    m[2][0] = m[2][1] = m[2][2] = 0.0;
  }

  // add two matrices

  inline void plus3(const double m[3][3], double **m2,
                               double **ans)
  {
    ans[0][0] = m[0][0]+m2[0][0];
    ans[0][1] = m[0][1]+m2[0][1];
    ans[0][2] = m[0][2]+m2[0][2];
    ans[1][0] = m[1][0]+m2[1][0];
    ans[1][1] = m[1][1]+m2[1][1];
    ans[1][2] = m[1][2]+m2[1][2];
    ans[2][0] = m[2][0]+m2[2][0];
    ans[2][1] = m[2][1]+m2[2][1];
    ans[2][2] = m[2][2]+m2[2][2];
  }

  // subtract two matrices

  inline void minus3(const double m[3][3], const double m2[3][3],
                               double ans[3][3])
  {
    ans[0][0] = m[0][0]-m2[0][0];
    ans[0][1] = m[0][1]-m2[0][1];
    ans[0][2] = m[0][2]-m2[0][2];
    ans[1][0] = m[1][0]-m2[1][0];
    ans[1][1] = m[1][1]-m2[1][1];
    ans[1][2] = m[1][2]-m2[1][2];
    ans[2][0] = m[2][0]-m2[2][0];
    ans[2][1] = m[2][1]-m2[2][1];
    ans[2][2] = m[2][2]-m2[2][2];
  }

  inline void minus3(double **m, const double m2[3][3],
                               double ans[3][3])
  {
    ans[0][0] = m[0][0]-m2[0][0];
    ans[0][1] = m[0][1]-m2[0][1];
    ans[0][2] = m[0][2]-m2[0][2];
    ans[1][0] = m[1][0]-m2[1][0];
    ans[1][1] = m[1][1]-m2[1][1];
    ans[1][2] = m[1][2]-m2[1][2];
    ans[2][0] = m[2][0]-m2[2][0];
    ans[2][1] = m[2][1]-m2[2][1];
    ans[2][2] = m[2][2]-m2[2][2];
  }

  // compute outer product of two vectors

  inline void outer3(const double *v1, const double *v2,
                                double ans[3][3])
  {
    ans[0][0] = v1[0]*v2[0]; ans[0][1] = v1[0]*v2[1]; ans[0][2] = v1[0]*v2[2];
    ans[1][0] = v1[1]*v2[0]; ans[1][1] = v1[1]*v2[1]; ans[1][2] = v1[1]*v2[2];
    ans[2][0] = v1[2]*v2[0]; ans[2][1] = v1[2]*v2[1]; ans[2][2] = v1[2]*v2[2];
  }
}

#endif
#endif

+83 −0
Original line number Diff line number Diff line
@@ -43,6 +43,9 @@ namespace MathExtra {

  // 3x3 matrix operations

  inline void zeromat3(double m[3][3]);
  inline void zeromat3(double **m);

  inline void col2mat(const double *ex, const double *ey, const double *ez,
                      double m[3][3]);
  inline double det3(const double mat[3][3]);
@@ -52,6 +55,12 @@ 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 plus3(const double m[3][3], double **m2, double **ans);
  inline void minus3(const double m[3][3], const double m2[3][3],
                     double ans[3][3]);
  inline void minus3(double **m, 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 m[3][3], const double m2[3][3],
@@ -71,6 +80,8 @@ namespace MathExtra {
                              double ans[3][3]);
  inline void vecmat(const double *v, const double m[3][3], double *ans);
  inline void scalar_times3(const double f, double m[3][3]);
  inline void outer3(const double *v1, const double *v2,
                     double ans[3][3]);

  void write3(const double mat[3][3]);
  int mldivide3(const double mat[3][3], const double *vec, double *ans);
@@ -707,4 +718,76 @@ inline void MathExtra::rotation_generator_z(const double m[3][3],
  ans[2][2] = 0;
}

  // set matrix to zero

inline void MathExtra::zeromat3(double m[3][3])
{
  m[0][0] = m[0][1] = m[0][2] = 0.0;
  m[1][0] = m[1][1] = m[1][2] = 0.0;
  m[2][0] = m[2][1] = m[2][2] = 0.0;
}

inline void MathExtra::zeromat3(double **m)
{
  m[0][0] = m[0][1] = m[0][2] = 0.0;
  m[1][0] = m[1][1] = m[1][2] = 0.0;
  m[2][0] = m[2][1] = m[2][2] = 0.0;
}

// add two matrices

inline void MathExtra::plus3(const double m[3][3], double **m2,
                             double **ans)
{
  ans[0][0] = m[0][0]+m2[0][0];
  ans[0][1] = m[0][1]+m2[0][1];
  ans[0][2] = m[0][2]+m2[0][2];
  ans[1][0] = m[1][0]+m2[1][0];
  ans[1][1] = m[1][1]+m2[1][1];
  ans[1][2] = m[1][2]+m2[1][2];
  ans[2][0] = m[2][0]+m2[2][0];
  ans[2][1] = m[2][1]+m2[2][1];
  ans[2][2] = m[2][2]+m2[2][2];
}

// subtract two matrices

inline void MathExtra::minus3(const double m[3][3], const double m2[3][3],
                              double ans[3][3])
{
  ans[0][0] = m[0][0]-m2[0][0];
  ans[0][1] = m[0][1]-m2[0][1];
  ans[0][2] = m[0][2]-m2[0][2];
  ans[1][0] = m[1][0]-m2[1][0];
  ans[1][1] = m[1][1]-m2[1][1];
  ans[1][2] = m[1][2]-m2[1][2];
  ans[2][0] = m[2][0]-m2[2][0];
  ans[2][1] = m[2][1]-m2[2][1];
  ans[2][2] = m[2][2]-m2[2][2];
}

inline void MathExtra::minus3(double **m, const double m2[3][3],
                              double ans[3][3])
{
  ans[0][0] = m[0][0]-m2[0][0];
  ans[0][1] = m[0][1]-m2[0][1];
  ans[0][2] = m[0][2]-m2[0][2];
  ans[1][0] = m[1][0]-m2[1][0];
  ans[1][1] = m[1][1]-m2[1][1];
  ans[1][2] = m[1][2]-m2[1][2];
  ans[2][0] = m[2][0]-m2[2][0];
  ans[2][1] = m[2][1]-m2[2][1];
  ans[2][2] = m[2][2]-m2[2][2];
}

// compute outer product of two vectors

inline void MathExtra::outer3(const double *v1, const double *v2,
                              double ans[3][3])
{
    ans[0][0] = v1[0]*v2[0]; ans[0][1] = v1[0]*v2[1]; ans[0][2] = v1[0]*v2[2];
    ans[1][0] = v1[1]*v2[0]; ans[1][1] = v1[1]*v2[1]; ans[1][2] = v1[1]*v2[2];
    ans[2][0] = v1[2]*v2[0]; ans[2][1] = v1[2]*v2[1]; ans[2][2] = v1[2]*v2[2];
}

#endif