ngsolve 6.2.2506.post74.dev0__cp311-cp311-win_amd64.whl → 6.2.2506.post85.dev0__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ngsolve might be problematic. Click here for more details.
- netgen/include/sparsefactorization_interface.hpp +153 -0
- netgen/include/statushandler.hpp +8 -8
- netgen/lib/libngsolve.lib +0 -0
- netgen/libngsolve.dll +0 -0
- ngsolve/cmake/NGSolveConfig.cmake +1 -1
- ngsolve/cmake/ngsolve-targets.cmake +15 -8
- ngsolve/config/config.py +5 -5
- ngsolve/directsolvers.py +9 -21
- ngsolve/ngslib.pyd +0 -0
- ngsolve/solvers/cudss.py +74 -0
- {ngsolve-6.2.2506.post74.dev0.dist-info → ngsolve-6.2.2506.post85.dev0.dist-info}/METADATA +2 -2
- {ngsolve-6.2.2506.post74.dev0.dist-info → ngsolve-6.2.2506.post85.dev0.dist-info}/RECORD +45 -43
- /ngsolve/{solvers.py → solvers/__init__.py} +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/Scripts/ngsolve.tcl +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/beam.geo +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/beam.vol +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/chip.in2d +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/chip.vol +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/coil.geo +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/coil.vol +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/coilshield.geo +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/coilshield.vol +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/cube.geo +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/cube.vol +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d1_square.pde +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d2_chip.pde +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d4_cube.pde +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d5_beam.pde +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d6_shaft.pde +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d7_coil.pde +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/doubleglazing.vol +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/shaft.geo +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/shaft.vol +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/square.in2d +0 -0
- {ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/square.vol +0 -0
- {ngsolve-6.2.2506.post74.dev0.dist-info → ngsolve-6.2.2506.post85.dev0.dist-info}/LICENSE +0 -0
- {ngsolve-6.2.2506.post74.dev0.dist-info → ngsolve-6.2.2506.post85.dev0.dist-info}/WHEEL +0 -0
- {ngsolve-6.2.2506.post74.dev0.dist-info → ngsolve-6.2.2506.post85.dev0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
#ifndef SPARSEFACTORIZATION_INTERFACE_HPP
|
|
2
|
+
#define SPARSEFACTORIZATION_INTERFACE_HPP
|
|
3
|
+
|
|
4
|
+
#include "basevector.hpp"
|
|
5
|
+
#include "sparsecholesky.hpp"
|
|
6
|
+
#include "sparsematrix.hpp"
|
|
7
|
+
#include "../ngstd/python_ngstd.hpp"
|
|
8
|
+
|
|
9
|
+
namespace ngla {
|
|
10
|
+
|
|
11
|
+
void ExportSparseFactorizationInterface(py::module &m);
|
|
12
|
+
|
|
13
|
+
struct MapInnerDofs {
|
|
14
|
+
shared_ptr<BitArray> inner;
|
|
15
|
+
shared_ptr<const Array<int>> cluster;
|
|
16
|
+
Array<int> project;
|
|
17
|
+
Array<int> embed;
|
|
18
|
+
size_t size = 0;
|
|
19
|
+
|
|
20
|
+
MapInnerDofs(shared_ptr<BitArray> ainner,
|
|
21
|
+
shared_ptr<const Array<int>> acluster = nullptr)
|
|
22
|
+
: inner(ainner), cluster(acluster) {
|
|
23
|
+
if (!inner && !cluster) {
|
|
24
|
+
size = 0;
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (inner) {
|
|
28
|
+
size = inner->NumSet();
|
|
29
|
+
project.SetSize(size);
|
|
30
|
+
embed.SetSize(inner->Size());
|
|
31
|
+
int j = 0;
|
|
32
|
+
for (int i = 0; i < inner->Size(); i++) {
|
|
33
|
+
if ((*inner)[i]) {
|
|
34
|
+
project[j] = i;
|
|
35
|
+
embed[i] = j++;
|
|
36
|
+
} else
|
|
37
|
+
embed[i] = -1;
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
int j = 0;
|
|
43
|
+
for (int i = 0; i < cluster->Size(); i++) {
|
|
44
|
+
if ((*cluster)[i]) {
|
|
45
|
+
project.Append(i);
|
|
46
|
+
embed.Append(j++);
|
|
47
|
+
} else {
|
|
48
|
+
embed.Append(-1);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
size = project.Size();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
operator bool() const { return inner || cluster; }
|
|
55
|
+
|
|
56
|
+
template <typename T>
|
|
57
|
+
void Project(FlatVector<T> dst, FlatVector<T> src) const {
|
|
58
|
+
for (size_t i = 0; i < project.Size(); i++)
|
|
59
|
+
dst[i] = src[project[i]];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
template <typename T> void Embed(T &dst, const T &src) const {
|
|
63
|
+
for (size_t i : Range(embed)) {
|
|
64
|
+
if (embed[i] >= 0)
|
|
65
|
+
dst[i] = src[embed[i]];
|
|
66
|
+
else
|
|
67
|
+
dst[i] = 0.0;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
template <typename T>
|
|
72
|
+
void EmbedAdd(FlatVector<T> dst, FlatVector<T> src, T scale) const {
|
|
73
|
+
for (size_t i : Range(embed))
|
|
74
|
+
if (embed[i] >= 0)
|
|
75
|
+
dst[i] += scale * src[embed[i]];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
template <typename T>
|
|
79
|
+
shared_ptr<SparseMatrixTM<T>>
|
|
80
|
+
ProjectMatrix(shared_ptr<const SparseMatrixTM<T>> m) {
|
|
81
|
+
Array<int> rowi, coli;
|
|
82
|
+
Array<T> vals;
|
|
83
|
+
auto &dofs = *inner;
|
|
84
|
+
|
|
85
|
+
auto vals_ori = m->GetValues();
|
|
86
|
+
|
|
87
|
+
auto &cluster_array = *cluster;
|
|
88
|
+
auto &inner_bitarray = *inner;
|
|
89
|
+
auto is_used = [this, &inner_bitarray, &cluster_array](int i, int j) {
|
|
90
|
+
if (inner)
|
|
91
|
+
return inner_bitarray[i] && inner_bitarray[j];
|
|
92
|
+
return cluster_array[i] == cluster_array[j];
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
for (auto i : project)
|
|
96
|
+
for (auto j : m->GetRowIndices(i))
|
|
97
|
+
if (is_used(i, j)) {
|
|
98
|
+
rowi.Append(embed[i]);
|
|
99
|
+
coli.Append(embed[j]);
|
|
100
|
+
vals.Append(vals_ori[m->GetPosition(i, j)]);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
auto res = SparseMatrixTM<T>::CreateFromCOO(rowi, coli, vals,
|
|
104
|
+
project.Size(), project.Size());
|
|
105
|
+
res->SetSPD(m->IsSPD());
|
|
106
|
+
return res;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
class SparseFactorizationInterface : public SparseFactorization {
|
|
111
|
+
protected:
|
|
112
|
+
shared_ptr<const BaseSparseMatrix> inner_mat;
|
|
113
|
+
shared_ptr<BaseVector> inner_rhs, inner_solution;
|
|
114
|
+
MapInnerDofs map_inner_dofs;
|
|
115
|
+
bool is_complex = false;
|
|
116
|
+
bool is_symmetric = false;
|
|
117
|
+
bool is_symmetric_storage = false;
|
|
118
|
+
bool is_analyzed = false;
|
|
119
|
+
int width, height, inner_width, inner_height;
|
|
120
|
+
|
|
121
|
+
public:
|
|
122
|
+
SparseFactorizationInterface() = delete;
|
|
123
|
+
SparseFactorizationInterface(shared_ptr<const BaseMatrix> m,
|
|
124
|
+
shared_ptr<BitArray> ainner = nullptr,
|
|
125
|
+
shared_ptr<const Array<int>> acluster = nullptr);
|
|
126
|
+
|
|
127
|
+
virtual ~SparseFactorizationInterface() {}
|
|
128
|
+
|
|
129
|
+
AutoVector CreateRowVector() const override {
|
|
130
|
+
return make_unique<VVector<double>>(Width());
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
AutoVector CreateColVector() const override {
|
|
134
|
+
return make_unique<VVector<double>>(Height());
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
shared_ptr<const BaseSparseMatrix> GetInnerMatrix() const {
|
|
138
|
+
return inner_mat;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
void MultAdd(double s, const BaseVector &x, BaseVector &y) const override;
|
|
142
|
+
void MultAdd(Complex s, const BaseVector &x, BaseVector &y) const override;
|
|
143
|
+
|
|
144
|
+
virtual void Update() override;
|
|
145
|
+
|
|
146
|
+
virtual void Analyze() {}
|
|
147
|
+
virtual void Factor() {}
|
|
148
|
+
virtual void Solve(const BaseVector &rhs, BaseVector &solution) const = 0;
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
} // namespace ngla
|
|
152
|
+
|
|
153
|
+
#endif // SPARSEFACTORIZATION_INTERFACE_HPP
|
netgen/include/statushandler.hpp
CHANGED
|
@@ -3,27 +3,27 @@
|
|
|
3
3
|
|
|
4
4
|
namespace ngstd
|
|
5
5
|
{
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
/** Access to statusbar. (and more)
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
class NGS_DLL_HEADER BaseStatusHandler
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
static void PushStatus (const
|
|
11
|
+
{
|
|
12
|
+
public:
|
|
13
|
+
static void PushStatus (const std::string& str);
|
|
14
14
|
static void PopStatus ();
|
|
15
15
|
static void SetThreadPercentage (double percent);
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
static void GetStatus (string & str, double & percent);
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
static void SetTerminate(void);
|
|
20
20
|
static void UnSetTerminate(void);
|
|
21
21
|
static bool ShouldTerminate(void);
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
class Region
|
|
24
24
|
{
|
|
25
25
|
public:
|
|
26
|
-
Region(const
|
|
26
|
+
Region(const string& str) { PushStatus(str); }
|
|
27
27
|
~Region() { PopStatus(); }
|
|
28
28
|
};
|
|
29
29
|
};
|
netgen/lib/libngsolve.lib
CHANGED
|
Binary file
|
netgen/libngsolve.dll
CHANGED
|
Binary file
|
|
@@ -19,7 +19,7 @@ set(CMAKE_IMPORT_FILE_VERSION 1)
|
|
|
19
19
|
set(_cmake_targets_defined "")
|
|
20
20
|
set(_cmake_targets_not_defined "")
|
|
21
21
|
set(_cmake_expected_targets "")
|
|
22
|
-
foreach(_cmake_expected_target IN ITEMS
|
|
22
|
+
foreach(_cmake_expected_target IN ITEMS netgen_lib netgen_core_lib ngs_lapack ngstd ngbla ngla ngfem ngsbem ngcomp ngsolve)
|
|
23
23
|
list(APPEND _cmake_expected_targets "${_cmake_expected_target}")
|
|
24
24
|
if(TARGET "${_cmake_expected_target}")
|
|
25
25
|
list(APPEND _cmake_targets_defined "${_cmake_expected_target}")
|
|
@@ -54,11 +54,18 @@ if(_IMPORT_PREFIX STREQUAL "/")
|
|
|
54
54
|
set(_IMPORT_PREFIX "")
|
|
55
55
|
endif()
|
|
56
56
|
|
|
57
|
-
# Create imported target
|
|
58
|
-
add_library(
|
|
57
|
+
# Create imported target netgen_lib
|
|
58
|
+
add_library(netgen_lib INTERFACE IMPORTED)
|
|
59
59
|
|
|
60
|
-
set_target_properties(
|
|
61
|
-
INTERFACE_LINK_LIBRARIES "nglib
|
|
60
|
+
set_target_properties(netgen_lib PROPERTIES
|
|
61
|
+
INTERFACE_LINK_LIBRARIES "nglib"
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
# Create imported target netgen_core_lib
|
|
65
|
+
add_library(netgen_core_lib INTERFACE IMPORTED)
|
|
66
|
+
|
|
67
|
+
set_target_properties(netgen_core_lib PROPERTIES
|
|
68
|
+
INTERFACE_LINK_LIBRARIES "ngcore"
|
|
62
69
|
)
|
|
63
70
|
|
|
64
71
|
# Create imported target ngs_lapack
|
|
@@ -75,7 +82,7 @@ add_library(ngstd INTERFACE IMPORTED)
|
|
|
75
82
|
set_target_properties(ngstd PROPERTIES
|
|
76
83
|
INTERFACE_COMPILE_DEFINITIONS "HAVE_NETGEN_SOURCES;USE_TIMEOFDAY;TCL;LAPACK;USE_PARDISO;NGS_PYTHON"
|
|
77
84
|
INTERFACE_COMPILE_OPTIONS "/std:c++17;/bigobj;/wd4068;-DMAX_SYS_DIM=3"
|
|
78
|
-
INTERFACE_LINK_LIBRARIES "
|
|
85
|
+
INTERFACE_LINK_LIBRARIES "netgen_core_lib;\$<LINK_ONLY:>"
|
|
79
86
|
)
|
|
80
87
|
|
|
81
88
|
# Create imported target ngbla
|
|
@@ -110,14 +117,14 @@ set_target_properties(ngsbem PROPERTIES
|
|
|
110
117
|
add_library(ngcomp INTERFACE IMPORTED)
|
|
111
118
|
|
|
112
119
|
set_target_properties(ngcomp PROPERTIES
|
|
113
|
-
INTERFACE_LINK_LIBRARIES "ngfem;ngla;ngbla;ngstd;\$<LINK_ONLY
|
|
120
|
+
INTERFACE_LINK_LIBRARIES "ngfem;ngla;ngbla;ngstd;\$<LINK_ONLY:>;netgen_lib"
|
|
114
121
|
)
|
|
115
122
|
|
|
116
123
|
# Create imported target ngsolve
|
|
117
124
|
add_library(ngsolve SHARED IMPORTED)
|
|
118
125
|
|
|
119
126
|
set_target_properties(ngsolve PROPERTIES
|
|
120
|
-
INTERFACE_LINK_LIBRARIES "
|
|
127
|
+
INTERFACE_LINK_LIBRARIES "netgen_lib;netgen_core_lib;ngsolve;ngcomp;ngfem;ngsbem;ngbla;ngla;ngstd"
|
|
121
128
|
)
|
|
122
129
|
|
|
123
130
|
if(CMAKE_VERSION VERSION_LESS 3.0.0)
|
ngsolve/config/config.py
CHANGED
|
@@ -29,15 +29,15 @@ NGSOLVE_INSTALL_DIR_INCLUDE = "netgen/include"
|
|
|
29
29
|
NGSOLVE_INSTALL_DIR_CMAKE = "ngsolve/cmake"
|
|
30
30
|
NGSOLVE_INSTALL_DIR_RES = "share"
|
|
31
31
|
|
|
32
|
-
NGSOLVE_VERSION = "6.2.2506-
|
|
33
|
-
NGSOLVE_VERSION_GIT = "v6.2.2506-
|
|
34
|
-
NGSOLVE_VERSION_PYTHON = "6.2.2506.
|
|
32
|
+
NGSOLVE_VERSION = "6.2.2506-85-g5e4fc20dd"
|
|
33
|
+
NGSOLVE_VERSION_GIT = "v6.2.2506-85-g5e4fc20dd"
|
|
34
|
+
NGSOLVE_VERSION_PYTHON = "6.2.2506.post85.dev0"
|
|
35
35
|
|
|
36
36
|
NGSOLVE_VERSION_MAJOR = "6"
|
|
37
37
|
NGSOLVE_VERSION_MINOR = "2"
|
|
38
|
-
NGSOLVE_VERSION_TWEAK = "
|
|
38
|
+
NGSOLVE_VERSION_TWEAK = "85"
|
|
39
39
|
NGSOLVE_VERSION_PATCH = "2506"
|
|
40
|
-
NGSOLVE_VERSION_HASH = "
|
|
40
|
+
NGSOLVE_VERSION_HASH = "g5e4fc20dd"
|
|
41
41
|
|
|
42
42
|
CMAKE_CXX_COMPILER = "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64/cl.exe"
|
|
43
43
|
CMAKE_CUDA_COMPILER = ""
|
ngsolve/directsolvers.py
CHANGED
|
@@ -1,26 +1,14 @@
|
|
|
1
1
|
from ngsolve import BaseMatrix, BitArray, BilinearForm, BaseVector
|
|
2
|
+
import ngsolve
|
|
2
3
|
|
|
3
|
-
class SuperLU(
|
|
4
|
-
|
|
5
|
-
def __init__(self, a, freedofs: BitArray = None):
|
|
6
|
-
super().__init__()
|
|
7
|
-
self.a = a
|
|
8
|
-
self.freedofs = freedofs
|
|
9
|
-
|
|
10
|
-
def Update(self):
|
|
4
|
+
class SuperLU(ngsolve.la.SparseFactorizationInterface):
|
|
5
|
+
def Factor(self):
|
|
11
6
|
import scipy.sparse as sp
|
|
12
7
|
import scipy.sparse.linalg as spla
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
self.lu = spla.factorized(sp.csc_matrix(mat))
|
|
8
|
+
vals, rows, cols = self.GetInnerMatrix().CSR()
|
|
9
|
+
self.inv_mat = spla.factorized(sp.csr_matrix((vals, rows, cols)))
|
|
10
|
+
|
|
11
|
+
def Solve(self, rhs, sol):
|
|
12
|
+
sol.FV().NumPy()[:] = self.inv_mat(rhs.FV().NumPy())
|
|
19
13
|
|
|
20
|
-
|
|
21
|
-
if not hasattr(self, "lu"):
|
|
22
|
-
self.Update()
|
|
23
|
-
if self.freedofs is not None:
|
|
24
|
-
y.FV().NumPy()[self.fd] = self.lu(x.FV().NumPy()[self.fd])
|
|
25
|
-
else:
|
|
26
|
-
y.FV().NumPy()[:] = self.lu(x.FV().NumPy())
|
|
14
|
+
ngsolve.la.RegisterInverseType("superlu", SuperLU)
|
ngsolve/ngslib.pyd
CHANGED
|
Binary file
|
ngsolve/solvers/cudss.py
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
|
|
2
|
+
try:
|
|
3
|
+
import nvmath
|
|
4
|
+
import nvmath.sparse.advanced as nvs
|
|
5
|
+
except ImportError:
|
|
6
|
+
raise ImportError("CUDSS solver requires nvmath-python module.")
|
|
7
|
+
import ngsolve.la as ngla
|
|
8
|
+
import scipy.sparse as sp
|
|
9
|
+
import numpy as np
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class CudssSolver(ngla.SparseFactorizationInterface):
|
|
13
|
+
def Analyze(self):
|
|
14
|
+
self._mat = self.GetInnerMatrix()
|
|
15
|
+
csr = sp.csr_matrix(self._mat.CSR())
|
|
16
|
+
self._tmp = np.empty(csr.shape[1], dtype=csr.dtype)
|
|
17
|
+
options = make_directsolver_options()
|
|
18
|
+
self.solver = nvs.DirectSolver(csr, self._tmp, options=options)
|
|
19
|
+
self.solver.plan()
|
|
20
|
+
|
|
21
|
+
def Factor(self):
|
|
22
|
+
self.solver.factorize()
|
|
23
|
+
|
|
24
|
+
def Solve(self, b, sol):
|
|
25
|
+
self.solver.reset_operands(b=b.FV().NumPy())
|
|
26
|
+
sol.FV().NumPy()[:] = self.solver.solve()
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
ngla.RegisterInverseType("cudss", CudssSolver)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# find cudss multithreading lib from installed distribution
|
|
33
|
+
|
|
34
|
+
import os, pathlib
|
|
35
|
+
from importlib import util as importlib_util
|
|
36
|
+
from importlib import metadata as importlib_metadata
|
|
37
|
+
|
|
38
|
+
def _from_dist_files():
|
|
39
|
+
# Use the wheel’s file manifest (most reliable)
|
|
40
|
+
candidates = []
|
|
41
|
+
for dist_name in ("nvidia-cudss-cu12", "nvidia_cudss_cu12", "nvidia-cudss"): # try common variants
|
|
42
|
+
try:
|
|
43
|
+
dist = importlib_metadata.distribution(dist_name)
|
|
44
|
+
except importlib_metadata.PackageNotFoundError:
|
|
45
|
+
continue
|
|
46
|
+
for f in dist.files or []:
|
|
47
|
+
name = f.name.lower()
|
|
48
|
+
# check for name ends in .so or .so.*
|
|
49
|
+
endwith_so = name.endswith(".so") or (".so." in name and name.rsplit(".so.", 1)[1].replace(".", "").isdigit())
|
|
50
|
+
if name.startswith("libcudss_mtlayer_") and endwith_so:
|
|
51
|
+
candidates.append(dist.locate_file(f))
|
|
52
|
+
if name.startswith("cudss_mtlayer_") and name.endswith(".dll"):
|
|
53
|
+
candidates.append(dist.locate_file(f))
|
|
54
|
+
if candidates:
|
|
55
|
+
# Prefer anything in bin/ or lib/ if multiple
|
|
56
|
+
candidates.sort(key=lambda p: ("bin" not in str(p) and "lib" not in str(p), str(p)))
|
|
57
|
+
return str(candidates[0])
|
|
58
|
+
return None
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def make_directsolver_options():
|
|
62
|
+
# Helpful on Windows (Python 3.8+): ensure DLL deps can be found
|
|
63
|
+
if os.name == "nt":
|
|
64
|
+
for var in ("CUDA_PATH", "CUDSS_PATH", "CONDA_PREFIX"):
|
|
65
|
+
base = os.environ.get(var)
|
|
66
|
+
if base:
|
|
67
|
+
p = pathlib.Path(base) / "bin"
|
|
68
|
+
if p.exists():
|
|
69
|
+
try:
|
|
70
|
+
os.add_dll_directory(str(p))
|
|
71
|
+
except Exception:
|
|
72
|
+
pass
|
|
73
|
+
mtlib = _from_dist_files()
|
|
74
|
+
return nvs.DirectSolverOptions(multithreading_lib=mtlib)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ngsolve
|
|
3
|
-
Version: 6.2.2506.
|
|
3
|
+
Version: 6.2.2506.post85.dev0
|
|
4
4
|
Summary: NGSolve
|
|
5
5
|
Author: The NGSolve team
|
|
6
6
|
License: LGPL2.1
|
|
7
7
|
License-File: LICENSE
|
|
8
|
-
Requires-Dist: netgen-mesher==6.2.2506.
|
|
8
|
+
Requires-Dist: netgen-mesher==6.2.2506.post14.dev0
|
|
9
9
|
Requires-Dist: mkl
|
|
10
10
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
netgen/libngsolve.dll,sha256=
|
|
1
|
+
netgen/libngsolve.dll,sha256=FF9I4s8jcgdGpH2in1wwprMjz8yNwhtXEoQAZzKDjOk,38097920
|
|
2
2
|
netgen/ngscxx.bat,sha256=VoM77lA1caaCxceVKRtN_SRBB3U1Duofhz1B-LtAGsg,698
|
|
3
3
|
netgen/ngsld.bat,sha256=YD1I1rK70K_YvLev7aYQMD9mCcwF55k1B_8pRWPpob0,428
|
|
4
4
|
netgen/ngspy,sha256=3e0duHqv6lx2t8qE3kj2nTLz76Pd-RwjY7L7J-94UP4,70
|
|
@@ -161,12 +161,13 @@ netgen/include/simd_complex.hpp,sha256=JOmBhwEPK-LtuXmofWR01ziUWXGTcmzRtoFl34Zp0
|
|
|
161
161
|
netgen/include/smoother.hpp,sha256=SoVZvhFynyPSIAe-x8EloVluIHUE0k78Dp3sQFu-Yfo,6896
|
|
162
162
|
netgen/include/solve.hpp,sha256=lzCGHU1QOj9VXG43Q8MzvDi48-BfVH_fG8R0ttU8Xfg,2123
|
|
163
163
|
netgen/include/sparsecholesky.hpp,sha256=hOzFoXMEelAdJROF1q4zkYv0yfZgSDhjwaYvRRmiMcE,9201
|
|
164
|
+
netgen/include/sparsefactorization_interface.hpp,sha256=Hbs7OEs8Q7HS9MVC4X5kKA0vS6HI13In_7g4TqKUsRE,4296
|
|
164
165
|
netgen/include/sparsematrix.hpp,sha256=c_FdF060SJ0_qQK3WRQg5Gu042neowQHQ31n8cj3r1E,33779
|
|
165
166
|
netgen/include/sparsematrix_dyn.hpp,sha256=1azpAkASyjwRKiDZ_FVVyBPiLpiZocsW0S9bEMTjprI,2746
|
|
166
167
|
netgen/include/sparsematrix_impl.hpp,sha256=WpqmiecTQpbvE6LSfoouvKBCY6T2Y4FetCclHPa8RTI,31232
|
|
167
168
|
netgen/include/special_matrix.hpp,sha256=j_9NSuEudoEzX3hx6TAdSwOEka5MiQgqJ1lAOwno4ng,16989
|
|
168
169
|
netgen/include/specialelement.hpp,sha256=ovP0KuLWkBRnoc72hfzGgrrigzNQBdJexVAgSUj63vg,3351
|
|
169
|
-
netgen/include/statushandler.hpp,sha256=
|
|
170
|
+
netgen/include/statushandler.hpp,sha256=NWSeGEz-aB7fNs6WZgObmO66BB9OJ4R4w3v7WSeL4fk,704
|
|
170
171
|
netgen/include/stringops.hpp,sha256=vN_DL7f2M5e9dLpZOHIVDXzwoSovbqtuqClZdYMVDrA,274
|
|
171
172
|
netgen/include/superluinverse.hpp,sha256=A5YmUv_5R0qAzcD4zIxpUPAB6HqLcXuFU6J91Ygmnio,3301
|
|
172
173
|
netgen/include/symbolicintegrator.hpp,sha256=wqNooITNcQVDUiPbs3LIAaV7vpFBLhq1TvupEoDGs2A,36897
|
|
@@ -192,14 +193,14 @@ netgen/include/voxelcoefficientfunction.hpp,sha256=zPlatX_nf2ODK2X979wvpm1HXHEzn
|
|
|
192
193
|
netgen/include/vtkoutput.hpp,sha256=GwPaFtOVY27_1hKwSqpNHV4ppOk3CVsLdMpocm27odQ,6628
|
|
193
194
|
netgen/include/vvector.hpp,sha256=vpnwWlNWsEJB26ve8cKADbUMGVBTTVCFvrBC4r_LDDQ,4785
|
|
194
195
|
netgen/include/webgui.hpp,sha256=xm1S5KHockrzf_R4zHzQ9fzwfQ4H5aZaZm9ItCaR41s,2199
|
|
195
|
-
netgen/lib/libngsolve.lib,sha256=
|
|
196
|
+
netgen/lib/libngsolve.lib,sha256=CDwp2TklxfEeckWNDxQq_D4LOQ85tpJU7N2SrHJe_jU,13927470
|
|
196
197
|
ngsolve/TensorProductTools.py,sha256=jD4LtJdEiLt2dDsU6STMXb10yrau_i20gatwGlqbiFQ,8562
|
|
197
198
|
ngsolve/__console.py,sha256=QLnfw1ONU9eVPQZ_LjzY-7b_gfZpRRRdI7imHR1lJR8,2983
|
|
198
199
|
ngsolve/__expr.py,sha256=ZAtv94PVtAdvWWKFIvQGJC55aIEY6ajo-l5Hp-1V-6s,4396
|
|
199
200
|
ngsolve/__init__.py,sha256=_pRJLhaBNqv2q1vigj9p-2YqRbiROROrnl3iVM9G2ow,5620
|
|
200
201
|
ngsolve/_scikit_build_core_dependencies.py,sha256=usioLq44m3uusEH205dW0czyzGmzy87PZgizZKUoPs0,765
|
|
201
202
|
ngsolve/bvp.py,sha256=STQCDhEphVgEK3hfWGJyVkS1vi_ubTTKHq7fnuR-POo,2065
|
|
202
|
-
ngsolve/directsolvers.py,sha256=
|
|
203
|
+
ngsolve/directsolvers.py,sha256=oP6hzWSlmNuobu5tFoMJRRX3Zh-_dib-S_rQ2Z9LEio,526
|
|
203
204
|
ngsolve/eigenvalues.py,sha256=7PRftYxyoBwu0C_kD1lrDI0gjgJOyJWZzAhVQVfTAkI,9673
|
|
204
205
|
ngsolve/internal.py,sha256=IgPpdMN7bdaCrafmJcNLha4CYae06A52AHobPjGrkdw,5202
|
|
205
206
|
ngsolve/krylovspace.py,sha256=uBV8zrTP9RaqlTjYqowFNqVOMfK7ECTg99J8AbeJTWY,32876
|
|
@@ -207,21 +208,20 @@ ngsolve/meshes.py,sha256=nz95LP1EEIVAEJ0jyQGqq0E-62uuy2tvIRgqIrEqDHQ,27534
|
|
|
207
208
|
ngsolve/ngs2petsc.py,sha256=PLAkvu4H-ZEXd0-bM2v0OJX7gga-OJ9d-NB7g322-wQ,12809
|
|
208
209
|
ngsolve/ngscxx.py,sha256=r9TV49w0MKIxE6fgJYO4FNv-5wcM9eAFYIG9GspUy_A,1335
|
|
209
210
|
ngsolve/ngslib.lib,sha256=PMhmZBaGh5nKKYoOl2fg3yeDwwLKpe7a5XttqXXc5xc,1716
|
|
210
|
-
ngsolve/ngslib.pyd,sha256=
|
|
211
|
+
ngsolve/ngslib.pyd,sha256=ry8pfvmlNgTt91DxyRKl3GmlTaPS6Fu4z8NWXqRmRvE,138240
|
|
211
212
|
ngsolve/nonlinearsolvers.py,sha256=nKd-SVJseTWztHZPEPKsbv0mLwQjFILZtOh7Ggft0xs,8419
|
|
212
213
|
ngsolve/preconditioners.py,sha256=vsbO1lQG-ibmk88AHsiizDZcBYsfHEL-13_E_l-tYuw,250
|
|
213
214
|
ngsolve/solve_implementation.py,sha256=F2es3RvCb2OWNs1Lxl1jexZXCgmfH6cct8cJapftlEg,5708
|
|
214
|
-
ngsolve/solvers.py,sha256=Vbm5RfIJ83nMtQ1pYJL0uBBuys4-mcY6b63MNkyiqxU,311
|
|
215
215
|
ngsolve/timestepping.py,sha256=SuKsFS7cDXRixKWdMMIWW4flet12HLeqWTBC0DFhPwg,8535
|
|
216
216
|
ngsolve/timing.py,sha256=j_Plbbh51pS9QwMq93hyvFDSrbywmdKZ6Z6OOZmZoe4,4093
|
|
217
217
|
ngsolve/utils.py,sha256=jg6smLuKF6G9Rvg-EXjyYwjFJGyyiqSRknevdjp-9J4,4724
|
|
218
218
|
ngsolve/webgui.py,sha256=HVJnfG96eGuO6ZRfqiWQlRaKbK_Yv5y0QbicfNFAf6A,24983
|
|
219
|
-
ngsolve/cmake/NGSolveConfig.cmake,sha256
|
|
219
|
+
ngsolve/cmake/NGSolveConfig.cmake,sha256=-_L0bYC8IRVFIIFM-mPUj3nqYLCJMkWfHgVB2IUMYmY,5182
|
|
220
220
|
ngsolve/cmake/ngsolve-targets-release.cmake,sha256=knQjCmz6J-x_Egg5DosY5hU_CZdZlSQxQ4Za7pS07fA,907
|
|
221
|
-
ngsolve/cmake/ngsolve-targets.cmake,sha256=
|
|
221
|
+
ngsolve/cmake/ngsolve-targets.cmake,sha256=0b9ik_4jQ2mNfqq1oZxhFZq3faLxzmvtR4G8ubzHidQ,6125
|
|
222
222
|
ngsolve/config/__init__.py,sha256=IjGKWBHvRx572Z6m-5z0q82xuQaWlBABy1whwy2Uxak,23
|
|
223
223
|
ngsolve/config/__main__.py,sha256=anI_XpgrpEnVnMyrFiH3Yon_tpQZkehnqRTNC02NiBI,93
|
|
224
|
-
ngsolve/config/config.py,sha256=
|
|
224
|
+
ngsolve/config/config.py,sha256=QTCZ56_-WHc2yZW0rr84dIeGjM98TLmfgj5dEARkAcY,2549
|
|
225
225
|
ngsolve/demos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
226
226
|
ngsolve/demos/TensorProduct/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
227
227
|
ngsolve/demos/TensorProduct/tp_dg_1d_1d.py,sha256=3Q9ntmVJGIKQ-JLdGWgECR_kDjTG8FPVCSiTJkxyi40,2188
|
|
@@ -253,37 +253,39 @@ ngsolve/demos/mpi/mpi_cmagnet.py,sha256=59TuQvIIGoDStyJneH47NG131nppBoQpZQ9rfvG_
|
|
|
253
253
|
ngsolve/demos/mpi/mpi_navierstokes.py,sha256=ieAWMDd9LoH99L14iBgF_YmX_xk7gltZ9MruTFN6xAY,3028
|
|
254
254
|
ngsolve/demos/mpi/mpi_poisson.py,sha256=_-H0HFqlwlpasiVD9OQjUvJbWJcQ34-4y-va1WOSOzE,2557
|
|
255
255
|
ngsolve/demos/mpi/mpi_timeDG.py,sha256=FUOh_1dzOGUU-uAsD4iyz0RVT382jMiMiuYkZjarhAE,1963
|
|
256
|
-
ngsolve
|
|
257
|
-
ngsolve
|
|
258
|
-
ngsolve-6.2.2506.
|
|
259
|
-
ngsolve-6.2.2506.
|
|
260
|
-
ngsolve-6.2.2506.
|
|
261
|
-
ngsolve-6.2.2506.
|
|
262
|
-
ngsolve-6.2.2506.
|
|
263
|
-
ngsolve-6.2.2506.
|
|
264
|
-
ngsolve-6.2.2506.
|
|
265
|
-
ngsolve-6.2.2506.
|
|
266
|
-
ngsolve-6.2.2506.
|
|
267
|
-
ngsolve-6.2.2506.
|
|
268
|
-
ngsolve-6.2.2506.
|
|
269
|
-
ngsolve-6.2.2506.
|
|
270
|
-
ngsolve-6.2.2506.
|
|
271
|
-
ngsolve-6.2.2506.
|
|
272
|
-
ngsolve-6.2.2506.
|
|
273
|
-
ngsolve-6.2.2506.
|
|
274
|
-
ngsolve-6.2.2506.
|
|
275
|
-
ngsolve-6.2.2506.
|
|
276
|
-
ngsolve-6.2.2506.
|
|
277
|
-
ngsolve-6.2.2506.
|
|
278
|
-
ngsolve-6.2.2506.
|
|
279
|
-
ngsolve-6.2.2506.
|
|
280
|
-
ngsolve-6.2.2506.
|
|
281
|
-
ngsolve-6.2.2506.
|
|
282
|
-
ngsolve-6.2.2506.
|
|
283
|
-
ngsolve-6.2.2506.
|
|
284
|
-
ngsolve-6.2.2506.
|
|
285
|
-
ngsolve-6.2.2506.
|
|
286
|
-
ngsolve-6.2.2506.
|
|
287
|
-
ngsolve-6.2.2506.
|
|
288
|
-
ngsolve-6.2.2506.
|
|
289
|
-
ngsolve-6.2.2506.
|
|
256
|
+
ngsolve/solvers/__init__.py,sha256=Vbm5RfIJ83nMtQ1pYJL0uBBuys4-mcY6b63MNkyiqxU,311
|
|
257
|
+
ngsolve/solvers/cudss.py,sha256=-1wiJhjW5ddtF2FyPzNXsm-e10jkc0f5VKtqXwsA0S0,2737
|
|
258
|
+
ngsolve-6.2.2506.post85.dev0.data/data/Scripts/ngsolve.tcl,sha256=8KBOXZKYU_qx8785PIjdmVjcUbCxR5aYrod0BZ4UgGc,21637
|
|
259
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/beam.geo,sha256=HTv0A6IUoVuavifolhGKY6U44z0hni07Htonqe6rw_A,404
|
|
260
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/beam.vol,sha256=QZbM9JE4rBs5nVXaw7ZAbDf60yXbX19bm1OnOScF57M,13834
|
|
261
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/chip.in2d,sha256=561AjEIPnlzMZHIzep5lRjocQDm8w7o7IDna5u8s9JQ,592
|
|
262
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/chip.vol,sha256=gkEmBWlQh8BkSFNTf-XISfmuGzHXDKANV4Uoww_BwJI,28511
|
|
263
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/coil.geo,sha256=ylB2OiWEZztFXPx99qTNRJKmZFIDPEezEgQt4EPtZRA,376
|
|
264
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/coil.vol,sha256=t8cWP_YX38FMw0S-7vEVUOcSH0VK6DlaqVWG_zmBo-4,147284
|
|
265
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/coilshield.geo,sha256=Sq8w7i22WQ0viaiM3bU_63lZGFWp8JgyDqs3RdjeTe0,629
|
|
266
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/coilshield.vol,sha256=JiZOM9A529-hikvv1kyLwffTRpeatLtaVTNcu42o1fo,165576
|
|
267
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/cube.geo,sha256=Wd9AnPdoQgjQ-JK6zmoXjsNxPR9B8ED4pdHVwmRoe1M,405
|
|
268
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/cube.vol,sha256=RS8bay_KlF6IZM0QDDr7_dGaFLqoxszQU_w8TYutMKY,92127
|
|
269
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde,sha256=lK3sXmK74eFEMk8F6hwFHe_tBYnOdRq3F-RbzKpDK0c,1354
|
|
270
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde,sha256=VuEQtkZaIJA9yuvjG_jcx1UB9UtAaZSoeJYFHcHeYxk,1141
|
|
271
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d1_square.pde,sha256=24ZZ0nlbr5LKl_mPyeZZMSkiCBiBk1fzNElo3yITX2A,1072
|
|
272
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d2_chip.pde,sha256=yGIbzuTdCEjdoC9Ig_hbcy5qz69_wxgPZeYmhY1rN7k,985
|
|
273
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d3_helmholtz.pde,sha256=gWqQTh1M9NiKGohlu5JxDJuvRz-T28WlNSVbwmMvM-0,590
|
|
274
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d4_cube.pde,sha256=6kL43ehAh1PdwnFlLjadg325bFjpz02p2PpAOxlDFuc,1079
|
|
275
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d5_beam.pde,sha256=VQt9WbqAVWObFH9Jy1YieE9WHnVZ_hnsKVTz6ysEBxI,2059
|
|
276
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d6_shaft.pde,sha256=y10nLFA2-GwEwnAs5R-8wppRq-09vYJ_C9LJ3DSvlS0,1974
|
|
277
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d7_coil.pde,sha256=KFkqtZiPD4LQsGnghwwdq1qmpWf0T5xQR4HwbRL9ZZA,1250
|
|
278
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d8_coilshield.pde,sha256=9XG0TcgZ7mComh_pVntnuzDldEx5PD-C7gqK05PTWus,1190
|
|
279
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d9_hybridDG.pde,sha256=vYschVRu5vC91YpyVZFCBFuno-ZlOcRznPD-OvJTLtQ,1551
|
|
280
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/doubleglazing.in2d,sha256=lDCukUh9iTpkiH-qJAVdeAlMpiYF0AibAA6g3jOeWDY,533
|
|
281
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/doubleglazing.vol,sha256=IUOhUrZi8WMnvrIJe--A8cYPN6mscslA8_4yxvKShb0,35724
|
|
282
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz,sha256=RuxM0vtYljoAImOH6U6avt0LmWaUbGNao37n8p_Yd1w,496477
|
|
283
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/shaft.geo,sha256=Y3OVQlWjgICe2Dwz6-Qs8r0tLanjwtWP0xFx5AwNRJk,2507
|
|
284
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/shaft.vol,sha256=IqViJ4hJKk3Uf66PkVJ-kHpBQ_ZpkigRuh5g1Po4euY,274741
|
|
285
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/square.in2d,sha256=5dewiEjTsRFiNkBlmaTjBAZejq55TTlusp8ALfTMc2M,209
|
|
286
|
+
ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/square.vol,sha256=tWdPeQ52deUNgWOsWKhqgNVsJKhkJmEAVp5-xjhzEwg,9311
|
|
287
|
+
ngsolve-6.2.2506.post85.dev0.dist-info/LICENSE,sha256=iFoD9UsVeWEjb0aEPnmXKr_NaJC2y7NovH7KMo_5WhI,26934
|
|
288
|
+
ngsolve-6.2.2506.post85.dev0.dist-info/METADATA,sha256=Ocudo3m69lOA5QjzdzJz8oPhxJFz_iZEai44__x5unE,228
|
|
289
|
+
ngsolve-6.2.2506.post85.dev0.dist-info/WHEEL,sha256=m80YfzNz3jW1qC3l3wcIVYwAZZ7BsFPRWWkkti4tjCc,96
|
|
290
|
+
ngsolve-6.2.2506.post85.dev0.dist-info/top_level.txt,sha256=1llU44DxNIP85uPT4RChsIuV3h2d0_5j0Ui_Df5vV8E,15
|
|
291
|
+
ngsolve-6.2.2506.post85.dev0.dist-info/RECORD,,
|
|
File without changes
|
{ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/Scripts/ngsolve.tcl
RENAMED
|
File without changes
|
{ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/beam.geo
RENAMED
|
File without changes
|
{ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/beam.vol
RENAMED
|
File without changes
|
{ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/chip.in2d
RENAMED
|
File without changes
|
{ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/chip.vol
RENAMED
|
File without changes
|
{ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/coil.geo
RENAMED
|
File without changes
|
{ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/coil.vol
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/cube.geo
RENAMED
|
File without changes
|
{ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/cube.vol
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/shaft.geo
RENAMED
|
File without changes
|
{ngsolve-6.2.2506.post74.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/shaft.vol
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngsolve-6.2.2506.post74.dev0.dist-info → ngsolve-6.2.2506.post85.dev0.dist-info}/top_level.txt
RENAMED
|
File without changes
|