diff --git a/krylov/bicgstab.c b/krylov/bicgstab.c index 22bb96e27..ed7968250 100644 --- a/krylov/bicgstab.c +++ b/krylov/bicgstab.c @@ -36,6 +36,7 @@ hypre_BiCGSTABFunctionsCreate( int (*MatvecDestroy)( void *matvec_data ), double (*InnerProd)( void *x , void *y ), int (*CopyVector)( void *x , void *y ), + int (*ClearVector)( void *x ), int (*ScaleVector)( double alpha , void *x ), int (*Axpy)( double alpha , void *x , void *y ), int (*CommInfo)( void *A , int *my_id , int *num_procs ), @@ -54,6 +55,7 @@ hypre_BiCGSTABFunctionsCreate( bicgstab_functions->MatvecDestroy = MatvecDestroy; bicgstab_functions->InnerProd = InnerProd; bicgstab_functions->CopyVector = CopyVector; + bicgstab_functions->ClearVector = ClearVector; bicgstab_functions->ScaleVector = ScaleVector; bicgstab_functions->Axpy = Axpy; bicgstab_functions->CommInfo = CommInfo; @@ -437,7 +439,7 @@ hypre_BiCGSTABSolve(void *bicgstab_vdata, iter++; - (*(bicgstab_functions->Axpy))(-1.0,v,v); + (*(bicgstab_functions->ClearVector))(v); precond(precond_data, A, p, v); (*(bicgstab_functions->Matvec))(matvec_data,1.0,A,v,0.0,q); temp = (*(bicgstab_functions->InnerProd))(r0,q); @@ -450,7 +452,7 @@ hypre_BiCGSTABSolve(void *bicgstab_vdata, } (*(bicgstab_functions->Axpy))(alpha,v,x); (*(bicgstab_functions->Axpy))(-alpha,q,r); - (*(bicgstab_functions->Axpy))(-1.0,v,v); + (*(bicgstab_functions->ClearVector))(v); precond(precond_data, A, r, v); (*(bicgstab_functions->Matvec))(matvec_data,1.0,A,v,0.0,s); gamma = (*(bicgstab_functions->InnerProd))(r,s) / diff --git a/krylov/bicgstab.h b/krylov/bicgstab.h index e5d71f5d9..333ab806a 100644 --- a/krylov/bicgstab.h +++ b/krylov/bicgstab.h @@ -60,7 +60,6 @@ char *hypre_ParKrylovCAlloc( int count , int elt_size ); int hypre_ParKrylovFree( char *ptr ); void *hypre_ParKrylovCreateVectorArray( int n , void *vvector ); int hypre_ParKrylovMatvecT( void *matvec_data , double alpha , void *A , void *x , double beta , void *y ); -int hypre_ParKrylovClearVector( void *x ); */ /* functions in pcg_struct.c which are used here: void *hypre_ParKrylovCreateVector( void *vvector ); @@ -70,6 +69,7 @@ int hypre_ParKrylovClearVector( void *x ); int hypre_ParKrylovMatvecDestroy( void *matvec_data ); double hypre_ParKrylovInnerProd( void *x , void *y ); int hypre_ParKrylovCopyVector( void *x , void *y ); + int hypre_ParKrylovClearVector( void *x ); int hypre_ParKrylovScaleVector( double alpha , void *x ); int hypre_ParKrylovAxpy( double alpha , void *x , void *y ); int hypre_ParKrylovCommInfo( void *A , int *my_id , int *num_procs ); @@ -86,6 +86,7 @@ typedef struct int (*MatvecDestroy)( void *matvec_data ); double (*InnerProd)( void *x , void *y ); int (*CopyVector)( void *x , void *y ); + int (*ClearVector)( void *x ); int (*ScaleVector)( double alpha , void *x ); int (*Axpy)( double alpha , void *x , void *y ); int (*CommInfo)( void *A , int *my_id , int *num_procs ); @@ -160,6 +161,7 @@ extern "C" { int (*MatvecDestroy)( void *matvec_data ), double (*InnerProd)( void *x , void *y ), int (*CopyVector)( void *x , void *y ), + int (*ClearVector)( void *x ), int (*ScaleVector)( double alpha , void *x ), int (*Axpy)( double alpha , void *x , void *y ), int (*CommInfo)( void *A , int *my_id , int *num_procs ), diff --git a/krylov/krylov.h b/krylov/krylov.h index 32464ddcd..4e74aaa05 100644 --- a/krylov/krylov.h +++ b/krylov/krylov.h @@ -91,7 +91,6 @@ char *hypre_ParKrylovCAlloc( int count , int elt_size ); int hypre_ParKrylovFree( char *ptr ); void *hypre_ParKrylovCreateVectorArray( int n , void *vvector ); int hypre_ParKrylovMatvecT( void *matvec_data , double alpha , void *A , void *x , double beta , void *y ); -int hypre_ParKrylovClearVector( void *x ); */ /* functions in pcg_struct.c which are used here: void *hypre_ParKrylovCreateVector( void *vvector ); @@ -101,6 +100,7 @@ int hypre_ParKrylovClearVector( void *x ); int hypre_ParKrylovMatvecDestroy( void *matvec_data ); double hypre_ParKrylovInnerProd( void *x , void *y ); int hypre_ParKrylovCopyVector( void *x , void *y ); + int hypre_ParKrylovClearVector( void *x ); int hypre_ParKrylovScaleVector( double alpha , void *x ); int hypre_ParKrylovAxpy( double alpha , void *x , void *y ); int hypre_ParKrylovCommInfo( void *A , int *my_id , int *num_procs ); @@ -117,6 +117,7 @@ typedef struct int (*MatvecDestroy)( void *matvec_data ); double (*InnerProd)( void *x , void *y ); int (*CopyVector)( void *x , void *y ); + int (*ClearVector)( void *x ); int (*ScaleVector)( double alpha , void *x ); int (*Axpy)( double alpha , void *x , void *y ); int (*CommInfo)( void *A , int *my_id , int *num_procs ); @@ -191,6 +192,7 @@ extern "C" { int (*MatvecDestroy)( void *matvec_data ), double (*InnerProd)( void *x , void *y ), int (*CopyVector)( void *x , void *y ), + int (*ClearVector)( void *x ), int (*ScaleVector)( double alpha , void *x ), int (*Axpy)( double alpha , void *x , void *y ), int (*CommInfo)( void *A , int *my_id , int *num_procs ), @@ -1102,7 +1104,7 @@ hypre_PCGCreate( hypre_PCGFunctions *pcg_functions ); #endif /* bicgstab.c */ -hypre_BiCGSTABFunctions *hypre_BiCGSTABFunctionsCreate ( void *(*CreateVector )(void *vvector ), int (*DestroyVector )(void *vvector ), void *(*MatvecCreate )(void *A ,void *x ), int (*Matvec )(void *matvec_data ,double alpha ,void *A ,void *x ,double beta ,void *y ), int (*MatvecDestroy )(void *matvec_data ), double (*InnerProd )(void *x ,void *y ), int (*CopyVector )(void *x ,void *y ), int (*ScaleVector )(double alpha ,void *x ), int (*Axpy )(double alpha ,void *x ,void *y ), int (*CommInfo )(void *A ,int *my_id ,int *num_procs ), int (*PrecondSetup )(void *vdata ,void *A ,void *b ,void *x ), int (*Precond )(void *vdata ,void *A ,void *b ,void *x )); +hypre_BiCGSTABFunctions *hypre_BiCGSTABFunctionsCreate ( void *(*CreateVector )(void *vvector ), int (*DestroyVector )(void *vvector ), void *(*MatvecCreate )(void *A ,void *x ), int (*Matvec )(void *matvec_data ,double alpha ,void *A ,void *x ,double beta ,void *y ), int (*MatvecDestroy )(void *matvec_data ), double (*InnerProd )(void *x ,void *y ), int (*CopyVector )(void *x ,void *y ), int (*ClearVector )(void *x ), int (*ScaleVector )(double alpha ,void *x ), int (*Axpy )(double alpha ,void *x ,void *y ), int (*CommInfo )(void *A ,int *my_id ,int *num_procs ), int (*PrecondSetup )(void *vdata ,void *A ,void *b ,void *x ), int (*Precond )(void *vdata ,void *A ,void *b ,void *x )); void *hypre_BiCGSTABCreate ( hypre_BiCGSTABFunctions *bicgstab_functions ); int hypre_BiCGSTABDestroy ( void *bicgstab_vdata ); int hypre_BiCGSTABSetup ( void *bicgstab_vdata , void *A , void *b , void *x ); diff --git a/sstruct_ls/HYPRE_sstruct_bicgstab.c b/sstruct_ls/HYPRE_sstruct_bicgstab.c index cbea37f53..b423c3879 100644 --- a/sstruct_ls/HYPRE_sstruct_bicgstab.c +++ b/sstruct_ls/HYPRE_sstruct_bicgstab.c @@ -36,6 +36,7 @@ HYPRE_SStructBiCGSTABCreate( MPI_Comm comm, hypre_SStructKrylovDestroyVector, hypre_SStructKrylovMatvecCreate, hypre_SStructKrylovMatvec, hypre_SStructKrylovMatvecDestroy, hypre_SStructKrylovInnerProd, hypre_SStructKrylovCopyVector, + hypre_SStructKrylovClearVector, hypre_SStructKrylovScaleVector, hypre_SStructKrylovAxpy, hypre_SStructKrylovCommInfo, hypre_SStructKrylovIdentitySetup, hypre_SStructKrylovIdentity ); diff --git a/sstruct_ls/_hypre_sstruct_ls.h b/sstruct_ls/_hypre_sstruct_ls.h index 0a23734d4..be14bc7de 100644 --- a/sstruct_ls/_hypre_sstruct_ls.h +++ b/sstruct_ls/_hypre_sstruct_ls.h @@ -10,7 +10,6 @@ * $Revision$ ***********************************************************************EHEADER*/ - #include #include "HYPRE_sstruct_ls.h" @@ -29,6 +28,17 @@ extern "C" { #endif +/*BHEADER********************************************************************** + * Copyright (c) 2008, Lawrence Livermore National Security, LLC. + * Produced at the Lawrence Livermore National Laboratory. + * This file is part of HYPRE. See file COPYRIGHT for details. + * + * HYPRE is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License (as published by the Free + * Software Foundation) version 2.1 dated February 1999. + * + * $Revision$ + ***********************************************************************EHEADER*/ @@ -70,6 +80,17 @@ typedef struct ((own_data) -> own_composite_size) #endif +/*BHEADER********************************************************************** + * Copyright (c) 2008, Lawrence Livermore National Security, LLC. + * Produced at the Lawrence Livermore National Laboratory. + * This file is part of HYPRE. See file COPYRIGHT for details. + * + * HYPRE is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License (as published by the Free + * Software Foundation) version 2.1 dated February 1999. + * + * $Revision$ + ***********************************************************************EHEADER*/ @@ -91,6 +112,17 @@ typedef struct } hypre_SStructRecvInfoData; #endif +/*BHEADER********************************************************************** + * Copyright (c) 2008, Lawrence Livermore National Security, LLC. + * Produced at the Lawrence Livermore National Laboratory. + * This file is part of HYPRE. See file COPYRIGHT for details. + * + * HYPRE is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License (as published by the Free + * Software Foundation) version 2.1 dated February 1999. + * + * $Revision$ + ***********************************************************************EHEADER*/ @@ -113,6 +145,17 @@ typedef struct } hypre_SStructSendInfoData; #endif +/*BHEADER********************************************************************** + * Copyright (c) 2008, Lawrence Livermore National Security, LLC. + * Produced at the Lawrence Livermore National Laboratory. + * This file is part of HYPRE. See file COPYRIGHT for details. + * + * HYPRE is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License (as published by the Free + * Software Foundation) version 2.1 dated February 1999. + * + * $Revision$ + ***********************************************************************EHEADER*/ @@ -128,6 +171,17 @@ typedef struct } hypre_PTopology; +/*BHEADER********************************************************************** + * Copyright (c) 2008, Lawrence Livermore National Security, LLC. + * Produced at the Lawrence Livermore National Laboratory. + * This file is part of HYPRE. See file COPYRIGHT for details. + * + * HYPRE is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License (as published by the Free + * Software Foundation) version 2.1 dated February 1999. + * + * $Revision$ + ***********************************************************************EHEADER*/ @@ -231,6 +285,17 @@ typedef struct } hypre_MaxwellData; #endif +/*BHEADER********************************************************************** + * Copyright (c) 2008, Lawrence Livermore National Security, LLC. + * Produced at the Lawrence Livermore National Laboratory. + * This file is part of HYPRE. See file COPYRIGHT for details. + * + * HYPRE is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License (as published by the Free + * Software Foundation) version 2.1 dated February 1999. + * + * $Revision$ + ***********************************************************************EHEADER*/ diff --git a/struct_ls/HYPRE_struct_bicgstab.c b/struct_ls/HYPRE_struct_bicgstab.c index d4aa6ab0a..36d037228 100644 --- a/struct_ls/HYPRE_struct_bicgstab.c +++ b/struct_ls/HYPRE_struct_bicgstab.c @@ -41,6 +41,7 @@ HYPRE_StructBiCGSTABCreate( MPI_Comm comm, HYPRE_StructSolver *solver ) hypre_StructKrylovDestroyVector, hypre_StructKrylovMatvecCreate, hypre_StructKrylovMatvec, hypre_StructKrylovMatvecDestroy, hypre_StructKrylovInnerProd, hypre_StructKrylovCopyVector, + hypre_StructKrylovClearVector, hypre_StructKrylovScaleVector, hypre_StructKrylovAxpy, hypre_StructKrylovCommInfo, hypre_StructKrylovIdentitySetup, hypre_StructKrylovIdentity ); diff --git a/struct_ls/_hypre_struct_ls.h b/struct_ls/_hypre_struct_ls.h index 7c5b390ef..e91b986ea 100644 --- a/struct_ls/_hypre_struct_ls.h +++ b/struct_ls/_hypre_struct_ls.h @@ -10,7 +10,6 @@ * $Revision$ ***********************************************************************EHEADER*/ - #include "_hypre_utilities.h" #include "HYPRE_struct_ls.h" diff --git a/struct_ls/hybrid.c b/struct_ls/hybrid.c index 271a4213d..29bc9c00d 100644 --- a/struct_ls/hybrid.c +++ b/struct_ls/hybrid.c @@ -590,6 +590,7 @@ hypre_HybridSolve( void *hybrid_vdata, hypre_StructKrylovDestroyVector, hypre_StructKrylovMatvecCreate, hypre_StructKrylovMatvec, hypre_StructKrylovMatvecDestroy, hypre_StructKrylovInnerProd, hypre_StructKrylovCopyVector, + hypre_StructKrylovClearVector, hypre_StructKrylovScaleVector, hypre_StructKrylovAxpy, hypre_StructKrylovCommInfo, hypre_StructKrylovIdentitySetup, hypre_StructKrylovIdentity ); @@ -715,6 +716,7 @@ hypre_HybridSolve( void *hybrid_vdata, hypre_StructKrylovDestroyVector, hypre_StructKrylovMatvecCreate, hypre_StructKrylovMatvec, hypre_StructKrylovMatvecDestroy, hypre_StructKrylovInnerProd, hypre_StructKrylovCopyVector, + hypre_StructKrylovClearVector, hypre_StructKrylovScaleVector, hypre_StructKrylovAxpy, hypre_StructKrylovCommInfo, hypre_StructKrylovIdentitySetup, hypre_StructKrylovIdentity );