ESYS13  Revision_
Defines | Functions
BlockOps.h File Reference
#include "Common.h"
#include "Paso.h"

Go to the source code of this file.

Defines

#define PASO_MISSING_CLAPACK   Esys_setError(TYPE_ERROR, "You need to install a CLAPACK version to run a block size > 3.")
#define Paso_BlockOps_Cpy_2(R, V)
#define Paso_BlockOps_Cpy_3(R, V)
#define Paso_BlockOps_Cpy_N(N, R, V)   memcpy((void*)R, (void*)V, ( (size_t) N ) * sizeof(double) )
#define Paso_BlockOps_SMV_2(R, MAT, V)
#define Paso_BlockOps_SMV_3(R, MAT, V)
#define Paso_BlockOps_SMV_N(N, R, MAT, V)   PASO_MISSING_CLAPACK
#define Paso_BlockOps_MV_N(N, R, MAT, V)   PASO_MISSING_CLAPACK
#define Paso_BlockOps_invM_2(invA, A, failed)
#define Paso_BlockOps_invM_3(invA, A, failed)
#define Paso_BlockOps_invM_N(N, MAT, PIVOT, failed)   PASO_MISSING_CLAPACK
#define Paso_BlockOps_solve_N(N, X, MAT, PIVOT, failed)   PASO_MISSING_CLAPACK
#define Paso_BlockOps_MViP_2(MAT, V)
#define Paso_BlockOps_MViP_3(MAT, V)

Functions

void Paso_BlockOps_solveAll (dim_t n_block, dim_t n, double *D, index_t *pivot, double *x)

Define Documentation

#define Paso_BlockOps_Cpy_2 (   R,
  V 
)
Value:
{\
   *(R+0)=*(V+0);\
   *(R+1)=*(V+1);\
}
#define Paso_BlockOps_Cpy_3 (   R,
  V 
)
Value:
{\
   *(R+0)=*(V+0);\
   *(R+1)=*(V+1);\
   *(R+2)=*(V+2);\
}
#define Paso_BlockOps_Cpy_N (   N,
  R,
  V 
)    memcpy((void*)R, (void*)V, ( (size_t) N ) * sizeof(double) )
#define Paso_BlockOps_invM_2 (   invA,
  A,
  failed 
)
Value:
{\
   register double A11=*(A+0);\
   register double A12=*(A+2);\
   register double A21=*(A+1);\
   register double A22=*(A+3);\
   register double D = A11*A22-A12*A21; \
   if (ABS(D) > 0 ){\
      D=1./D;\
      *(invA)= A22*D;\
      *(invA+1)=-A21*D;\
      *(invA+2)=-A12*D;\
      *(invA+3)= A11*D;\
   } else {\
      *failed=1;\
   }\
}

Referenced by Paso_SparseMatrix_invMain().

#define Paso_BlockOps_invM_3 (   invA,
  A,
  failed 
)
Value:
{\
   register double A11=*(A+0);\
   register double A21=*(A+1);\
   register double A31=*(A+2);\
   register double A12=*(A+3);\
   register double A22=*(A+4);\
   register double A32=*(A+5);\
   register double A13=*(A+6);\
   register double A23=*(A+7);\
   register double A33=*(A+8);\
   register double D =  A11*(A22*A33-A23*A32)+ A12*(A31*A23-A21*A33)+A13*(A21*A32-A31*A22);\
   if (ABS(D) > 0 ){\
      D=1./D;\
      *(invA  )=(A22*A33-A23*A32)*D;\
      *(invA+1)=(A31*A23-A21*A33)*D;\
      *(invA+2)=(A21*A32-A31*A22)*D;\
      *(invA+3)=(A13*A32-A12*A33)*D;\
      *(invA+4)=(A11*A33-A31*A13)*D;\
      *(invA+5)=(A12*A31-A11*A32)*D;\
      *(invA+6)=(A12*A23-A13*A22)*D;\
      *(invA+7)=(A13*A21-A11*A23)*D;\
      *(invA+8)=(A11*A22-A12*A21)*D;\
   } else {\
      *failed=1;\
   }\
}

Referenced by Paso_SparseMatrix_invMain().

#define Paso_BlockOps_invM_N (   N,
  MAT,
  PIVOT,
  failed 
)    PASO_MISSING_CLAPACK
#define Paso_BlockOps_MV_N (   N,
  R,
  MAT,
  V 
)    PASO_MISSING_CLAPACK
#define Paso_BlockOps_MViP_2 (   MAT,
  V 
)
Value:
{ \
   register double S1=*(V+0);\
   register double S2=*(V+1);\
   register double A11=*(MAT+0);\
   register double A12=*(MAT+2);\
   register double A21=*(MAT+1);\
   register double A22=*(MAT+3);\
   *(V+0)  = A11 * S1 + A12 * S2;\
   *(V+1)  = A21 * S1 + A22 * S2;\
}

Referenced by Paso_BlockOps_solveAll(), Paso_Preconditioner_LocalSmoother_Sweep_colored(), and Paso_Preconditioner_LocalSmoother_Sweep_sequential().

#define Paso_BlockOps_MViP_3 (   MAT,
  V 
)
Value:
{ \
   register double S1=*(V+0);\
   register double S2=*(V+1);\
   register double S3=*(V+2);\
   register double A11=*(MAT+0);\
   register double A21=*(MAT+1);\
   register double A31=*(MAT+2);\
   register double A12=*(MAT+3);\
   register double A22=*(MAT+4);\
   register double A32=*(MAT+5);\
   register double A13=*(MAT+6);\
   register double A23=*(MAT+7);\
   register double A33=*(MAT+8);\
   *(V+0)=A11 * S1 + A12 * S2 + A13 * S3; \
   *(V+1)=A21 * S1 + A22 * S2 + A23 * S3;\
   *(V+2)=A31 * S1 + A32 * S2 + A33 * S3;\
}

Referenced by Paso_BlockOps_solveAll(), Paso_Preconditioner_LocalSmoother_Sweep_colored(), and Paso_Preconditioner_LocalSmoother_Sweep_sequential().

#define Paso_BlockOps_SMV_2 (   R,
  MAT,
  V 
)
Value:
{\
register double S1=*(V+0); \
register double S2=*(V+1);\
register double A11=*(MAT+0);\
register double A12=*(MAT+2);\
register double A21=*(MAT+1);\
register double A22=*(MAT+3);\
*(R+0)-=A11 * S1 + A12 * S2;\
*(R+1)-=A21 * S1 + A22 * S2;\
}

Referenced by Paso_Preconditioner_LocalSmoother_Sweep_colored(), and Paso_Preconditioner_LocalSmoother_Sweep_sequential().

#define Paso_BlockOps_SMV_3 (   R,
  MAT,
  V 
)
Value:
{\
register double S1=*(V+0);\
register double S2=*(V+1);\
register double S3=*(V+2);\
register double A11=*(MAT+0);\
register double A21=*(MAT+1);\
register double A31=*(MAT+2);\
register double A12=*(MAT+3);\
register double A22=*(MAT+4);\
register double A32=*(MAT+5);\
register double A13=*(MAT+6);\
register double A23=*(MAT+7);\
register double A33=*(MAT+8);\
*(R+0)-=A11 * S1 + A12 * S2 + A13 * S3; \
*(R+1)-=A21 * S1 + A22 * S2 + A23 * S3;\
*(R+2)-=A31 * S1 + A32 * S2 + A33 * S3;\
}

Referenced by Paso_Preconditioner_LocalSmoother_Sweep_colored(), and Paso_Preconditioner_LocalSmoother_Sweep_sequential().

#define Paso_BlockOps_SMV_N (   N,
  R,
  MAT,
  V 
)    PASO_MISSING_CLAPACK
#define Paso_BlockOps_solve_N (   N,
  X,
  MAT,
  PIVOT,
  failed 
)    PASO_MISSING_CLAPACK
#define PASO_MISSING_CLAPACK   Esys_setError(TYPE_ERROR, "You need to install a CLAPACK version to run a block size > 3.")

Function Documentation

void Paso_BlockOps_solveAll ( dim_t  n_block,
dim_t  n,
double *  D,
index_t pivot,
double *  x 
)