ngsolve 6.2.2502__cp39-cp39-macosx_10_15_universal2.whl → 6.2.2504__cp39-cp39-macosx_10_15_universal2.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/fespace.hpp +3 -2
- netgen/include/integrator.hpp +4 -16
- netgen/include/intrules_SauterSchwab.hpp +25 -0
- netgen/include/mp_coefficient.hpp +140 -0
- netgen/include/mptools.hpp +106 -161
- netgen/include/potentialtools.hpp +20 -0
- netgen/include/prolongation.hpp +126 -3
- netgen/include/sparsematrix_impl.hpp +71 -5
- netgen/include/symbolicintegrator.hpp +1 -0
- netgen/include/tangentialfacetfespace.hpp +7 -22
- netgen/libngbla.dylib +0 -0
- netgen/libngcomp.dylib +0 -0
- netgen/libngfem.dylib +0 -0
- netgen/libngla.dylib +0 -0
- netgen/libngsbem.dylib +0 -0
- netgen/libngsolve.dylib +0 -0
- netgen/libngstd.dylib +0 -0
- ngsolve/__init__.py +1 -0
- ngsolve/cmake/NGSolveConfig.cmake +5 -5
- ngsolve/cmake/ngsolve-targets-release.cmake +10 -0
- ngsolve/cmake/ngsolve-targets.cmake +9 -2
- ngsolve/config/config.py +5 -5
- ngsolve/ngslib.so +0 -0
- ngsolve/solve_implementation.py +146 -0
- {ngsolve-6.2.2502.dist-info → ngsolve-6.2.2504.dist-info}/METADATA +2 -2
- {ngsolve-6.2.2502.dist-info → ngsolve-6.2.2504.dist-info}/RECORD +62 -57
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/Netgen.icns +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/bin/ngscxx +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/bin/ngsld +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/bin/ngsolve.tcl +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/bin/ngspy +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/beam.geo +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/beam.vol +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/chip.in2d +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/chip.vol +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coil.geo +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coil.vol +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coilshield.geo +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coilshield.vol +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/cube.geo +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/cube.vol +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d1_square.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d2_chip.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d4_cube.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d5_beam.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d6_shaft.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d7_coil.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/doubleglazing.vol +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/shaft.geo +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/shaft.vol +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/square.in2d +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2504.data}/data/share/ngsolve/square.vol +0 -0
- {ngsolve-6.2.2502.dist-info → ngsolve-6.2.2504.dist-info}/LICENSE +0 -0
- {ngsolve-6.2.2502.dist-info → ngsolve-6.2.2504.dist-info}/WHEEL +0 -0
- {ngsolve-6.2.2502.dist-info → ngsolve-6.2.2504.dist-info}/top_level.txt +0 -0
|
@@ -51,28 +51,94 @@ namespace ngla
|
|
|
51
51
|
FlatArray<TM> val, size_t h, size_t w)
|
|
52
52
|
{
|
|
53
53
|
static Timer t("SparseMatrix::CreateFromCOO"); RegionTimer r(t);
|
|
54
|
-
|
|
54
|
+
static Timer t1("SparseMatrix::CreateFromCOO 1");
|
|
55
|
+
static Timer t2("SparseMatrix::CreateFromCOO 2");
|
|
56
|
+
static Timer t3("SparseMatrix::CreateFromCOO 3");
|
|
55
57
|
|
|
56
58
|
/*
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
*/
|
|
59
|
+
{
|
|
60
|
+
Array<int> cnt(h);
|
|
60
61
|
|
|
62
|
+
t1.Start();
|
|
61
63
|
DynamicTable<int> tab(h);
|
|
62
64
|
for (size_t i = 0; i < indi.Size(); i++)
|
|
63
65
|
tab.AddUnique(indi[i], indj[i]);
|
|
66
|
+
t1.Stop();
|
|
64
67
|
for (size_t i = 0; i < h; i++)
|
|
65
68
|
cnt[i] = tab.EntrySize(i);
|
|
66
69
|
|
|
67
70
|
auto matrix = make_shared<SparseMatrix<TM>> (cnt, w);
|
|
71
|
+
t2.Start();
|
|
68
72
|
for (auto k : ngstd::Range(indi))
|
|
69
73
|
matrix->CreatePosition(indi[k], indj[k]);
|
|
74
|
+
t2.Stop();
|
|
70
75
|
matrix->SetZero();
|
|
71
76
|
|
|
77
|
+
t3.Start();
|
|
72
78
|
for (auto k : ngstd::Range(indi))
|
|
73
79
|
(*matrix)(indi[k], indj[k]) += val[k];
|
|
80
|
+
t3.Stop();
|
|
81
|
+
// return matrix;
|
|
82
|
+
}
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
Array<int> cnt(h);
|
|
86
|
+
cnt = 0;
|
|
87
|
+
for (auto i : indi)
|
|
88
|
+
cnt[i]++;
|
|
89
|
+
|
|
90
|
+
Table<int> tab(cnt);
|
|
91
|
+
cnt = 0;
|
|
92
|
+
|
|
93
|
+
for (auto [i,j] : Zip(indi, indj))
|
|
94
|
+
tab[i][cnt[i]++] = j;
|
|
95
|
+
|
|
96
|
+
cnt = 0;
|
|
97
|
+
// for (int i = 0; i < tab.Size(); i++)
|
|
98
|
+
ParallelFor (tab.Size(), [&] (size_t i)
|
|
99
|
+
{
|
|
100
|
+
QuickSort (tab[i]);
|
|
101
|
+
|
|
102
|
+
int prev = -1;
|
|
103
|
+
for (auto j : tab[i])
|
|
104
|
+
{
|
|
105
|
+
if (j != prev) cnt[i]++;
|
|
106
|
+
prev = j;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
auto matrix = make_shared<SparseMatrix<TM>> (cnt, w);
|
|
111
|
+
t2.Start();
|
|
112
|
+
// for (auto k : ngstd::Range(indi))
|
|
113
|
+
// matrix->CreatePosition(indi[k], indj[k]);
|
|
74
114
|
|
|
75
|
-
|
|
115
|
+
cnt = 0;
|
|
116
|
+
for (int i = 0; i < tab.Size(); i++)
|
|
117
|
+
{
|
|
118
|
+
int prev = -1;
|
|
119
|
+
for (auto j : tab[i])
|
|
120
|
+
{
|
|
121
|
+
auto cols = matrix->GetRowIndices(i);
|
|
122
|
+
if (j != prev)
|
|
123
|
+
cols[cnt[i]++] = j;
|
|
124
|
+
prev = j;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
t2.Stop();
|
|
129
|
+
matrix->SetZero();
|
|
130
|
+
|
|
131
|
+
t3.Start();
|
|
132
|
+
/*
|
|
133
|
+
for (auto k : ngstd::Range(indi))
|
|
134
|
+
(*matrix)(indi[k], indj[k]) += val[k];
|
|
135
|
+
*/
|
|
136
|
+
ParallelFor (indi.Size(), [&](size_t k)
|
|
137
|
+
{
|
|
138
|
+
AtomicAdd ( (*matrix)(indi[k], indj[k]), val[k]);
|
|
139
|
+
});
|
|
140
|
+
t3.Stop();
|
|
141
|
+
return matrix;
|
|
76
142
|
}
|
|
77
143
|
|
|
78
144
|
|
|
@@ -16,34 +16,22 @@ namespace ngcomp
|
|
|
16
16
|
class NGS_DLL_HEADER TangentialFacetFESpace : public FESpace
|
|
17
17
|
{
|
|
18
18
|
protected:
|
|
19
|
-
/// Level
|
|
20
|
-
// int level;
|
|
21
|
-
/// Number of Facets
|
|
22
|
-
// int nfacets;
|
|
23
|
-
///
|
|
24
|
-
// int ncfacets;
|
|
25
|
-
///
|
|
26
|
-
// int nel;
|
|
27
|
-
|
|
28
19
|
Array<int> first_facet_dof;
|
|
29
20
|
Array<int> first_inner_dof; // for highest_order_dc
|
|
30
|
-
// int ndof_lo;
|
|
31
21
|
|
|
32
22
|
int rel_order;
|
|
33
23
|
|
|
34
24
|
Array<IVec<2> > order_facet;
|
|
35
25
|
Array<bool> fine_facet;
|
|
36
26
|
|
|
37
|
-
// int ndof;
|
|
38
|
-
// Array<int> ndlevel;
|
|
39
27
|
bool var_order;
|
|
40
28
|
bool print;
|
|
41
29
|
|
|
42
30
|
bool highest_order_dc;
|
|
43
31
|
bool hide_highest_order_dc;
|
|
32
|
+
bool all_dofs_together;
|
|
44
33
|
|
|
45
34
|
public:
|
|
46
|
-
///
|
|
47
35
|
TangentialFacetFESpace (shared_ptr<MeshAccess> ama, const Flags & flags,
|
|
48
36
|
bool parseflags = false );
|
|
49
37
|
|
|
@@ -61,20 +49,11 @@ namespace ngcomp
|
|
|
61
49
|
virtual void SetOrder (NodeId ni, int order) override;
|
|
62
50
|
virtual int GetOrder (NodeId ni) const override;
|
|
63
51
|
|
|
64
|
-
|
|
65
|
-
// virtual size_t GetNDof() const throw() override { return ndof; }
|
|
66
|
-
// virtual size_t GetNDofLevel ( int i ) const override { return ndlevel[i]; }
|
|
67
|
-
|
|
68
52
|
virtual FlatArray<VorB> GetDualShapeNodes (VorB vb) const override;
|
|
69
53
|
|
|
70
|
-
// virtual int GetNDofLowOrder () const
|
|
71
|
-
// { return ndof_lo; }
|
|
72
54
|
|
|
73
55
|
virtual FiniteElement & GetFE(ElementId ei, Allocator & lh) const override;
|
|
74
56
|
|
|
75
|
-
// virtual const FiniteElement & GetFE ( int elnr, LocalHeap & lh ) const;
|
|
76
|
-
// virtual const FiniteElement & GetSFE ( int selnr, LocalHeap & lh ) const;
|
|
77
|
-
|
|
78
57
|
virtual void GetFacetDofNrs (int felnr, Array<DofId> & dnums) const;
|
|
79
58
|
|
|
80
59
|
virtual int GetNFacetDofs (int felnr) const;
|
|
@@ -90,6 +69,12 @@ namespace ngcomp
|
|
|
90
69
|
virtual IVec<2> GetFacetOrder(int fnr) const;
|
|
91
70
|
|
|
92
71
|
virtual int GetFirstFacetDof(int fanr) const;
|
|
72
|
+
const auto & GetFirstFacetDof() const { return first_facet_dof; }
|
|
73
|
+
|
|
74
|
+
IntRange GetFacetDofs (int nr) const
|
|
75
|
+
{
|
|
76
|
+
return IntRange (first_facet_dof[nr], first_facet_dof[nr+1]);
|
|
77
|
+
}
|
|
93
78
|
|
|
94
79
|
virtual bool UsesHighestOrderDiscontinuous() const {return highest_order_dc;};
|
|
95
80
|
|
netgen/libngbla.dylib
CHANGED
|
Binary file
|
netgen/libngcomp.dylib
CHANGED
|
Binary file
|
netgen/libngfem.dylib
CHANGED
|
Binary file
|
netgen/libngla.dylib
CHANGED
|
Binary file
|
netgen/libngsbem.dylib
ADDED
|
Binary file
|
netgen/libngsolve.dylib
CHANGED
|
Binary file
|
netgen/libngstd.dylib
CHANGED
|
Binary file
|
ngsolve/__init__.py
CHANGED
|
@@ -75,6 +75,7 @@ from .utils import x, y, z, dx, ds, grad, Grad, curl, div, Deviator, PyId, PyTra
|
|
|
75
75
|
from . import solvers
|
|
76
76
|
from . import preconditioners
|
|
77
77
|
from . import timestepping
|
|
78
|
+
from .solve_implementation import Solve
|
|
78
79
|
|
|
79
80
|
try:
|
|
80
81
|
from netgen.occ import unit_square, unit_cube
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
set(PACKAGE_VERSION "6.2.
|
|
1
|
+
set(PACKAGE_VERSION "6.2.2504")
|
|
2
2
|
find_package(Netgen CONFIG REQUIRED HINTS
|
|
3
3
|
${CMAKE_CURRENT_LIST_DIR}
|
|
4
4
|
${CMAKE_CURRENT_LIST_DIR}/..
|
|
@@ -23,15 +23,15 @@ set(NGSOLVE_PYBIND_INCLUDE_DIR "")
|
|
|
23
23
|
set(NGSOLVE_PYTHON_INCLUDE_DIRS "/Library/Frameworks/Python.framework/Versions/3.9/include/python3.9")
|
|
24
24
|
set(NGSOLVE_PYTHON_LIBRARIES "/Library/Frameworks/Python.framework/Versions/3.9/lib/libpython3.9.dylib")
|
|
25
25
|
set(NGSOLVE_PYTHON_PACKAGES_INSTALL_DIR "")
|
|
26
|
-
set(NGSOLVE_TCL_INCLUDE_PATH "/Users/gitlab-runner/builds/builds/rL7WHzyj/0/ngsolve/
|
|
26
|
+
set(NGSOLVE_TCL_INCLUDE_PATH "/Users/gitlab-runner/builds/builds/rL7WHzyj/0/ngsolve/netgen/_skbuild/macosx-10.15-universal2-3.9/cmake-build/dependencies/src/project_tcl/generic")
|
|
27
27
|
set(NGSOLVE_TCL_LIBRARY "/Library/Frameworks/Python.framework/Versions/3.9/lib/libtclstub8.6.a")
|
|
28
28
|
set(NGSOLVE_TK_DND_LIBRARY "")
|
|
29
|
-
set(NGSOLVE_TK_INCLUDE_PATH "/Users/gitlab-runner/builds/builds/rL7WHzyj/0/ngsolve/
|
|
29
|
+
set(NGSOLVE_TK_INCLUDE_PATH "/Users/gitlab-runner/builds/builds/rL7WHzyj/0/ngsolve/netgen/_skbuild/macosx-10.15-universal2-3.9/cmake-build/dependencies/src/project_tk/generic")
|
|
30
30
|
set(NGSOLVE_TK_LIBRARY "/Library/Frameworks/Python.framework/Versions/3.9/lib/libtkstub8.6.a")
|
|
31
31
|
set(NGSOLVE_X11_X11_LIB "")
|
|
32
32
|
set(NGSOLVE_X11_Xmu_LIB "")
|
|
33
|
-
set(NGSOLVE_ZLIB_INCLUDE_DIRS "/Users/gitlab-runner/builds/builds/rL7WHzyj/0/ngsolve/
|
|
34
|
-
set(NGSOLVE_ZLIB_LIBRARIES "/Users/gitlab-runner/builds/builds/rL7WHzyj/0/ngsolve/
|
|
33
|
+
set(NGSOLVE_ZLIB_INCLUDE_DIRS "/Users/gitlab-runner/builds/builds/rL7WHzyj/0/ngsolve/netgen/_skbuild/macosx-10.15-universal2-3.9/cmake-build/dependencies/zlib/include")
|
|
34
|
+
set(NGSOLVE_ZLIB_LIBRARIES "/Users/gitlab-runner/builds/builds/rL7WHzyj/0/ngsolve/netgen/_skbuild/macosx-10.15-universal2-3.9/cmake-build/dependencies/zlib/lib/libz.a")
|
|
35
35
|
|
|
36
36
|
set(NGSOLVE_INTEL_MIC OFF)
|
|
37
37
|
set(NGSOLVE_USE_CCACHE ON)
|
|
@@ -45,6 +45,16 @@ set_target_properties(ngfem PROPERTIES
|
|
|
45
45
|
list(APPEND _cmake_import_check_targets ngfem )
|
|
46
46
|
list(APPEND _cmake_import_check_files_for_ngfem "${_IMPORT_PREFIX}/netgen/libngfem.dylib" )
|
|
47
47
|
|
|
48
|
+
# Import target "ngsbem" for configuration "Release"
|
|
49
|
+
set_property(TARGET ngsbem APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
|
50
|
+
set_target_properties(ngsbem PROPERTIES
|
|
51
|
+
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/netgen/libngsbem.dylib"
|
|
52
|
+
IMPORTED_SONAME_RELEASE "@rpath/libngsbem.dylib"
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
list(APPEND _cmake_import_check_targets ngsbem )
|
|
56
|
+
list(APPEND _cmake_import_check_files_for_ngsbem "${_IMPORT_PREFIX}/netgen/libngsbem.dylib" )
|
|
57
|
+
|
|
48
58
|
# Import target "ngcomp" for configuration "Release"
|
|
49
59
|
set_property(TARGET ngcomp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
|
50
60
|
set_target_properties(ngcomp PROPERTIES
|
|
@@ -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 netgen_libs ngs_lapack netgen_python ngstd ngbla ngla ngfem ngcomp ngsolve)
|
|
22
|
+
foreach(_cmake_expected_target IN ITEMS netgen_libs ngs_lapack netgen_python 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}")
|
|
@@ -105,6 +105,13 @@ set_target_properties(ngfem PROPERTIES
|
|
|
105
105
|
INTERFACE_LINK_LIBRARIES "ngbla;ngstd"
|
|
106
106
|
)
|
|
107
107
|
|
|
108
|
+
# Create imported target ngsbem
|
|
109
|
+
add_library(ngsbem SHARED IMPORTED)
|
|
110
|
+
|
|
111
|
+
set_target_properties(ngsbem PROPERTIES
|
|
112
|
+
INTERFACE_LINK_LIBRARIES "ngcomp;ngfem;ngla;ngbla;ngstd"
|
|
113
|
+
)
|
|
114
|
+
|
|
108
115
|
# Create imported target ngcomp
|
|
109
116
|
add_library(ngcomp SHARED IMPORTED)
|
|
110
117
|
|
|
@@ -116,7 +123,7 @@ set_target_properties(ngcomp PROPERTIES
|
|
|
116
123
|
add_library(ngsolve SHARED IMPORTED)
|
|
117
124
|
|
|
118
125
|
set_target_properties(ngsolve PROPERTIES
|
|
119
|
-
INTERFACE_LINK_LIBRARIES "netgen_libs;ngsolve;ngcomp;ngfem;ngbla;ngla;ngstd"
|
|
126
|
+
INTERFACE_LINK_LIBRARIES "netgen_libs;ngsolve;ngcomp;ngfem;ngsbem;ngbla;ngla;ngstd"
|
|
120
127
|
)
|
|
121
128
|
|
|
122
129
|
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.
|
|
33
|
-
NGSOLVE_VERSION_GIT = "v6.2.
|
|
34
|
-
NGSOLVE_VERSION_PYTHON = "6.2.
|
|
32
|
+
NGSOLVE_VERSION = "6.2.2504"
|
|
33
|
+
NGSOLVE_VERSION_GIT = "v6.2.2504-0-g7dd7ba8dd"
|
|
34
|
+
NGSOLVE_VERSION_PYTHON = "6.2.2504"
|
|
35
35
|
|
|
36
36
|
NGSOLVE_VERSION_MAJOR = "6"
|
|
37
37
|
NGSOLVE_VERSION_MINOR = "2"
|
|
38
38
|
NGSOLVE_VERSION_TWEAK = "0"
|
|
39
|
-
NGSOLVE_VERSION_PATCH = "
|
|
40
|
-
NGSOLVE_VERSION_HASH = "
|
|
39
|
+
NGSOLVE_VERSION_PATCH = "2504"
|
|
40
|
+
NGSOLVE_VERSION_HASH = "g7dd7ba8dd"
|
|
41
41
|
|
|
42
42
|
CMAKE_CXX_COMPILER = "/Library/Developer/CommandLineTools/usr/bin/c++"
|
|
43
43
|
CMAKE_CUDA_COMPILER = ""
|
ngsolve/ngslib.so
CHANGED
|
Binary file
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import functools
|
|
2
|
+
|
|
3
|
+
from ngsolve import (
|
|
4
|
+
BilinearForm,
|
|
5
|
+
GridFunction,
|
|
6
|
+
CoefficientFunction,
|
|
7
|
+
Region,
|
|
8
|
+
BND,
|
|
9
|
+
Preconditioner,
|
|
10
|
+
)
|
|
11
|
+
from .nonlinearsolvers import NewtonSolver
|
|
12
|
+
from .krylovspace import GMResSolver, LinearSolver
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class Dirichlet:
|
|
16
|
+
def __init__(self, cf, region):
|
|
17
|
+
self.cf = cf
|
|
18
|
+
self.region = region
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class Application:
|
|
22
|
+
def __init__(self, a: BilinearForm, gf: GridFunction):
|
|
23
|
+
self.a = a
|
|
24
|
+
self.gf = gf
|
|
25
|
+
|
|
26
|
+
def Solve(
|
|
27
|
+
self,
|
|
28
|
+
rhs,
|
|
29
|
+
*args,
|
|
30
|
+
dirichlet = None,
|
|
31
|
+
pre = None,
|
|
32
|
+
printrates: bool = False,
|
|
33
|
+
**kwargs,
|
|
34
|
+
):
|
|
35
|
+
raise NotImplementedError("Solve method must be implemented in subclasses")
|
|
36
|
+
|
|
37
|
+
def __eq__(self, other):
|
|
38
|
+
return Equation(self, other)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class NonLinearApplication(Application):
|
|
42
|
+
def Solve(
|
|
43
|
+
self,
|
|
44
|
+
rhs=None,
|
|
45
|
+
dirichlet = None,
|
|
46
|
+
printing: bool = False,
|
|
47
|
+
**kwargs,
|
|
48
|
+
):
|
|
49
|
+
solver_args = {}
|
|
50
|
+
|
|
51
|
+
if rhs is not None and rhs != 0:
|
|
52
|
+
rhs.Assemble()
|
|
53
|
+
solver_args["rhs"] = rhs
|
|
54
|
+
solver = NewtonSolver(self.a, self.gf, **solver_args)
|
|
55
|
+
if dirichlet is not None:
|
|
56
|
+
dirichlet_gf = GridFunction(self.gf.space)
|
|
57
|
+
if isinstance(dirichlet, Dirichlet):
|
|
58
|
+
dirichlet_gf.Set(dirichlet.cf, definedon=dirichlet.region)
|
|
59
|
+
else:
|
|
60
|
+
dirichlet_gf.Set(dirichlet, BND)
|
|
61
|
+
solver.SetDirichlet(dirichlet_gf.vec)
|
|
62
|
+
solver.Solve(**kwargs)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class LinearApplication(Application):
|
|
66
|
+
def Assemble(self):
|
|
67
|
+
if not hasattr(self, "vec"):
|
|
68
|
+
self.vec = self.gf.vec.CreateVector()
|
|
69
|
+
self.a.Apply(self.gf.vec, self.vec)
|
|
70
|
+
|
|
71
|
+
def Solve(
|
|
72
|
+
self,
|
|
73
|
+
rhs,
|
|
74
|
+
*args,
|
|
75
|
+
dirichlet = None,
|
|
76
|
+
pre = None,
|
|
77
|
+
lin_solver=None,
|
|
78
|
+
lin_solver_args = None,
|
|
79
|
+
printrates: bool = False,
|
|
80
|
+
):
|
|
81
|
+
self.a.Assemble()
|
|
82
|
+
for arg in args:
|
|
83
|
+
if isinstance(arg, Dirichlet) or isinstance(arg, CoefficientFunction):
|
|
84
|
+
assert dirichlet is None, "Only one dirichlet condition can be set"
|
|
85
|
+
dirichlet = arg
|
|
86
|
+
if isinstance(arg, Preconditioner):
|
|
87
|
+
assert pre is None, "Only one preconditioner can be set"
|
|
88
|
+
pre = arg
|
|
89
|
+
if isinstance(arg, type) and issubclass(arg, LinearSolver):
|
|
90
|
+
assert lin_solver is None, "Only one linear solver can be set"
|
|
91
|
+
lin_solver = arg
|
|
92
|
+
rhs.Assemble()
|
|
93
|
+
if dirichlet is not None:
|
|
94
|
+
if isinstance(dirichlet, Dirichlet):
|
|
95
|
+
self.gf.Set(dirichlet.cf, definedon=dirichlet.region)
|
|
96
|
+
else:
|
|
97
|
+
self.gf.Set(dirichlet, BND)
|
|
98
|
+
rhs.vec.data += -self.a.mat * self.gf.vec
|
|
99
|
+
else:
|
|
100
|
+
self.gf.vec[:] = 0.0
|
|
101
|
+
if self.a.condense:
|
|
102
|
+
rhs.vec.data += self.a.harmonic_extension_trans * rhs.vec
|
|
103
|
+
if pre is None and lin_solver is None:
|
|
104
|
+
ainv = self.a.mat.Inverse(self.a.space.FreeDofs(self.a.condense))
|
|
105
|
+
else:
|
|
106
|
+
if lin_solver is None:
|
|
107
|
+
lin_solver = GMResSolver
|
|
108
|
+
if lin_solver_args is None:
|
|
109
|
+
lin_solver_args = {}
|
|
110
|
+
if pre is None:
|
|
111
|
+
freedofs = self.a.space.FreeDofs(self.a.condense)
|
|
112
|
+
else:
|
|
113
|
+
freedofs = None
|
|
114
|
+
if "printrates" not in lin_solver_args:
|
|
115
|
+
lin_solver_args["printrates"] = printrates
|
|
116
|
+
ainv = lin_solver(
|
|
117
|
+
mat=self.a.mat, pre=pre, freedofs=freedofs, **lin_solver_args
|
|
118
|
+
)
|
|
119
|
+
self.gf.vec.data += ainv * rhs.vec
|
|
120
|
+
if self.a.condense:
|
|
121
|
+
self.gf.vec.data += self.a.harmonic_extension * self.gf.vec
|
|
122
|
+
self.gf.vec.data += self.a.inner_solve * rhs.vec
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
class Equation:
|
|
126
|
+
def __init__(self, lhs, rhs):
|
|
127
|
+
self.lhs = lhs
|
|
128
|
+
self.rhs = rhs
|
|
129
|
+
|
|
130
|
+
@functools.wraps(Application.Solve)
|
|
131
|
+
def Solve(self, *args, **kwargs):
|
|
132
|
+
self.lhs.Solve(self.rhs, *args, **kwargs)
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def _create_lin_appl(self, gfu: GridFunction) -> LinearApplication:
|
|
136
|
+
if not isinstance(gfu, GridFunction):
|
|
137
|
+
raise TypeError("gfu must be a GridFunction")
|
|
138
|
+
return LinearApplication(self, gfu)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
BilinearForm.__mul__ = _create_lin_appl
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
@functools.wraps(Application.Solve)
|
|
145
|
+
def Solve(eq: Equation, *args, **kwargs):
|
|
146
|
+
eq.Solve(*args, **kwargs)
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ngsolve
|
|
3
|
-
Version: 6.2.
|
|
3
|
+
Version: 6.2.2504
|
|
4
4
|
Summary: NGSolve
|
|
5
5
|
Home-page: UNKNOWN
|
|
6
6
|
Author: The NGSolve team
|
|
7
7
|
License: LGPL2.1
|
|
8
8
|
Platform: UNKNOWN
|
|
9
9
|
License-File: LICENSE
|
|
10
|
-
Requires-Dist: netgen-mesher (==6.2.
|
|
10
|
+
Requires-Dist: netgen-mesher (==6.2.2504)
|
|
11
11
|
|
|
12
12
|
UNKNOWN
|
|
13
13
|
|