60
60
Paso_Preconditioner_Smoother* out=MEMALLOC(1,Paso_Preconditioner_Smoother);
61
if (! Paso_checkPtr(out)) {
61
if (! Esys_checkPtr(out)) {
62
62
out->localSmoother=Paso_Preconditioner_LocalSmoother_alloc(A_p->mainBlock,jacobi,verbose);
63
63
out->is_local=is_local;
65
if (Paso_MPIInfo_noError(A_p->mpi_info)) {
65
if (Esys_MPIInfo_noError(A_p->mpi_info)) {
68
68
Paso_Preconditioner_Smoother_free(out);
72
Paso_Preconditioner_LocalSmoother* Paso_Preconditioner_LocalSmoother_alloc(Paso_SparseMatrix * A_p, const bool_t jacobi, const bool_t verbose)
72
Paso_Preconditioner_LocalSmoother* Paso_Preconditioner_LocalSmoother_alloc(Paso_SparseMatrix * A_p, const bool_t jacobi, bool_t verbose)
75
75
dim_t n=A_p->numRows;
76
76
dim_t n_block=A_p->row_block_size;
77
77
dim_t block_size=A_p->block_size;
79
double time0=Paso_timer();
79
double time0=Esys_timer();
81
81
Paso_Preconditioner_LocalSmoother* out=MEMALLOC(1,Paso_Preconditioner_LocalSmoother);
82
if (! Paso_checkPtr(out)) {
82
if (! Esys_checkPtr(out)) {
84
84
out->diag=MEMALLOC( ((size_t) n) * ((size_t) block_size),double);
85
85
out->pivot=MEMALLOC( ((size_t) n) * ((size_t) n_block), index_t);
86
86
out->buffer=MEMALLOC( ((size_t) n) * ((size_t) n_block), double);
87
87
out->Jacobi=jacobi;
89
if ( ! ( Paso_checkPtr(out->diag) || Paso_checkPtr(out->pivot) ) ) {
89
if ( ! ( Esys_checkPtr(out->diag) || Esys_checkPtr(out->pivot) ) ) {
90
90
Paso_SparseMatrix_invMain(A_p, out->diag, out->pivot );
94
time0=Paso_timer()-time0;
94
time0=Esys_timer()-time0;
99
99
printf("timing: Jacobi preparation: elemination : %e\n",time0);