⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 symilupackdelete.c

📁 a software code for computing selected eigenvalues of large sparse symmetric matrices
💻 C
字号:
#include <string.h>#include <stdio.h>#include <ilupack.h>#include <ilupackmacros.h>// #define PRINT_INFO#ifdef _DOUBLE_REAL_#define MYSYMILUPACKDELETE     dsymamgdelete#define MYSYMAMGDELETE         DSYMAMGdelete#define MYSYMAMGINIT           DSYMAMGinit#define MYSYMAMGSOL            DSYMAMGsol#define MYSYMAMGGETPARAMS      DSYMAMGgetparams#define MYSYMAMGSETPARAMS      DSYMAMGsetparams#elif defined _SINGLE_REAL_#define MYSYMILUPACKDELETE     ssymamgdelete#define MYSYMAMGDELETE         SSYMAMGdelete#define MYSYMAMGINIT           SSYMAMGinit#define MYSYMAMGSOL            SSYMAMGsol#define MYSYMAMGGETPARAMS      SSYMAMGgetparams#define MYSYMAMGSETPARAMS      SSYMAMGsetparams#elif defined _SINGLE_COMPLEX_#ifdef _COMPLEX_SYMMETRIC_#define MYSYMILUPACKDELETE     csymamgdelete#define MYSYMAMGDELETE         CSYMAMGdelete#define MYSYMAMGINIT           CSYMAMGinit#define MYSYMAMGSOL            CSYMAMGsol#define MYSYMAMGGETPARAMS      CSYMAMGgetparams#define MYSYMAMGSETPARAMS      CSYMAMGsetparams#else#define MYSYMILUPACKDELETE     cheramgdelete#define MYSYMAMGDELETE         CHERAMGdelete#define MYSYMAMGINIT           CHERAMGinit#define MYSYMAMGSOL            CHERAMGsol#define MYSYMAMGGETPARAMS      CHERAMGgetparams#define MYSYMAMGSETPARAMS      CHERAMGsetparams#endif#else#ifdef _COMPLEX_SYMMETRIC_#define MYSYMILUPACKDELETE     zsymamgdelete#define MYSYMAMGDELETE         ZSYMAMGdelete#define MYSYMAMGINIT           ZSYMAMGinit#define MYSYMAMGSOL            ZSYMAMGsol#define MYSYMAMGGETPARAMS      ZSYMAMGgetparams#define MYSYMAMGSETPARAMS      ZSYMAMGsetparams#else#define MYSYMILUPACKDELETE     zheramgdelete#define MYSYMAMGDELETE         ZHERAMGdelete#define MYSYMAMGINIT           ZHERAMGinit#define MYSYMAMGSOL            ZHERAMGsol#define MYSYMAMGGETPARAMS      ZHERAMGgetparams#define MYSYMAMGSETPARAMS      ZHERAMGsetparams#endif#endifvoid MYSYMILUPACKDELETE(size_t *Fparam, 		        size_t *FPREC,		        integer   *nlev, integer *ICNTL) {   /*     ILUPACK FORTRAN interface for solving a linear system iteratively     param       parameter pointer casted to INTEGER*8     PRE         preconditioner pointer casted to INTEGER*8     nlev        number of AMG levels   */  CSRMAT       A;  ILUPACKPARAM *param;  AMGLEVELMAT *PRE;  memcpy(&param, Fparam, sizeof(size_t));  memcpy(&PRE,   FPREC,  sizeof(size_t));   // if ICNTL is set then we keep the elbow space  // in order to re-factor the matrix.  // otherwise we discard the memory  if (*ICNTL!=0) {     param->ipar[6]|=RE_FACTOR;     // printf("clear preconditioner but keep memory board\n");fflush(stdout);  }  else {     param->ipar[6]&=~RE_FACTOR;     // printf("remove whole preconditioner\n");fflush(stdout);  }  /* finally release memory of the preconditioner */  A.nc=A.nr=PRE->n;  A.ia=NULL;  A.ja=NULL;  A.a =NULL;  MYSYMAMGDELETE(A,*PRE,*nlev,param);} // SYMILUPACKDELETE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -