2006-08-02 05:55:18 +08:00
|
|
|
/*BHEADER**********************************************************************
|
2008-07-18 09:34:48 +08:00
|
|
|
* Copyright (c) 2008, Lawrence Livermore National Security, LLC.
|
2006-08-02 05:55:18 +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.
|
2006-08-02 05:55:18 +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.
|
2006-08-02 05:55:18 +08:00
|
|
|
*
|
|
|
|
|
* $Revision$
|
|
|
|
|
***********************************************************************EHEADER*/
|
|
|
|
|
|
2007-11-14 05:20:21 +08:00
|
|
|
|
2005-03-31 01:50:49 +08:00
|
|
|
#ifndef FORTRAN_STYLE_MATRIX
|
|
|
|
|
#define FORTRAN_STYLE_MATRIX
|
|
|
|
|
|
2010-12-21 03:27:44 +08:00
|
|
|
#include "_hypre_utilities.h"
|
|
|
|
|
|
2005-03-31 01:50:49 +08:00
|
|
|
typedef struct
|
|
|
|
|
{
|
2011-01-28 03:46:14 +08:00
|
|
|
hypre_longint globalHeight;
|
|
|
|
|
hypre_longint height;
|
|
|
|
|
hypre_longint width;
|
2005-03-31 01:50:49 +08:00
|
|
|
double* value;
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int ownsValues;
|
2005-03-31 01:50:49 +08:00
|
|
|
} utilities_FortranMatrix;
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
utilities_FortranMatrix*
|
|
|
|
|
utilities_FortranMatrixCreate(void);
|
|
|
|
|
void
|
2011-01-28 03:46:14 +08:00
|
|
|
utilities_FortranMatrixAllocateData( hypre_longint h, hypre_longint w,
|
2005-03-31 01:50:49 +08:00
|
|
|
utilities_FortranMatrix* mtx );
|
|
|
|
|
void
|
2011-01-28 03:46:14 +08:00
|
|
|
utilities_FortranMatrixWrap( double*, hypre_longint gh, hypre_longint h, hypre_longint w,
|
2005-03-31 01:50:49 +08:00
|
|
|
utilities_FortranMatrix* mtx );
|
|
|
|
|
void
|
|
|
|
|
utilities_FortranMatrixDestroy( utilities_FortranMatrix* mtx );
|
|
|
|
|
|
2011-01-28 03:46:14 +08:00
|
|
|
hypre_longint
|
2005-03-31 01:50:49 +08:00
|
|
|
utilities_FortranMatrixGlobalHeight( utilities_FortranMatrix* mtx );
|
2011-01-28 03:46:14 +08:00
|
|
|
hypre_longint
|
2005-03-31 01:50:49 +08:00
|
|
|
utilities_FortranMatrixHeight( utilities_FortranMatrix* mtx );
|
2011-01-28 03:46:14 +08:00
|
|
|
hypre_longint
|
2005-03-31 01:50:49 +08:00
|
|
|
utilities_FortranMatrixWidth( utilities_FortranMatrix* mtx );
|
|
|
|
|
double*
|
|
|
|
|
utilities_FortranMatrixValues( utilities_FortranMatrix* mtx );
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
utilities_FortranMatrixClear( utilities_FortranMatrix* mtx );
|
|
|
|
|
void
|
|
|
|
|
utilities_FortranMatrixClearL( utilities_FortranMatrix* mtx );
|
|
|
|
|
void
|
|
|
|
|
utilities_FortranMatrixSetToIdentity( utilities_FortranMatrix* mtx );
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
utilities_FortranMatrixTransposeSquare( utilities_FortranMatrix* mtx );
|
|
|
|
|
void
|
|
|
|
|
utilities_FortranMatrixSymmetrize( utilities_FortranMatrix* mtx );
|
|
|
|
|
|
|
|
|
|
void
|
2010-12-21 03:27:44 +08:00
|
|
|
utilities_FortranMatrixCopy( utilities_FortranMatrix* src, HYPRE_Int t,
|
2005-03-31 01:50:49 +08:00
|
|
|
utilities_FortranMatrix* dest );
|
|
|
|
|
void
|
2010-12-21 03:27:44 +08:00
|
|
|
utilities_FortranMatrixIndexCopy( HYPRE_Int* index,
|
|
|
|
|
utilities_FortranMatrix* src, HYPRE_Int t,
|
2005-03-31 01:50:49 +08:00
|
|
|
utilities_FortranMatrix* dest );
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
utilities_FortranMatrixSetDiagonal( utilities_FortranMatrix* mtx,
|
|
|
|
|
utilities_FortranMatrix* d );
|
|
|
|
|
void
|
|
|
|
|
utilities_FortranMatrixGetDiagonal( utilities_FortranMatrix* mtx,
|
|
|
|
|
utilities_FortranMatrix* d );
|
|
|
|
|
void
|
|
|
|
|
utilities_FortranMatrixAdd( double a,
|
|
|
|
|
utilities_FortranMatrix* mtxA,
|
|
|
|
|
utilities_FortranMatrix* mtxB,
|
|
|
|
|
utilities_FortranMatrix* mtxC );
|
|
|
|
|
void
|
|
|
|
|
utilities_FortranMatrixDMultiply( utilities_FortranMatrix* d,
|
|
|
|
|
utilities_FortranMatrix* mtx );
|
|
|
|
|
void
|
|
|
|
|
utilities_FortranMatrixMultiplyD( utilities_FortranMatrix* mtx,
|
|
|
|
|
utilities_FortranMatrix* d );
|
|
|
|
|
void
|
2010-12-21 03:27:44 +08:00
|
|
|
utilities_FortranMatrixMultiply( utilities_FortranMatrix* mtxA, HYPRE_Int tA,
|
|
|
|
|
utilities_FortranMatrix* mtxB, HYPRE_Int tB,
|
2005-03-31 01:50:49 +08:00
|
|
|
utilities_FortranMatrix* mtxC );
|
|
|
|
|
double
|
|
|
|
|
utilities_FortranMatrixFNorm( utilities_FortranMatrix* mtx );
|
|
|
|
|
|
|
|
|
|
double
|
|
|
|
|
utilities_FortranMatrixValue( utilities_FortranMatrix* mtx,
|
2011-01-28 03:46:14 +08:00
|
|
|
hypre_longint i, hypre_longint j );
|
2005-03-31 01:50:49 +08:00
|
|
|
double*
|
|
|
|
|
utilities_FortranMatrixValuePtr( utilities_FortranMatrix* mtx,
|
2011-01-28 03:46:14 +08:00
|
|
|
hypre_longint i, hypre_longint j );
|
2005-03-31 01:50:49 +08:00
|
|
|
double
|
|
|
|
|
utilities_FortranMatrixMaxValue( utilities_FortranMatrix* mtx );
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
utilities_FortranMatrixSelectBlock( utilities_FortranMatrix* mtx,
|
2011-01-28 03:46:14 +08:00
|
|
|
hypre_longint iFrom, hypre_longint iTo,
|
|
|
|
|
hypre_longint jFrom, hypre_longint jTo,
|
2005-03-31 01:50:49 +08:00
|
|
|
utilities_FortranMatrix* block );
|
|
|
|
|
void
|
|
|
|
|
utilities_FortranMatrixUpperInv( utilities_FortranMatrix* u );
|
|
|
|
|
|
2010-12-21 03:27:44 +08:00
|
|
|
HYPRE_Int
|
2011-09-29 08:15:09 +08:00
|
|
|
utilities_FortranMatrixPrint( utilities_FortranMatrix* mtx, const char *fileName);
|
2005-03-31 01:50:49 +08:00
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif /* FORTRAN_STYLE_MATRIX */
|
|
|
|
|
|