1998-02-20 07:27:26 +08:00
|
|
|
/*BHEADER**********************************************************************
|
2008-07-18 09:34:48 +08:00
|
|
|
* Copyright (c) 2008, Lawrence Livermore National Security, LLC.
|
2006-07-28 07:26:57 +08:00
|
|
|
* Produced at the Lawrence Livermore National Laboratory.
|
2008-07-18 09:34:48 +08:00
|
|
|
* This file is part of HYPRE. See file COPYRIGHT for details.
|
1998-02-20 07:27:26 +08:00
|
|
|
*
|
2008-07-18 09:34:48 +08:00
|
|
|
* 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.
|
1998-02-20 07:27:26 +08:00
|
|
|
*
|
|
|
|
|
* $Revision$
|
2006-07-28 07:26:57 +08:00
|
|
|
***********************************************************************EHEADER*/
|
|
|
|
|
|
2006-09-23 06:06:21 +08:00
|
|
|
|
|
|
|
|
|
2007-11-14 03:48:28 +08:00
|
|
|
|
1998-02-20 07:27:26 +08:00
|
|
|
/******************************************************************************
|
|
|
|
|
*
|
|
|
|
|
* Member functions for hypre_MultiblockMatrix class.
|
|
|
|
|
*
|
|
|
|
|
*****************************************************************************/
|
|
|
|
|
|
1998-03-09 14:10:04 +08:00
|
|
|
#include "headers.h"
|
1998-02-20 07:27:26 +08:00
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------
|
1999-09-18 03:05:03 +08:00
|
|
|
* hypre_MultiblockMatrixCreate
|
1998-02-20 07:27:26 +08:00
|
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
hypre_MultiblockMatrix *
|
1999-09-18 03:05:03 +08:00
|
|
|
hypre_MultiblockMatrixCreate( )
|
1998-02-20 07:27:26 +08:00
|
|
|
{
|
|
|
|
|
hypre_MultiblockMatrix *matrix;
|
|
|
|
|
|
|
|
|
|
matrix = hypre_CTAlloc(hypre_MultiblockMatrix, 1);
|
|
|
|
|
|
|
|
|
|
return ( matrix );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------
|
1999-09-18 03:05:03 +08:00
|
|
|
* hypre_MultiblockMatrixDestroy
|
1998-02-20 07:27:26 +08:00
|
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
|
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int
|
1999-09-18 03:05:03 +08:00
|
|
|
hypre_MultiblockMatrixDestroy( hypre_MultiblockMatrix *matrix )
|
1998-02-20 07:27:26 +08:00
|
|
|
{
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int ierr=0, i;
|
1998-02-20 07:27:26 +08:00
|
|
|
|
|
|
|
|
if (matrix)
|
|
|
|
|
{
|
|
|
|
|
for(i=0; i < hypre_MultiblockMatrixNumSubmatrices(matrix); i++)
|
1998-03-09 14:10:04 +08:00
|
|
|
hypre_TFree(hypre_MultiblockMatrixSubmatrix(matrix,i));
|
|
|
|
|
hypre_TFree(hypre_MultiblockMatrixSubmatrices(matrix));
|
|
|
|
|
hypre_TFree(hypre_MultiblockMatrixSubmatrixTypes(matrix));
|
1998-02-20 07:27:26 +08:00
|
|
|
|
|
|
|
|
hypre_TFree(matrix);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ierr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------
|
1999-09-18 03:05:03 +08:00
|
|
|
* hypre_MultiblockMatrixLimitedDestroy
|
1998-02-20 07:27:26 +08:00
|
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
|
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int
|
1999-09-18 03:05:03 +08:00
|
|
|
hypre_MultiblockMatrixLimitedDestroy( hypre_MultiblockMatrix *matrix )
|
1998-02-20 07:27:26 +08:00
|
|
|
{
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int ierr=0;
|
1998-02-20 07:27:26 +08:00
|
|
|
|
|
|
|
|
if (matrix)
|
|
|
|
|
{
|
1998-03-09 14:10:04 +08:00
|
|
|
hypre_TFree(hypre_MultiblockMatrixSubmatrices(matrix));
|
|
|
|
|
hypre_TFree(hypre_MultiblockMatrixSubmatrixTypes(matrix));
|
1998-02-20 07:27:26 +08:00
|
|
|
|
|
|
|
|
hypre_TFree(matrix);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ierr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------
|
1999-09-18 03:05:03 +08:00
|
|
|
* hypre_MultiblockMatrixInitialize
|
1998-02-20 07:27:26 +08:00
|
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
|
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int
|
1999-09-18 03:05:03 +08:00
|
|
|
hypre_MultiblockMatrixInitialize( hypre_MultiblockMatrix *matrix )
|
1998-02-20 07:27:26 +08:00
|
|
|
{
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int ierr=0;
|
1998-02-20 07:27:26 +08:00
|
|
|
|
|
|
|
|
if( hypre_MultiblockMatrixNumSubmatrices(matrix) <= 0 )
|
|
|
|
|
return(-1);
|
|
|
|
|
|
|
|
|
|
hypre_MultiblockMatrixSubmatrixTypes(matrix) =
|
2010-12-21 03:27:44 +08:00
|
|
|
hypre_CTAlloc( HYPRE_Int, hypre_MultiblockMatrixNumSubmatrices(matrix) );
|
1998-02-20 07:27:26 +08:00
|
|
|
|
|
|
|
|
hypre_MultiblockMatrixSubmatrices(matrix) =
|
|
|
|
|
hypre_CTAlloc( void *, hypre_MultiblockMatrixNumSubmatrices(matrix) );
|
|
|
|
|
|
|
|
|
|
return ierr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------
|
1999-09-18 03:05:03 +08:00
|
|
|
* hypre_MultiblockMatrixAssemble
|
1998-02-20 07:27:26 +08:00
|
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
|
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int
|
1999-09-18 03:05:03 +08:00
|
|
|
hypre_MultiblockMatrixAssemble( hypre_MultiblockMatrix *matrix )
|
1998-02-20 07:27:26 +08:00
|
|
|
{
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int ierr=0;
|
1998-02-20 07:27:26 +08:00
|
|
|
|
|
|
|
|
return(ierr);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------
|
1999-09-18 03:05:03 +08:00
|
|
|
* hypre_MultiblockMatrixPrint
|
1998-02-20 07:27:26 +08:00
|
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
void
|
1999-09-18 03:05:03 +08:00
|
|
|
hypre_MultiblockMatrixPrint(hypre_MultiblockMatrix *matrix )
|
1998-02-20 07:27:26 +08:00
|
|
|
{
|
2010-12-21 03:27:44 +08:00
|
|
|
hypre_printf("Stub for hypre_MultiblockMatrix\n");
|
1998-02-20 07:27:26 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------
|
1999-09-18 03:05:03 +08:00
|
|
|
* hypre_MultiblockMatrixSetNumSubmatrices
|
1998-02-20 07:27:26 +08:00
|
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
|
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int
|
|
|
|
|
hypre_MultiblockMatrixSetNumSubmatrices(hypre_MultiblockMatrix *matrix, HYPRE_Int n )
|
1998-02-20 07:27:26 +08:00
|
|
|
{
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int ierr = 0;
|
1998-02-20 07:27:26 +08:00
|
|
|
|
|
|
|
|
hypre_MultiblockMatrixNumSubmatrices(matrix) = n;
|
|
|
|
|
return( ierr );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------
|
1999-09-18 03:05:03 +08:00
|
|
|
* hypre_MultiblockMatrixSetSubmatrixType
|
1998-02-20 07:27:26 +08:00
|
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
|
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int
|
1999-09-18 03:05:03 +08:00
|
|
|
hypre_MultiblockMatrixSetSubmatrixType(hypre_MultiblockMatrix *matrix,
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int j,
|
|
|
|
|
HYPRE_Int type )
|
1998-02-20 07:27:26 +08:00
|
|
|
{
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int ierr = 0;
|
1998-02-20 07:27:26 +08:00
|
|
|
|
|
|
|
|
if ( (j<0) ||
|
|
|
|
|
(j >= hypre_MultiblockMatrixNumSubmatrices(matrix)) )
|
|
|
|
|
return(-1);
|
|
|
|
|
|
|
|
|
|
hypre_MultiblockMatrixSubmatrixType(matrix,j) = type;
|
|
|
|
|
|
|
|
|
|
return( ierr );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------
|
1999-09-18 03:05:03 +08:00
|
|
|
* hypre_MultiblockMatrixSetSubmatrix
|
1998-02-20 07:27:26 +08:00
|
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
|
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int
|
1999-09-18 03:05:03 +08:00
|
|
|
hypre_MultiblockMatrixSetSubmatrix(hypre_MultiblockMatrix *matrix,
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int j,
|
1998-02-20 07:27:26 +08:00
|
|
|
void *submatrix )
|
|
|
|
|
{
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int ierr = 0;
|
1998-02-20 07:27:26 +08:00
|
|
|
|
|
|
|
|
if ( (j<0) ||
|
|
|
|
|
(j >= hypre_MultiblockMatrixNumSubmatrices(matrix)) )
|
|
|
|
|
return(-1);
|
|
|
|
|
|
|
|
|
|
hypre_MultiblockMatrixSubmatrix(matrix,j) = submatrix;
|
|
|
|
|
|
|
|
|
|
return( ierr );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|