From 9481013fe02e43a42e6f54f92acba73fc36cb904 Mon Sep 17 00:00:00 2001 From: Francesco Lannutti Date: Sun, 19 Jun 2016 01:21:46 +0200 Subject: [PATCH] Implement klu_z_print() --- src/include/ngspice/klu.h | 20 ++++++++++++++++++++ src/maths/KLU/klu_extract.c | 31 +++++++++++++++++++++++++++++++ src/maths/KLU/klu_version.h | 2 ++ src/maths/KLU/klusmp.c | 4 +++- 4 files changed, 56 insertions(+), 1 deletion(-) diff --git a/src/include/ngspice/klu.h b/src/include/ngspice/klu.h index d46679ad9..6e6238ace 100644 --- a/src/include/ngspice/klu.h +++ b/src/include/ngspice/klu.h @@ -840,6 +840,26 @@ void *klu_l_malloc (size_t, size_t, klu_l_common *) ; void *klu_l_free (void *, size_t, size_t, klu_l_common *) ; void *klu_l_realloc (size_t, size_t, size_t, void *, klu_l_common *) ; +int klu_print +( + int *Ap, + int *Ai, + double *Ax, + int n, + int *IntToExtRowMap, + int *IntToExtColMap +) ; + +int klu_z_print +( + int *Ap, + int *Ai, + double *Ax, + int n, + int *IntToExtRowMap, + int *IntToExtColMap +) ; + /* ========================================================================== */ /* === KLU version ========================================================== */ diff --git a/src/maths/KLU/klu_extract.c b/src/maths/KLU/klu_extract.c index 394f0db4d..f51041b8b 100644 --- a/src/maths/KLU/klu_extract.c +++ b/src/maths/KLU/klu_extract.c @@ -427,3 +427,34 @@ Int KLU_extract_Udiag /* returns TRUE if successful, FALSE otherwise */ return (TRUE) ; } + +Int KLU_print +( + Int *Ap, + Int *Ai, + double *Ax, + int n, + int *IntToExtRowMap, + int *IntToExtColMap +) +{ + Entry *Az ; + int i, j ; + + Az = (Entry *)Ax ; + for (i = 0 ; i < n ; i++) + { + for (j = Ap [i] ; j < Ap [i + 1] ; j++) + { + +#ifdef COMPLEX + fprintf (stderr, "Row: %d\tCol: %d\tValue: %-.9g j%-.9g\n", IntToExtRowMap [Ai [j] + 1], IntToExtColMap [i + 1], Az [j].Real, Az [j].Imag) ; +#else + fprintf (stderr, "Row: %d\tCol: %d\tValue: %-.9g\n", IntToExtRowMap [Ai [j] + 1], IntToExtColMap [i + 1], Az [j]) ; +#endif + + } + } + + return 0 ; +} diff --git a/src/maths/KLU/klu_version.h b/src/maths/KLU/klu_version.h index 7ba68fb96..6ba7b5dfa 100644 --- a/src/maths/KLU/klu_version.h +++ b/src/maths/KLU/klu_version.h @@ -85,6 +85,7 @@ #define KLU_extract_Udiag klu_z_extract_Udiag #define KLU_condest klu_z_condest #define KLU_flops klu_z_flops +#define KLU_print klu_z_print #endif @@ -136,6 +137,7 @@ #define KLU_extract_Udiag klu_extract_Udiag #define KLU_condest klu_condest #define KLU_flops klu_flops +#define KLU_print klu_print #endif diff --git a/src/maths/KLU/klusmp.c b/src/maths/KLU/klusmp.c index 149d22858..82d25e3a5 100644 --- a/src/maths/KLU/klusmp.c +++ b/src/maths/KLU/klusmp.c @@ -521,8 +521,10 @@ SMPprintRHS (SMPmatrix *Matrix, char *Filename, RealVector RHS, RealVector iRHS) void SMPprint (SMPmatrix *Matrix, char *Filename) { - if (!Matrix->CKTkluMODE) + if (Matrix->CKTkluMODE) { + klu_z_print (Matrix->CKTkluAp, Matrix->CKTkluAi, Matrix->CKTkluAx_Complex, Matrix->CKTkluN, Matrix->SPmatrix->IntToExtRowMap, Matrix->SPmatrix->IntToExtColMap) ; + } else { if (Filename) spFileMatrix (Matrix->SPmatrix, Filename, "Circuit Matrix", 0, 1, 1) ; else