| matrix.c (f6275e2ea51e47c27456a6b281dc40719917330c) | matrix.c (ef66eb6987ddfdf4e414d6b820cbc8d8d7d17bc2) |
|---|---|
| 1/*$Id: matrix.c,v 1.411 2001/08/07 03:02:41 balay Exp bsmith $*/ | 1/*$Id: matrix.c,v 1.412 2001/08/07 21:29:30 bsmith Exp bsmith $*/ |
| 2 3/* 4 This is where the abstract matrix operations are defined 5*/ 6 7#include "src/mat/matimpl.h" /*I "petscmat.h" I*/ 8#include "src/vec/vecimpl.h" 9 --- 2065 unchanged lines hidden (view full) --- 2075 2076 Concepts: matrices^triangular solves 2077 2078.seealso: MatSolve(), MatSolveAdd(), MatSolveTranspose() 2079@*/ 2080int MatSolveTransposeAdd(Mat mat,Vec b,Vec y,Vec x) 2081{ 2082 PetscScalar one = 1.0; | 2 3/* 4 This is where the abstract matrix operations are defined 5*/ 6 7#include "src/mat/matimpl.h" /*I "petscmat.h" I*/ 8#include "src/vec/vecimpl.h" 9 --- 2065 unchanged lines hidden (view full) --- 2075 2076 Concepts: matrices^triangular solves 2077 2078.seealso: MatSolve(), MatSolveAdd(), MatSolveTranspose() 2079@*/ 2080int MatSolveTransposeAdd(Mat mat,Vec b,Vec y,Vec x) 2081{ 2082 PetscScalar one = 1.0; |
| 2083 int ierr; 2084 Vec tmp; | 2083 int ierr; 2084 Vec tmp; |
| 2085 2086 PetscFunctionBegin; 2087 PetscValidHeaderSpecific(mat,MAT_COOKIE); 2088 PetscValidType(mat); 2089 MatPreallocated(mat); 2090 PetscValidHeaderSpecific(y,VEC_COOKIE); 2091 PetscValidHeaderSpecific(b,VEC_COOKIE); 2092 PetscValidHeaderSpecific(x,VEC_COOKIE); --- 110 unchanged lines hidden (view full) --- 2203 2204#undef __FUNCT__ 2205#define __FUNCT__ "MatCopy_Basic" 2206/* 2207 Default matrix copy routine. 2208*/ 2209int MatCopy_Basic(Mat A,Mat B,MatStructure str) 2210{ | 2085 2086 PetscFunctionBegin; 2087 PetscValidHeaderSpecific(mat,MAT_COOKIE); 2088 PetscValidType(mat); 2089 MatPreallocated(mat); 2090 PetscValidHeaderSpecific(y,VEC_COOKIE); 2091 PetscValidHeaderSpecific(b,VEC_COOKIE); 2092 PetscValidHeaderSpecific(x,VEC_COOKIE); --- 110 unchanged lines hidden (view full) --- 2203 2204#undef __FUNCT__ 2205#define __FUNCT__ "MatCopy_Basic" 2206/* 2207 Default matrix copy routine. 2208*/ 2209int MatCopy_Basic(Mat A,Mat B,MatStructure str) 2210{ |
| 2211 int ierr,i,rstart,rend,nz,*cwork; | 2211 int ierr,i,rstart,rend,nz,*cwork; |
| 2212 PetscScalar *vwork; 2213 2214 PetscFunctionBegin; 2215 ierr = MatZeroEntries(B);CHKERRQ(ierr); 2216 ierr = MatGetOwnershipRange(A,&rstart,&rend);CHKERRQ(ierr); 2217 for (i=rstart; i<rend; i++) { 2218 ierr = MatGetRow(A,i,&nz,&cwork,&vwork);CHKERRQ(ierr); 2219 ierr = MatSetValues(B,1,&i,nz,cwork,vwork,INSERT_VALUES);CHKERRQ(ierr); --- 56 unchanged lines hidden (view full) --- 2276 ierr = MatCopy_Basic(A,B,str);CHKERRQ(ierr); 2277 } 2278 ierr = PetscLogEventEnd(MAT_Copy,A,B,0,0);CHKERRQ(ierr); 2279 PetscFunctionReturn(0); 2280} 2281 2282#include "petscsys.h" 2283PetscTruth MatConvertRegisterAllCalled = PETSC_FALSE; | 2212 PetscScalar *vwork; 2213 2214 PetscFunctionBegin; 2215 ierr = MatZeroEntries(B);CHKERRQ(ierr); 2216 ierr = MatGetOwnershipRange(A,&rstart,&rend);CHKERRQ(ierr); 2217 for (i=rstart; i<rend; i++) { 2218 ierr = MatGetRow(A,i,&nz,&cwork,&vwork);CHKERRQ(ierr); 2219 ierr = MatSetValues(B,1,&i,nz,cwork,vwork,INSERT_VALUES);CHKERRQ(ierr); --- 56 unchanged lines hidden (view full) --- 2276 ierr = MatCopy_Basic(A,B,str);CHKERRQ(ierr); 2277 } 2278 ierr = PetscLogEventEnd(MAT_Copy,A,B,0,0);CHKERRQ(ierr); 2279 PetscFunctionReturn(0); 2280} 2281 2282#include "petscsys.h" 2283PetscTruth MatConvertRegisterAllCalled = PETSC_FALSE; |
| 2284PetscFList MatConvertList = 0; | 2284PetscFList MatConvertList = 0; |
| 2285 2286#undef __FUNCT__ 2287#define __FUNCT__ "MatConvertRegister" 2288/*@C 2289 MatConvertRegister - Allows one to register a routine that reads matrices 2290 from a binary file for a particular matrix type. 2291 2292 Not Collective --- 66 unchanged lines hidden (view full) --- 2359 ierr = PetscLogEventBegin(MAT_Convert,mat,0,0,0);CHKERRQ(ierr); 2360 2361 ierr = PetscTypeCompare((PetscObject)mat,newtype,&sametype);CHKERRQ(ierr); 2362 ierr = PetscStrcmp(newtype,"same",&issame);CHKERRQ(ierr); 2363 if ((sametype || issame) && mat->ops->duplicate) { 2364 ierr = (*mat->ops->duplicate)(mat,MAT_COPY_VALUES,M);CHKERRQ(ierr); 2365 } else { 2366 int (*conv)(Mat,MatType,Mat*); | 2285 2286#undef __FUNCT__ 2287#define __FUNCT__ "MatConvertRegister" 2288/*@C 2289 MatConvertRegister - Allows one to register a routine that reads matrices 2290 from a binary file for a particular matrix type. 2291 2292 Not Collective --- 66 unchanged lines hidden (view full) --- 2359 ierr = PetscLogEventBegin(MAT_Convert,mat,0,0,0);CHKERRQ(ierr); 2360 2361 ierr = PetscTypeCompare((PetscObject)mat,newtype,&sametype);CHKERRQ(ierr); 2362 ierr = PetscStrcmp(newtype,"same",&issame);CHKERRQ(ierr); 2363 if ((sametype || issame) && mat->ops->duplicate) { 2364 ierr = (*mat->ops->duplicate)(mat,MAT_COPY_VALUES,M);CHKERRQ(ierr); 2365 } else { 2366 int (*conv)(Mat,MatType,Mat*); |
| 2367 ierr = PetscStrcpy(convname,"MatConvertTo_");CHKERRQ(ierr); 2368 ierr = PetscStrcat(convname,newtype);CHKERRQ(ierr); 2369 ierr = PetscFListFind(mat->comm,MatConvertList,convname,(void(**)())&conv);CHKERRQ(ierr); | 2367 if (!MatConvertRegisterAllCalled) { 2368 ierr = MatConvertRegisterAll(PETSC_NULL);CHKERRQ(ierr); 2369 } 2370 ierr = PetscFListFind(mat->comm,MatConvertList,newtype,(void(**)())&conv);CHKERRQ(ierr); |
| 2370 if (conv) { 2371 ierr = (*conv)(mat,newtype,M);CHKERRQ(ierr); 2372 } else { 2373 ierr = PetscStrcpy(convname,"MatConvert_");CHKERRQ(ierr); 2374 ierr = PetscStrcat(convname,mat->type_name);CHKERRQ(ierr); 2375 ierr = PetscStrcat(convname,"_");CHKERRQ(ierr); 2376 ierr = PetscStrcat(convname,newtype);CHKERRQ(ierr); 2377 ierr = PetscStrcat(convname,"_C");CHKERRQ(ierr); --- 2233 unchanged lines hidden --- | 2371 if (conv) { 2372 ierr = (*conv)(mat,newtype,M);CHKERRQ(ierr); 2373 } else { 2374 ierr = PetscStrcpy(convname,"MatConvert_");CHKERRQ(ierr); 2375 ierr = PetscStrcat(convname,mat->type_name);CHKERRQ(ierr); 2376 ierr = PetscStrcat(convname,"_");CHKERRQ(ierr); 2377 ierr = PetscStrcat(convname,newtype);CHKERRQ(ierr); 2378 ierr = PetscStrcat(convname,"_C");CHKERRQ(ierr); --- 2233 unchanged lines hidden --- |