/[escript]/trunk/paso/src/Smoother.c
ViewVC logotype

Diff of /trunk/paso/src/Smoother.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2548 by jfenwick, Mon Jul 20 06:20:06 2009 UTC revision 2881 by jfenwick, Thu Jan 28 02:03:15 2010 UTC
# Line 1  Line 1 
1    
2  /*******************************************************  /*******************************************************
3  *  *
4  * Copyright (c) 2003-2009 by University of Queensland  * Copyright (c) 2003-2010 by University of Queensland
5  * Earth Systems Science Computational Center (ESSCC)  * Earth Systems Science Computational Center (ESSCC)
6  * http://www.uq.edu.au/esscc  * http://www.uq.edu.au/esscc
7  *  *
# Line 77  Paso_Solver_GS* Paso_Solver_getGS(Paso_S Line 77  Paso_Solver_GS* Paso_Solver_getGS(Paso_S
77    
78            if (! (Paso_checkPtr(out->diag))) {            if (! (Paso_checkPtr(out->diag))) {
79               if (n_block==1) {               if (n_block==1) {
80                  #pragma omp parallel for private(i, iPtr) schedule(static)                  #pragma omp parallel for private(i,iPtr,iptr_main) schedule(static)
81                  for (i = 0; i < A->pattern->numOutput; i++) {                  for (i = 0; i < A->pattern->numOutput; i++) {
82                       iptr_main=0;
83                     out->diag[i]=1.;                     out->diag[i]=1.;
84                     /* find main diagonal */                     /* find main diagonal */
85                     for (iPtr = A->pattern->ptr[i]; iPtr < A->pattern->ptr[i + 1]; iPtr++) {                     for (iPtr = A->pattern->ptr[i]; iPtr < A->pattern->ptr[i + 1]; iPtr++) {
# Line 91  Paso_Solver_GS* Paso_Solver_getGS(Paso_S Line 92  Paso_Solver_GS* Paso_Solver_getGS(Paso_S
92                     out->main_iptr[i]=iptr_main;                     out->main_iptr[i]=iptr_main;
93                  }                  }
94               } else if (n_block==2) {               } else if (n_block==2) {
95                  #pragma omp parallel for private(i, iPtr) schedule(static)                  #pragma omp parallel for private(i,iPtr,iptr_main) schedule(static)
96                  for (i = 0; i < A->pattern->numOutput; i++) {                  for (i = 0; i < A->pattern->numOutput; i++) {
97                     out->diag[i*4+0]= 1.;                     out->diag[i*4+0]= 1.;
98                     out->diag[i*4+1]= 0.;                     out->diag[i*4+1]= 0.;
99                     out->diag[i*4+2]= 0.;                     out->diag[i*4+2]= 0.;
100                     out->diag[i*4+3]= 1.;                     out->diag[i*4+3]= 1.;
101                       iptr_main=0;
102                     /* find main diagonal */                     /* find main diagonal */
103                     for (iPtr = A->pattern->ptr[i]; iPtr < A->pattern->ptr[i + 1]; iPtr++) {                     for (iPtr = A->pattern->ptr[i]; iPtr < A->pattern->ptr[i + 1]; iPtr++) {
104                         if (A->pattern->index[iPtr]==i) {                         if (A->pattern->index[iPtr]==i) {
# Line 111  Paso_Solver_GS* Paso_Solver_getGS(Paso_S Line 113  Paso_Solver_GS* Paso_Solver_getGS(Paso_S
113                     out->main_iptr[i]=iptr_main;                     out->main_iptr[i]=iptr_main;
114                  }                    }  
115               } else if (n_block==3) {               } else if (n_block==3) {
116                  #pragma omp parallel for private(i, iPtr) schedule(static)                  #pragma omp parallel for private(i, iPtr,iptr_main) schedule(static)
117                  for (i = 0; i < A->pattern->numOutput; i++) {                  for (i = 0; i < A->pattern->numOutput; i++) {
118                     out->diag[i*9  ]=1.;                     out->diag[i*9  ]=1.;
119                     out->diag[i*9+1]=0.;                     out->diag[i*9+1]=0.;
# Line 122  Paso_Solver_GS* Paso_Solver_getGS(Paso_S Line 124  Paso_Solver_GS* Paso_Solver_getGS(Paso_S
124                     out->diag[i*9+6]=0.;                     out->diag[i*9+6]=0.;
125                     out->diag[i*9+7]=0.;                     out->diag[i*9+7]=0.;
126                     out->diag[i*9+8]=1.;                     out->diag[i*9+8]=1.;
127                       iptr_main=0;
128                     /* find main diagonal */                     /* find main diagonal */
129                     for (iPtr = A->pattern->ptr[i]; iPtr < A->pattern->ptr[i + 1]; iPtr++) {                     for (iPtr = A->pattern->ptr[i]; iPtr < A->pattern->ptr[i + 1]; iPtr++) {
130                         if (A->pattern->index[iPtr]==i) {                         if (A->pattern->index[iPtr]==i) {

Legend:
Removed from v.2548  
changed lines
  Added in v.2881

  ViewVC Help
Powered by ViewVC 1.1.26