/[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 616 by elspeth, Wed Mar 22 02:46:56 2006 UTC
# Line 1  Line 1 
1  /*  /*
2   ******************************************************************************   ************************************************************
3   *                                                                            *   *          Copyright 2006 by ACcESS MNRF                   *
4   *       COPYRIGHT  ACcESS 2003,2004,2005 -  All Rights Reserved              *   *                                                          *
5   *                                                                            *   *              http://www.access.edu.au                    *
6   * This software is the property of ACcESS. No part of this code              *   *       Primary Business: Queensland, Australia            *
7   * may be copied in any form or by any means without the expressed written    *   *  Licensed under the Open Software License version 3.0    *
8   * consent of ACcESS.  Copying, use or modification of this software          *   *     http://www.opensource.org/licenses/osl-3.0.php       *
9   * by any unauthorised person is illegal unless that person has a software    *   *                                                          *
10   * license agreement with ACcESS.                                             *   ************************************************************
  *                                                                            *  
  ******************************************************************************  
11  */  */
12  /**************************************************************/  /**************************************************************/
13    
# Line 37  Line 35 
35    
36  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,
37                                                        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) {
38      index_t index_offset=(in->type & MATRIX_FORMAT_OFFSET1 ? 1:0);
39    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;
40    dim_t row_block_size=in->row_block_size;    dim_t row_block_size=in->row_block_size;
41    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 43  void  Finley_Assemble_addToSystemMatrix(
43    dim_t num_subblocks_Equa=num_Equa/row_block_size;    dim_t num_subblocks_Equa=num_Equa/row_block_size;
44    dim_t num_subblocks_Sol=num_Sol/col_block_size;    dim_t num_subblocks_Sol=num_Sol/col_block_size;
45    
46    if (in->type==CSR) {    if (in->type & MATRIX_FORMAT_CSC) {
47            for (k_Equa=0;k_Equa<NN_Equa;++k_Equa) {           for (k_Sol=0;k_Sol<NN_Sol;k_Sol++) {
48              j_Equa=Nodes_Equa[k_Equa];              j_Sol=Nodes_Sol[k_Sol];
49              for (l_row=0;l_row<num_subblocks_Equa;++l_row) {              for (l_col=0;l_col<num_subblocks_Sol;++l_col) {
50                 iptr=j_Equa*num_subblocks_Equa+l_row;                 iptr=j_Sol*num_subblocks_Sol+l_col;
51                 for (k_Sol=0;k_Sol<NN_Sol;++k_Sol) {                 for (k_Equa=0;k_Equa<NN_Equa;k_Equa++) {
52                   j_Sol=Nodes_Sol[k_Sol];                   j_Equa=Nodes_Equa[k_Equa];
53                   for (l_col=0;l_col<num_subblocks_Sol;++l_col) {                   for (l_row=0;l_row<num_subblocks_Equa;++l_row) {
54                      index=j_Sol*num_subblocks_Sol+INDEX_OFFSET+l_col;                      index=j_Equa*num_subblocks_Equa+index_offset+l_row;
55                  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) {
56                      if (in->pattern->index[k]==index) {                      if (in->pattern->index[k]==index) {
57                            for (ic=0;ic<col_block_size;++ic) {                            for (ic=0;ic<col_block_size;++ic) {
58                                  i_Sol=ic+col_block_size*l_col;                                  i_Sol=ic+col_block_size*l_col;
# Line 68  void  Finley_Assemble_addToSystemMatrix( Line 67  void  Finley_Assemble_addToSystemMatrix(
67                      }                      }
68                   }                   }
69                 }                 }
70               }              }
71            }           }
72       } else {     } else {
73           for (k_Sol=0;k_Sol<NN_Sol;k_Sol++) {            for (k_Equa=0;k_Equa<NN_Equa;++k_Equa) {
74              j_Sol=Nodes_Sol[k_Sol];              j_Equa=Nodes_Equa[k_Equa];
75              for (l_col=0;l_col<num_subblocks_Sol;++l_col) {              for (l_row=0;l_row<num_subblocks_Equa;++l_row) {
76                 iptr=j_Sol*num_subblocks_Sol+l_col;                 iptr=j_Equa*num_subblocks_Equa+l_row;
77                 for (k_Equa=0;k_Equa<NN_Equa;k_Equa++) {                 for (k_Sol=0;k_Sol<NN_Sol;++k_Sol) {
78                   j_Equa=Nodes_Equa[k_Equa];                   j_Sol=Nodes_Sol[k_Sol];
79                   for (l_row=0;l_row<num_subblocks_Equa;++l_row) {                   for (l_col=0;l_col<num_subblocks_Sol;++l_col) {
80                      index=j_Equa*num_subblocks_Equa+INDEX_OFFSET+l_row;                      index=j_Sol*num_subblocks_Sol+index_offset+l_col;
81                  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) {
82                      if (in->pattern->index[k]==index) {                      if (in->pattern->index[k]==index) {
83                            for (ic=0;ic<col_block_size;++ic) {                            for (ic=0;ic<col_block_size;++ic) {
84                                  i_Sol=ic+col_block_size*l_col;                                  i_Sol=ic+col_block_size*l_col;
# Line 94  void  Finley_Assemble_addToSystemMatrix( Line 93  void  Finley_Assemble_addToSystemMatrix(
93                      }                      }
94                   }                   }
95                 }                 }
96              }               }
97           }            }
98     }     }
99  }  }
100  /*  /*

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

  ViewVC Help
Powered by ViewVC 1.1.26