SALSA Analysis Modules
|
#include <stdlib.h>
#include <petscoptions.h>
#include <petsc.h>
#include "nmd.h"
#include "anamod.h"
#include "anamodsalsamodules.h"
Go to the source code of this file.
Functions | |
static PetscErrorCode | get_matrix (Mat *A, PetscBool *success) |
PetscErrorCode | analyze_matrix (Mat A, NMD_metadata nmd) |
static PetscErrorCode | usage (MPI_Comm comm) |
int | main (int argc, char **argv) |
PetscErrorCode analyze_matrix | ( | Mat | A, |
NMD_metadata | nmd | ||
) |
Definition at line 49 of file petsc.c.
References CategoryGetModules(), ComputeQuantity(), GetDataType(), GetFirstCategory(), and GetNextCategory().
{ const char *cat,**modules; AnalysisDataType *types; int imod,nmod; PetscBool success; PetscErrorCode ierr; PetscFunctionBegin; ierr = GetFirstCategory(&cat,&success); CHKERRQ(ierr); while (success) { ierr = CategoryGetModules (cat,&modules,&types,PETSC_NULL,&nmod); CHKERRQ(ierr); for (imod=0; imod<nmod; imod++) { AnalysisItem res; int reslen; PetscBool success; ierr = ComputeQuantity ((AnaModNumericalProblem)A,cat,modules[imod], &res,&reslen,&success); CHKERRQ(ierr); if (success) { AnalysisDataType type; ierr = GetDataType(cat,modules[imod],&type,PETSC_NULL); CHKERRQ(ierr); ierr = NMDSetArrayValue (nmd,cat,modules[imod],type,(void*)&res,reslen); CHKERRQ(ierr); } } ierr = GetNextCategory(&cat,&success); CHKERRQ(ierr); } PetscFunctionReturn(0); }
static PetscErrorCode get_matrix | ( | Mat * | A, |
PetscBool * | success | ||
) | [static] |
Definition at line 14 of file petsc.c.
Referenced by main().
{ MPI_Comm comm = MPI_COMM_WORLD; char option[1000]; PetscBool has; PetscViewer binary_dump; PetscErrorCode ierr; PetscFunctionBegin; *success = PETSC_FALSE; ierr = PetscOptionsGetString (PETSC_NULL,"-petsc",option,1000,&has); CHKERRQ(ierr); if (has) { PetscPrintf(comm,"reading matrix from petsc dump <%s>\n",option); ierr = PetscViewerBinaryOpen (comm,option,FILE_MODE_READ,&binary_dump); CHKERRQ(ierr); ierr = MatCreate(MPI_COMM_SELF,A); CHKERRQ(ierr); ierr = MatSetType(*A,MATSEQAIJ); CHKERRQ(ierr); ierr = MatLoad(*A,binary_dump); CHKERRQ(ierr); ierr = PetscViewerDestroy(&binary_dump); CHKERRQ(ierr); *success = PETSC_TRUE; goto exit; } ierr = PetscOptionsGetString (PETSC_NULL,"-matrixmarket",option,1000,&has); CHKERRQ(ierr); if (has) { PetscPrintf(comm,"matrix market read not yet supported\n"); *success = PETSC_FALSE; goto exit; } exit: CHKMEMQ; PetscFunctionReturn(0); }
int main | ( | int | argc, |
char ** | argv | ||
) |
Definition at line 92 of file petsc.c.
References analyze_matrix(), AnaModDeregisterSalsaModules(), AnaModFinalize(), AnaModGetTypeMySQLName(), AnaModInitialize(), AnaModOptionsHandling(), AnaModRegisterSalsaModules(), CategoryGetModules(), get_matrix(), GetCategories(), and usage().
{ MPI_Comm comm; Mat A; NMD_metadata nmd; PetscBool table,success,help; PetscErrorCode ierr; PetscFunctionBegin; PetscInitialize(&argc,&argv,0,0); comm = MPI_COMM_WORLD; help = PETSC_FALSE; ierr = PetscOptionsHasName(PETSC_NULL,"-h",&help); CHKERRQ(ierr); if (!help) { ierr = PetscOptionsHasName(PETSC_NULL,"-help",&help); CHKERRQ(ierr); } if (help) { ierr = usage(comm); CHKERRQ(ierr); goto petscfinalize; } ierr = AnaModInitialize(); CHKERRQ(ierr); ierr = AnaModRegisterSalsaModules(); CHKERRQ(ierr); ierr = AnaModOptionsHandling(); CHKERRQ(ierr); ierr = PetscOptionsHasName(PETSC_NULL,"-table",&table); CHKERRQ(ierr); if (table) { printf("CREATE TABLE anamod_data (\n"); { int ncat, icat,iwrite=0; const char **cats; ierr = GetCategories(&ncat,&cats); CHKERRQ(ierr); for (icat=0; icat<ncat; icat++) { int ncmp,icmp; const char **cmps; AnalysisDataType *types; ierr = CategoryGetModules (cats[icat],&cmps,&types,NULL,&ncmp); CHKERRQ(ierr); for (icmp=0; icmp<ncmp; icmp++) { const char *type; if (iwrite>0) printf(",\n"); iwrite++; ierr = AnaModGetTypeMySQLName(types[icmp],&type); CHKERRQ(ierr); printf(" `%s:%s` %s",cats[icat],cmps[icmp],type); } } } #if defined(HAVE_MYSQL) /* dbase = mysql_init(NULL); */ /* mysql_real_connect(dbase,MYSQLHOST,MYSQLUSER,MYSQLPASS,MYSQLDBASE, */ /* 0,NULL,0); */ #endif printf("\n)\n"); } ierr = get_matrix(&A,&success); CHKERRQ(ierr); if (!success) goto exit; ierr = NMDCreateObject(&nmd); CHKERRQ(ierr); ierr = analyze_matrix(A,nmd); CHKERRQ(ierr); ierr = NMDViewObject(nmd); CHKERRQ(ierr); ierr = NMDObjectDumpToMySQL(nmd); CHKERRQ(ierr); /* { */ /* char *key,*val; */ /* ierr = NMDReportObject */ /* (nmd,NMDFalse,&key,&val,'\t',0,0); CHKERRQ(ierr); */ /* printf("Keys: %s\nValues: %s\n",key,val); */ /* //NMD_FREE(key); NMD_FREE(val); */ /* } */ ierr = NMDDestroyObject(nmd); CHKERRQ(ierr); exit: #if defined(HAVE_MYSQL) mysql_close(dbase); #endif ierr = AnaModDeregisterSalsaModules(); CHKERRQ(ierr); ierr = AnaModFinalize(); CHKERRQ(ierr); petscfinalize: PetscFinalize(); PetscFunctionReturn(0); }
static PetscErrorCode usage | ( | MPI_Comm | comm | ) | [static] |
Definition at line 77 of file petsc.c.
Referenced by main().
{ PetscErrorCode ierr; PetscFunctionBegin; ierr = PetscPrintf (comm,"-------------------------------------------------\n"); CHKERRQ(ierr); ierr = PetscPrintf (comm,"Use -petsc or -matrixmarket option to specify a matrix\n"); ierr = PetscPrintf (comm,"Use -mysql to get a table definition and insert command for all computed quantities\n"); PetscFunctionReturn(0); }