/[escript]/trunk/finley/src/Assemble_addToSystemMatrix.c
ViewVC logotype

Diff of /trunk/finley/src/Assemble_addToSystemMatrix.c

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

trunk/finley/src/finleyC/Assemble_addToSystemMatrix.c revision 155 by jgs, Wed Nov 9 02:02:19 2005 UTC trunk/finley/src/Assemble_addToSystemMatrix.c revision 471 by jgs, Fri Jan 27 01:33:02 2006 UTC
# Line 37  Line 37 
37    
38  void  Finley_Assemble_addToSystemMatrix(Paso_SystemMatrix* in,dim_t NN_Equa,index_t* Nodes_Equa, dim_t num_Equa,  void  Finley_Assemble_addToSystemMatrix(Paso_SystemMatrix* in,dim_t NN_Equa,index_t* Nodes_Equa, dim_t num_Equa,
39                                                        dim_t NN_Sol,index_t* Nodes_Sol, dim_t num_Sol, double* array) {                                                        dim_t NN_Sol,index_t* Nodes_Sol, dim_t num_Sol, double* array) {
40      index_t index_offset=(in->type & MATRIX_FORMAT_OFFSET1 ? 1:0);
41    dim_t k_Equa,j_Equa,j_Sol,k_Sol,i_Equa,i_Sol,l_col,l_row,ic,ir,index,k,iptr;    dim_t k_Equa,j_Equa,j_Sol,k_Sol,i_Equa,i_Sol,l_col,l_row,ic,ir,index,k,iptr;
42    dim_t row_block_size=in->row_block_size;    dim_t row_block_size=in->row_block_size;
43    dim_t col_block_size=in->col_block_size;    dim_t col_block_size=in->col_block_size;
# Line 44  void  Finley_Assemble_addToSystemMatrix( Line 45  void  Finley_Assemble_addToSystemMatrix(
45    dim_t num_subblocks_Equa=num_Equa/row_block_size;    dim_t num_subblocks_Equa=num_Equa/row_block_size;
46    dim_t num_subblocks_Sol=num_Sol/col_block_size;    dim_t num_subblocks_Sol=num_Sol/col_block_size;
47    
48    if (in->type==CSR) {    if (in->type & MATRIX_FORMAT_CSC) {
49            for (k_Equa=0;k_Equa<NN_Equa;++k_Equa) {           for (k_Sol=0;k_Sol<NN_Sol;k_Sol++) {
50              j_Equa=Nodes_Equa[k_Equa];              j_Sol=Nodes_Sol[k_Sol];
51              for (l_row=0;l_row<num_subblocks_Equa;++l_row) {              for (l_col=0;l_col<num_subblocks_Sol;++l_col) {
52                 iptr=j_Equa*num_subblocks_Equa+l_row;                 iptr=j_Sol*num_subblocks_Sol+l_col;
53                 for (k_Sol=0;k_Sol<NN_Sol;++k_Sol) {                 for (k_Equa=0;k_Equa<NN_Equa;k_Equa++) {
54                   j_Sol=Nodes_Sol[k_Sol];                   j_Equa=Nodes_Equa[k_Equa];
55                   for (l_col=0;l_col<num_subblocks_Sol;++l_col) {                   for (l_row=0;l_row<num_subblocks_Equa;++l_row) {
56                      index=j_Sol*num_subblocks_Sol+INDEX_OFFSET+l_col;                      index=j_Equa*num_subblocks_Equa+index_offset+l_row;
57                  for (k=in->pattern->ptr[iptr]-PTR_OFFSET;k<in->pattern->ptr[iptr+1]-PTR_OFFSET;++k) {                  for (k=in->pattern->ptr[iptr]-index_offset;k<in->pattern->ptr[iptr+1]-index_offset;++k) {
58                      if (in->pattern->index[k]==index) {                      if (in->pattern->index[k]==index) {
59                            for (ic=0;ic<col_block_size;++ic) {                            for (ic=0;ic<col_block_size;++ic) {
60                                  i_Sol=ic+col_block_size*l_col;                                  i_Sol=ic+col_block_size*l_col;
# Line 68  void  Finley_Assemble_addToSystemMatrix( Line 69  void  Finley_Assemble_addToSystemMatrix(
69                      }                      }
70                   }                   }
71                 }                 }
72               }              }
73            }           }
74       } else {     } else {
75           for (k_Sol=0;k_Sol<NN_Sol;k_Sol++) {            for (k_Equa=0;k_Equa<NN_Equa;++k_Equa) {
76              j_Sol=Nodes_Sol[k_Sol];              j_Equa=Nodes_Equa[k_Equa];
77              for (l_col=0;l_col<num_subblocks_Sol;++l_col) {              for (l_row=0;l_row<num_subblocks_Equa;++l_row) {
78                 iptr=j_Sol*num_subblocks_Sol+l_col;                 iptr=j_Equa*num_subblocks_Equa+l_row;
79                 for (k_Equa=0;k_Equa<NN_Equa;k_Equa++) {                 for (k_Sol=0;k_Sol<NN_Sol;++k_Sol) {
80                   j_Equa=Nodes_Equa[k_Equa];                   j_Sol=Nodes_Sol[k_Sol];
81                   for (l_row=0;l_row<num_subblocks_Equa;++l_row) {                   for (l_col=0;l_col<num_subblocks_Sol;++l_col) {
82                      index=j_Equa*num_subblocks_Equa+INDEX_OFFSET+l_row;                      index=j_Sol*num_subblocks_Sol+index_offset+l_col;
83                  for (k=in->pattern->ptr[iptr]-PTR_OFFSET;k<in->pattern->ptr[iptr+1]-PTR_OFFSET;++k) {                  for (k=in->pattern->ptr[iptr]-index_offset;k<in->pattern->ptr[iptr+1]-index_offset;++k) {
84                      if (in->pattern->index[k]==index) {                      if (in->pattern->index[k]==index) {
85                            for (ic=0;ic<col_block_size;++ic) {                            for (ic=0;ic<col_block_size;++ic) {
86                                  i_Sol=ic+col_block_size*l_col;                                  i_Sol=ic+col_block_size*l_col;
# Line 94  void  Finley_Assemble_addToSystemMatrix( Line 95  void  Finley_Assemble_addToSystemMatrix(
95                      }                      }
96                   }                   }
97                 }                 }
98              }               }
99           }            }
100     }     }
101  }  }
102  /*  /*

Legend:
Removed from v.155  
changed lines
  Added in v.471

  ViewVC Help
Powered by ViewVC 1.1.26