20#ifndef OPM_EXPORT_SYSTEM_HEADER_INCLUDED
21#define OPM_EXPORT_SYSTEM_HEADER_INCLUDED
30 template <
class IstlMatrix>
32 template <
class IstlMatrix>
33 void exportNonzeros(
const IstlMatrix& A,
const char *tag=
"",
const char *path=
".");
34 template <
class GlobalEqVector>
35 void exportVector(
const GlobalEqVector& x,
const char *tag=
"",
const char *name=
"export/x");
40 template <
class IstlMatrix,
class GlobalEqVector>
43 const GlobalEqVector& residual,
44 const bool export_sparsity,
46 const char* path =
"export")
49 if (export_sparsity) {
57 constexpr size_t bufsize = 256;
59 std::snprintf(name,bufsize,
"%s/r",path);
66 template <
class GlobalEqVector>
67 void exportVector(
const GlobalEqVector& x,
const char *tag,
const char *name)
70 const double *data = &x[0][0];
72 constexpr size_t bufsize = 512;
73 char filename[bufsize];
74 std::snprintf(filename,bufsize,
"%s%s.f64",name,tag);
75 FILE *out =fopen(filename,
"w");
76 std::fwrite(data,
sizeof(
double), x.dim(),out);
83 template <
class IstlMatrix>
87 const double *data = &A[0][0][0][0];
88 size_t dim = A[0][0].N()*A[0][0].M()*A.nonzeroes();
90 constexpr size_t bufsize = 256;
91 char filename[bufsize];
92 std::snprintf(filename,bufsize,
"%s/data%s.f64",path,tag);
93 FILE *out =fopen(filename,
"w");
94 std::fwrite(data,
sizeof(
double), dim,out);
101 template <
class IstlMatrix>
105 auto rows = std::make_unique<int[]>(A.N()+1);
106 auto cols = std::make_unique<int[]>(A.nonzeroes());
111 for(
auto row=A.begin(); row!=A.end(); row++)
113 for(
unsigned int i=0;i<row->getsize();i++)
115 cols[icol++]=row->getindexptr()[i];
117 rows[irow+1]= rows[irow]+row->getsize();
123 constexpr size_t bufsize = 256;
124 char filename[bufsize];
126 std::snprintf(filename,bufsize,
"%s/rows.i32",path);
127 out=std::fopen(filename,
"w");
128 std::fwrite(rows.get(),
sizeof(
int), A.N()+1,out);
131 std::snprintf(filename,bufsize,
"%s/cols.i32",path);
132 out=std::fopen(filename,
"w");
133 std::fwrite(cols.get(),
sizeof(
int), A.nonzeroes(),out);
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition blackoilbioeffectsmodules.hh:45
void exportNonzeros(const IstlMatrix &A, const char *tag="", const char *path=".")
Export nonzero blocks of jacobian block-sparse matrix.
Definition exportSystem.hpp:84
void exportSparsity(const IstlMatrix &A, const char *path=".")
Export sparsity pattern of jacobian block-sparse matrix.
Definition exportSystem.hpp:102
void exportVector(const GlobalEqVector &x, const char *tag="", const char *name="export/x")
Export block vector.
Definition exportSystem.hpp:67
void exportSystem(const IstlMatrix &jacobian, const GlobalEqVector &residual, const bool export_sparsity, const char *tag, const char *path="export")
Export blocks-sparse linear system.
Definition exportSystem.hpp:42