|
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);
}
1.7.6.1