ngsolve 6.2.2502__cp312-cp312-win_amd64.whl → 6.2.2503__cp312-cp312-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/fespace.hpp +3 -2
- netgen/include/intrules_SauterSchwab.hpp +25 -0
- netgen/include/mptools.hpp +80 -16
- netgen/include/potentialtools.hpp +20 -0
- netgen/include/prolongation.hpp +126 -3
- netgen/include/sparsematrix_impl.hpp +71 -5
- netgen/include/tangentialfacetfespace.hpp +7 -22
- netgen/lib/libngsolve.lib +0 -0
- netgen/libngsolve.dll +0 -0
- ngsolve/cmake/NGSolveConfig.cmake +5 -5
- ngsolve/cmake/ngsolve-targets.cmake +9 -2
- ngsolve/config/config.py +5 -5
- ngsolve/ngslib.pyd +0 -0
- {ngsolve-6.2.2502.dist-info → ngsolve-6.2.2503.dist-info}/METADATA +2 -2
- {ngsolve-6.2.2502.dist-info → ngsolve-6.2.2503.dist-info}/RECORD +47 -45
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/Scripts/ngsolve.tcl +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/beam.geo +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/beam.vol +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/chip.in2d +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/chip.vol +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/coil.geo +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/coil.vol +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/coilshield.geo +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/coilshield.vol +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/cube.geo +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/cube.vol +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/d1_square.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/d2_chip.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/d4_cube.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/d5_beam.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/d6_shaft.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/d7_coil.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/doubleglazing.vol +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/shaft.geo +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/shaft.vol +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/square.in2d +0 -0
- {ngsolve-6.2.2502.data → ngsolve-6.2.2503.data}/data/share/ngsolve/square.vol +0 -0
- {ngsolve-6.2.2502.dist-info → ngsolve-6.2.2503.dist-info}/WHEEL +0 -0
- {ngsolve-6.2.2502.dist-info → ngsolve-6.2.2503.dist-info}/licenses/LICENSE +0 -0
- {ngsolve-6.2.2502.dist-info → ngsolve-6.2.2503.dist-info}/top_level.txt +0 -0
netgen/include/fespace.hpp
CHANGED
|
@@ -256,7 +256,7 @@ ANY 1 1 1 1 | 15
|
|
|
256
256
|
|
|
257
257
|
virtual void UpdateDofTables() { ; }
|
|
258
258
|
virtual void UpdateCouplingDofArray() { ; }
|
|
259
|
-
|
|
259
|
+
virtual void UpdateFreeDofs();
|
|
260
260
|
/// update element coloring
|
|
261
261
|
virtual void FinalizeUpdate();
|
|
262
262
|
|
|
@@ -640,7 +640,7 @@ ANY 1 1 1 1 | 15
|
|
|
640
640
|
/// Set multigrid prolongation
|
|
641
641
|
// void SetProlongation (ngmg::Prolongation * aprol)
|
|
642
642
|
// { prol = aprol; }
|
|
643
|
-
virtual void SetHarmonicProlongation (shared_ptr<BilinearForm> bfa);
|
|
643
|
+
virtual void SetHarmonicProlongation (shared_ptr<BilinearForm> bfa, string inverse);
|
|
644
644
|
|
|
645
645
|
/// returns function-evaluator
|
|
646
646
|
shared_ptr<DifferentialOperator> GetEvaluator (VorB vb = VOL) const
|
|
@@ -1109,6 +1109,7 @@ ANY 1 1 1 1 | 15
|
|
|
1109
1109
|
|
|
1110
1110
|
/// copies dofcoupling from components
|
|
1111
1111
|
void UpdateCouplingDofArray() override;
|
|
1112
|
+
virtual void UpdateFreeDofs() override;
|
|
1112
1113
|
|
|
1113
1114
|
void SetDefinedOn (VorB vb, const BitArray& defon) override;
|
|
1114
1115
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#ifndef INTRULES_HPP
|
|
2
|
+
#define INTRULES_HPP
|
|
3
|
+
|
|
4
|
+
#include <bla.hpp>
|
|
5
|
+
|
|
6
|
+
namespace ngsbem
|
|
7
|
+
{
|
|
8
|
+
using namespace ngbla;
|
|
9
|
+
|
|
10
|
+
// x, y in triangle [(0,0), (1,0), (0,1)]
|
|
11
|
+
tuple<Array<Vec<2>>, Array<Vec<2>>, Array<double>> IdenticPanelIntegrationRule (int order);
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
// x, y in triangle [(0,0), (1,0), (0,1)]
|
|
15
|
+
// x=(0,0) and y=(0,0) are common vertices
|
|
16
|
+
tuple<Array<Vec<2>>, Array<Vec<2>>, Array<double>> CommonVertexIntegrationRule (int order);
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
// x, y in triangle [(0,0), (1,0), (0,1)]
|
|
20
|
+
// x in [(0,0),(1,0)] and y in [(0,0),(1,0)] are common edges
|
|
21
|
+
tuple<Array<Vec<2>>, Array<Vec<2>>, Array<double>> CommonEdgeIntegrationRule (int order);
|
|
22
|
+
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
#endif
|
netgen/include/mptools.hpp
CHANGED
|
@@ -10,9 +10,16 @@
|
|
|
10
10
|
#include <coefficient.hpp>
|
|
11
11
|
#include <recursive_pol.hpp>
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
|
|
14
|
+
namespace ngcomp
|
|
14
15
|
{
|
|
16
|
+
class Region;
|
|
17
|
+
}
|
|
15
18
|
|
|
19
|
+
namespace ngsbem
|
|
20
|
+
{
|
|
21
|
+
using namespace ngfem;
|
|
22
|
+
|
|
16
23
|
|
|
17
24
|
template <typename entry_type = Complex>
|
|
18
25
|
class NGS_DLL_HEADER SphericalHarmonics
|
|
@@ -211,22 +218,53 @@ namespace ngfem
|
|
|
211
218
|
class MPSingular
|
|
212
219
|
{
|
|
213
220
|
public:
|
|
221
|
+
/*
|
|
214
222
|
template <typename T>
|
|
215
223
|
static void Eval (int order, double r, double scale, T && values)
|
|
216
224
|
{
|
|
217
225
|
SphericalHankel1(order, r, scale, values);
|
|
218
226
|
}
|
|
227
|
+
*/
|
|
228
|
+
|
|
229
|
+
template <typename T>
|
|
230
|
+
static void Eval (int order, double kappa, double r, double rtyp, T && values)
|
|
231
|
+
{
|
|
232
|
+
double scale = Scale(kappa, rtyp);
|
|
233
|
+
SphericalHankel1(order, r*kappa, scale, values);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
static double Scale (double kappa, double rtyp)
|
|
237
|
+
{
|
|
238
|
+
return min(1.0, rtyp*kappa);
|
|
239
|
+
}
|
|
219
240
|
};
|
|
241
|
+
|
|
242
|
+
|
|
220
243
|
|
|
221
244
|
// jn
|
|
222
245
|
class MPRegular
|
|
223
246
|
{
|
|
224
|
-
public:
|
|
247
|
+
public:
|
|
248
|
+
/*
|
|
225
249
|
template <typename T>
|
|
226
250
|
static void Eval (int order, double r, double scale, T && values)
|
|
227
251
|
{
|
|
228
252
|
SphericalBessel (order, r, 1.0/scale, values);
|
|
229
253
|
}
|
|
254
|
+
*/
|
|
255
|
+
|
|
256
|
+
template <typename T>
|
|
257
|
+
static void Eval (int order, double kappa, double r, double rtyp, T && values)
|
|
258
|
+
{
|
|
259
|
+
double scale = Scale(kappa, rtyp);
|
|
260
|
+
SphericalBessel (order, r*kappa, 1.0/scale, values);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
static double Scale (double kappa, double rtyp)
|
|
264
|
+
{
|
|
265
|
+
return 1.0/ min(1.0, 0.25*rtyp*kappa);
|
|
266
|
+
}
|
|
267
|
+
|
|
230
268
|
};
|
|
231
269
|
|
|
232
270
|
|
|
@@ -237,22 +275,30 @@ namespace ngfem
|
|
|
237
275
|
{
|
|
238
276
|
SphericalHarmonics<entry_type> sh;
|
|
239
277
|
double kappa;
|
|
240
|
-
double
|
|
278
|
+
double rtyp;
|
|
279
|
+
// double scale;
|
|
241
280
|
public:
|
|
281
|
+
/*
|
|
242
282
|
MultiPole (int aorder, double akappa, double ascale = 1)
|
|
243
283
|
: sh(aorder), kappa(akappa), scale(ascale) { }
|
|
284
|
+
*/
|
|
244
285
|
|
|
286
|
+
MultiPole (int aorder, double akappa, double artyp)
|
|
287
|
+
: sh(aorder), kappa(akappa), rtyp(artyp) { }
|
|
288
|
+
|
|
289
|
+
|
|
245
290
|
entry_type & Coef(int n, int m) { return sh.Coef(n,m); }
|
|
246
291
|
auto & SH() { return sh; }
|
|
247
292
|
const auto & SH() const { return sh; }
|
|
248
293
|
double Kappa() const { return kappa; }
|
|
249
|
-
double Scale() const { return
|
|
294
|
+
double Scale() const { return RADIAL::Scale(kappa, rtyp); }
|
|
295
|
+
double RTyp() const { return rtyp; }
|
|
250
296
|
int Order() const { return sh.Order(); }
|
|
251
297
|
|
|
252
298
|
MultiPole Truncate(int neworder) const
|
|
253
299
|
{
|
|
254
300
|
if (neworder > sh.Order()) neworder=sh.Order();
|
|
255
|
-
MultiPole nmp(neworder, kappa);
|
|
301
|
+
MultiPole nmp(neworder, kappa, rtyp);
|
|
256
302
|
nmp.sh.Coefs() = sh.Coefs().Range(sqr(neworder+1));
|
|
257
303
|
return nmp;
|
|
258
304
|
}
|
|
@@ -271,15 +317,27 @@ namespace ngfem
|
|
|
271
317
|
void AddDipole (Vec<3> x, Vec<3> d, entry_type c);
|
|
272
318
|
void AddCurrent (Vec<3> ap, Vec<3> ep, Complex j, int num=100);
|
|
273
319
|
|
|
274
|
-
|
|
320
|
+
/*
|
|
275
321
|
void ChangeScaleTo (double newscale)
|
|
276
322
|
{
|
|
277
|
-
double fac =
|
|
323
|
+
double fac = Scale()/newscale;
|
|
278
324
|
double prod = 1;
|
|
279
325
|
for (int n = 0; n <= sh.Order(); n++, prod*= fac)
|
|
280
326
|
sh.CoefsN(n) *= prod;
|
|
281
327
|
scale = newscale;
|
|
282
328
|
}
|
|
329
|
+
*/
|
|
330
|
+
void ChangeRTypTo (double new_rtyp)
|
|
331
|
+
{
|
|
332
|
+
// double fac = Scale()/newscale;
|
|
333
|
+
double fac = RADIAL::Scale(kappa, rtyp) / RADIAL::Scale(kappa, new_rtyp);
|
|
334
|
+
double prod = 1;
|
|
335
|
+
for (int n = 0; n <= sh.Order(); n++, prod*= fac)
|
|
336
|
+
sh.CoefsN(n) *= prod;
|
|
337
|
+
// scale = newscale;
|
|
338
|
+
rtyp = new_rtyp;
|
|
339
|
+
}
|
|
340
|
+
|
|
283
341
|
|
|
284
342
|
Vector<double> Spectrum (bool scaled) const
|
|
285
343
|
{
|
|
@@ -288,7 +346,7 @@ namespace ngfem
|
|
|
288
346
|
for (int n = 0; n <= Order(); n++)
|
|
289
347
|
{
|
|
290
348
|
spec(n) = fac * L2Norm2(sh.CoefsN(n));
|
|
291
|
-
if (!scaled) fac *= sqr(
|
|
349
|
+
if (!scaled) fac *= sqr(Scale());
|
|
292
350
|
}
|
|
293
351
|
return spec;
|
|
294
352
|
}
|
|
@@ -570,7 +628,7 @@ namespace ngfem
|
|
|
570
628
|
|
|
571
629
|
entry_type EvaluateDeriv(Vec<3> p, Vec<3> d) const
|
|
572
630
|
{
|
|
573
|
-
entry_type sum
|
|
631
|
+
entry_type sum{0.0};
|
|
574
632
|
if (childs[0])
|
|
575
633
|
{
|
|
576
634
|
for (auto & child : childs)
|
|
@@ -625,7 +683,7 @@ namespace ngfem
|
|
|
625
683
|
{
|
|
626
684
|
if (charges.Size()+dipoles.Size()+currents.Size() == 0)
|
|
627
685
|
{
|
|
628
|
-
mp = MultiPole<MPSingular,entry_type> (-1, mp.Kappa());
|
|
686
|
+
mp = MultiPole<MPSingular,entry_type> (-1, mp.Kappa(), 1.);
|
|
629
687
|
return;
|
|
630
688
|
}
|
|
631
689
|
|
|
@@ -722,12 +780,12 @@ namespace ngfem
|
|
|
722
780
|
|
|
723
781
|
double Kappa() const { return root.mp.Kappa(); }
|
|
724
782
|
|
|
725
|
-
void AddCharge(Vec<3> x,
|
|
783
|
+
void AddCharge(Vec<3> x, entry_type c)
|
|
726
784
|
{
|
|
727
785
|
root.AddCharge(x, c);
|
|
728
786
|
}
|
|
729
787
|
|
|
730
|
-
void AddDipole(Vec<3> x, Vec<3> d,
|
|
788
|
+
void AddDipole(Vec<3> x, Vec<3> d, entry_type c)
|
|
731
789
|
{
|
|
732
790
|
root.AddDipole(x, d, c);
|
|
733
791
|
}
|
|
@@ -756,7 +814,7 @@ namespace ngfem
|
|
|
756
814
|
}
|
|
757
815
|
*/
|
|
758
816
|
}
|
|
759
|
-
|
|
817
|
+
|
|
760
818
|
void Print (ostream & ost) const
|
|
761
819
|
{
|
|
762
820
|
root.Print(ost);
|
|
@@ -940,7 +998,7 @@ namespace ngfem
|
|
|
940
998
|
mp.TransformAdd (ch->mp, ch->center-center);
|
|
941
999
|
ch->LocalizeExpansion(allow_refine);
|
|
942
1000
|
}
|
|
943
|
-
mp = MultiPole<MPRegular,elem_type>(-1, mp.Kappa());
|
|
1001
|
+
mp = MultiPole<MPRegular,elem_type>(-1, mp.Kappa(), 1.);
|
|
944
1002
|
//mp.SH().Coefs()=0.0;
|
|
945
1003
|
}
|
|
946
1004
|
}
|
|
@@ -1064,7 +1122,7 @@ namespace ngfem
|
|
|
1064
1122
|
}
|
|
1065
1123
|
|
|
1066
1124
|
if (total_targets == 0)
|
|
1067
|
-
mp = MultiPole<MPRegular>(-1, mp.Kappa());
|
|
1125
|
+
mp = MultiPole<MPRegular,elem_type>(-1, mp.Kappa(),1.);
|
|
1068
1126
|
}
|
|
1069
1127
|
|
|
1070
1128
|
|
|
@@ -1226,6 +1284,9 @@ namespace ngfem
|
|
|
1226
1284
|
|
|
1227
1285
|
|
|
1228
1286
|
|
|
1287
|
+
template <typename entry_type> class RegularMLMultiPoleCF;
|
|
1288
|
+
|
|
1289
|
+
|
|
1229
1290
|
template <typename RADIAL, typename entry_type=Complex>
|
|
1230
1291
|
class MultiPoleCF : public CoefficientFunction
|
|
1231
1292
|
{
|
|
@@ -1285,7 +1346,8 @@ namespace ngfem
|
|
|
1285
1346
|
|
|
1286
1347
|
}
|
|
1287
1348
|
|
|
1288
|
-
shared_ptr<SingularMLMultiPole<entry_type>> MLMP() { return mlmp; }
|
|
1349
|
+
shared_ptr<SingularMLMultiPole<entry_type>> MLMP() const { return mlmp; }
|
|
1350
|
+
shared_ptr<RegularMLMultiPoleCF<entry_type>> CreateRegularExpansion(Vec<3> center, double r) const;
|
|
1289
1351
|
};
|
|
1290
1352
|
|
|
1291
1353
|
|
|
@@ -1296,6 +1358,8 @@ namespace ngfem
|
|
|
1296
1358
|
public:
|
|
1297
1359
|
RegularMLMultiPoleCF (shared_ptr<SingularMLMultiPoleCF<entry_type>> asingmp, Vec<3> center, double r, int order)
|
|
1298
1360
|
: CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLMultiPole<entry_type>>(asingmp->MLMP(), center, r, order)} { }
|
|
1361
|
+
RegularMLMultiPoleCF (shared_ptr<SingularMLMultiPole<entry_type>> asingmp, Vec<3> center, double r, int order)
|
|
1362
|
+
: CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLMultiPole<entry_type>>(asingmp, center, r, order)} { }
|
|
1299
1363
|
|
|
1300
1364
|
virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
|
|
1301
1365
|
{ throw Exception("real eval not available"); }
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#ifndef FILE_POTENTIALS
|
|
2
|
+
#define FILE_POTENTIALS
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
tools for computing with potentials using multipoles
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
#include <mptools.hpp>
|
|
10
|
+
#include <meshaccess.hpp>
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
namespace ngsbem
|
|
14
|
+
{
|
|
15
|
+
|
|
16
|
+
extern void AddCurrentDensity (SingularMLMultiPole<Vec<3,Complex>> & mp, shared_ptr<CoefficientFunction> current, ngcomp::Region reg);
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
#endif
|
netgen/include/prolongation.hpp
CHANGED
|
@@ -233,12 +233,14 @@ namespace ngmg
|
|
|
233
233
|
class NGS_DLL_HEADER HarmonicProlongation : public Prolongation
|
|
234
234
|
{
|
|
235
235
|
shared_ptr<Prolongation> baseprol;
|
|
236
|
-
|
|
236
|
+
weak_ptr<BilinearForm> wbfa;
|
|
237
237
|
Array<shared_ptr<BaseMatrix>> innerinverses;
|
|
238
|
-
Array<size_t>
|
|
238
|
+
Array<size_t> facets_on_level;
|
|
239
|
+
Array<shared_ptr<BitArray>> freedofs;
|
|
240
|
+
string inverse;
|
|
239
241
|
public:
|
|
240
242
|
HarmonicProlongation (shared_ptr<Prolongation> abaseprol,
|
|
241
|
-
shared_ptr<BilinearForm> abfa);
|
|
243
|
+
shared_ptr<BilinearForm> abfa, string ainverse);
|
|
242
244
|
|
|
243
245
|
virtual void Update (const FESpace & fes) override;
|
|
244
246
|
|
|
@@ -248,6 +250,127 @@ namespace ngmg
|
|
|
248
250
|
virtual void ProlongateInline (int finelevel, BaseVector & v) const override;
|
|
249
251
|
virtual void RestrictInline (int finelevel, BaseVector & v) const override;
|
|
250
252
|
};
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
template <int DIM>
|
|
259
|
+
class FacetProlongation : public Prolongation
|
|
260
|
+
{
|
|
261
|
+
protected:
|
|
262
|
+
shared_ptr<MeshAccess> ma;
|
|
263
|
+
|
|
264
|
+
int dofs_per_facet = -1;
|
|
265
|
+
Array<Array<int>> first_dofs;
|
|
266
|
+
Array<int> prol_class; // which prol to use ?
|
|
267
|
+
Array<size_t> facets_on_level;
|
|
268
|
+
|
|
269
|
+
static constexpr int NUMPROL = (DIM==2) ? 2 : 32;
|
|
270
|
+
array<Matrix<double>,NUMPROL> facetprol;
|
|
271
|
+
|
|
272
|
+
bool haveprols = false;
|
|
273
|
+
|
|
274
|
+
public:
|
|
275
|
+
FacetProlongation (shared_ptr<MeshAccess> ama)
|
|
276
|
+
: ma(ama) { }
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
virtual shared_ptr<SparseMatrix< double >> CreateProlongationMatrix( int finelevel ) const override
|
|
280
|
+
{
|
|
281
|
+
return nullptr; // or NULL ?
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
virtual void ProlongateInline (int finelevel, BaseVector & v) const override
|
|
286
|
+
{
|
|
287
|
+
auto fv = v.FV<double>();
|
|
288
|
+
Matrix<double> tmp(facets_on_level[finelevel], dofs_per_facet);
|
|
289
|
+
tmp = 0.0;
|
|
290
|
+
|
|
291
|
+
for (size_t i = 0; i < first_dofs[finelevel-1].Size()-1; i++)
|
|
292
|
+
{
|
|
293
|
+
IntRange r(first_dofs[finelevel-1][i], first_dofs[finelevel-1][i+1]);
|
|
294
|
+
if (r.Size() > 0)
|
|
295
|
+
tmp.Row(i) = fv.Range(r);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
if constexpr (DIM==2)
|
|
299
|
+
{
|
|
300
|
+
for (int i = facets_on_level[finelevel-1]; i < facets_on_level[finelevel]; i++)
|
|
301
|
+
if (auto parents = get<1>(ma->GetParentEdges(i)); parents[1] == -1)
|
|
302
|
+
{
|
|
303
|
+
int pe = parents[0];
|
|
304
|
+
tmp.Row(i) = facetprol[prol_class[i]] * tmp.Row(pe);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
else
|
|
308
|
+
{
|
|
309
|
+
for (int i = facets_on_level[finelevel-1]; i < facets_on_level[finelevel]; i++)
|
|
310
|
+
if (auto parents = get<1>(ma->GetParentFaces(i)); parents[1] == -1)
|
|
311
|
+
{
|
|
312
|
+
int pe = parents[0];
|
|
313
|
+
tmp.Row(i) = facetprol[prol_class[i]] * tmp.Row(pe);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
for (size_t i = 0; i < first_dofs[finelevel].Size()-1; i++)
|
|
318
|
+
{
|
|
319
|
+
IntRange r(first_dofs[finelevel][i], first_dofs[finelevel][i+1]);
|
|
320
|
+
if (r.Size() > 0)
|
|
321
|
+
fv.Range(r) = tmp.Row(i);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
virtual void RestrictInline (int finelevel, BaseVector & v) const override
|
|
326
|
+
{
|
|
327
|
+
auto fv = v.FV<double>();
|
|
328
|
+
Matrix<double> tmp(facets_on_level[finelevel], dofs_per_facet);
|
|
329
|
+
tmp = 0.0;
|
|
330
|
+
|
|
331
|
+
for (size_t i = 0; i < first_dofs[finelevel].Size()-1; i++)
|
|
332
|
+
{
|
|
333
|
+
IntRange r(first_dofs[finelevel][i], first_dofs[finelevel][i+1]);
|
|
334
|
+
if (r.Size() > 0)
|
|
335
|
+
tmp.Row(i) = fv.Range(r);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
if constexpr (DIM==2)
|
|
340
|
+
{
|
|
341
|
+
for (int i = facets_on_level[finelevel-1]; i < facets_on_level[finelevel]; i++)
|
|
342
|
+
if (auto parents = get<1>(ma->GetParentEdges(i)); parents[1] == -1)
|
|
343
|
+
{
|
|
344
|
+
int pe = parents[0];
|
|
345
|
+
tmp.Row(pe) += Trans(facetprol[prol_class[i]]) * tmp.Row(i);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
else
|
|
349
|
+
{
|
|
350
|
+
// for (int i = facets_on_level[finelevel-1]; i < facets_on_level[finelevel]; i++)
|
|
351
|
+
for (int i = facets_on_level[finelevel]-1; i >= facets_on_level[finelevel-1]; i--)
|
|
352
|
+
if (auto parents = get<1>(ma->GetParentFaces(i)); parents[1] == -1)
|
|
353
|
+
{
|
|
354
|
+
int pe = parents[0];
|
|
355
|
+
tmp.Row(pe) += Trans(facetprol[prol_class[i]]) * tmp.Row(i);
|
|
356
|
+
tmp.Row(i) = 0.0; // optional, for testing
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
fv = 0.0;
|
|
361
|
+
for (size_t i = 0; i < first_dofs[finelevel-1].Size()-1; i++)
|
|
362
|
+
{
|
|
363
|
+
IntRange r(first_dofs[finelevel-1][i], first_dofs[finelevel-1][i+1]);
|
|
364
|
+
if (r.Size() > 0)
|
|
365
|
+
fv.Range(r) = tmp.Row(i);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
};
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
251
374
|
}
|
|
252
375
|
|
|
253
376
|
|
|
@@ -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/lib/libngsolve.lib
CHANGED
|
Binary file
|
netgen/libngsolve.dll
CHANGED
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
set(PACKAGE_VERSION "6.2.
|
|
1
|
+
set(PACKAGE_VERSION "6.2.2503")
|
|
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 "C:/Python312/Include")
|
|
24
24
|
set(NGSOLVE_PYTHON_LIBRARIES "C:/Python312/libs/python312.lib")
|
|
25
25
|
set(NGSOLVE_PYTHON_PACKAGES_INSTALL_DIR "")
|
|
26
|
-
set(NGSOLVE_TCL_INCLUDE_PATH "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/
|
|
26
|
+
set(NGSOLVE_TCL_INCLUDE_PATH "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.12/cmake-build/dependencies/src/project_tcl/generic")
|
|
27
27
|
set(NGSOLVE_TCL_LIBRARY "C:/Python312/tcl/tclstub86.lib")
|
|
28
28
|
set(NGSOLVE_TK_DND_LIBRARY "")
|
|
29
|
-
set(NGSOLVE_TK_INCLUDE_PATH "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/
|
|
29
|
+
set(NGSOLVE_TK_INCLUDE_PATH "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.12/cmake-build/dependencies/src/project_tk/generic")
|
|
30
30
|
set(NGSOLVE_TK_LIBRARY "C:/Python312/tcl/tkstub86.lib")
|
|
31
31
|
set(NGSOLVE_X11_X11_LIB "")
|
|
32
32
|
set(NGSOLVE_X11_Xmu_LIB "")
|
|
33
|
-
set(NGSOLVE_ZLIB_INCLUDE_DIRS "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/
|
|
34
|
-
set(NGSOLVE_ZLIB_LIBRARIES "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/
|
|
33
|
+
set(NGSOLVE_ZLIB_INCLUDE_DIRS "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.12/cmake-build/dependencies/zlib/include")
|
|
34
|
+
set(NGSOLVE_ZLIB_LIBRARIES "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.12/cmake-build/dependencies/zlib/lib/zlibstatic.lib")
|
|
35
35
|
|
|
36
36
|
set(NGSOLVE_INTEL_MIC OFF)
|
|
37
37
|
set(NGSOLVE_USE_CCACHE ON)
|
|
@@ -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}")
|
|
@@ -107,6 +107,13 @@ set_target_properties(ngfem PROPERTIES
|
|
|
107
107
|
INTERFACE_LINK_LIBRARIES "ngbla;ngstd;\$<LINK_ONLY:>"
|
|
108
108
|
)
|
|
109
109
|
|
|
110
|
+
# Create imported target ngsbem
|
|
111
|
+
add_library(ngsbem INTERFACE IMPORTED)
|
|
112
|
+
|
|
113
|
+
set_target_properties(ngsbem PROPERTIES
|
|
114
|
+
INTERFACE_LINK_LIBRARIES "ngcomp;ngfem;ngla;ngbla;ngstd;\$<LINK_ONLY:>"
|
|
115
|
+
)
|
|
116
|
+
|
|
110
117
|
# Create imported target ngcomp
|
|
111
118
|
add_library(ngcomp INTERFACE IMPORTED)
|
|
112
119
|
|
|
@@ -118,7 +125,7 @@ set_target_properties(ngcomp PROPERTIES
|
|
|
118
125
|
add_library(ngsolve SHARED IMPORTED)
|
|
119
126
|
|
|
120
127
|
set_target_properties(ngsolve PROPERTIES
|
|
121
|
-
INTERFACE_LINK_LIBRARIES "netgen_libs;ngsolve;ngcomp;ngfem;ngbla;ngla;ngstd"
|
|
128
|
+
INTERFACE_LINK_LIBRARIES "netgen_libs;ngsolve;ngcomp;ngfem;ngsbem;ngbla;ngla;ngstd"
|
|
122
129
|
)
|
|
123
130
|
|
|
124
131
|
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.2503"
|
|
33
|
+
NGSOLVE_VERSION_GIT = "v6.2.2503-0-ga44fe5348"
|
|
34
|
+
NGSOLVE_VERSION_PYTHON = "6.2.2503"
|
|
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 = "2503"
|
|
40
|
+
NGSOLVE_VERSION_HASH = "ga44fe5348"
|
|
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/ngslib.pyd
CHANGED
|
Binary file
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ngsolve
|
|
3
|
-
Version: 6.2.
|
|
3
|
+
Version: 6.2.2503
|
|
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.
|
|
8
|
+
Requires-Dist: netgen-mesher==6.2.2503
|
|
9
9
|
Requires-Dist: mkl
|
|
10
10
|
Dynamic: author
|
|
11
11
|
Dynamic: license
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
netgen/libngsolve.dll,sha256=
|
|
1
|
+
netgen/libngsolve.dll,sha256=nHhVa0F_1vwssbMkBOOOGGDF7FcI7dUNL3bEswgwS3g,35515904
|
|
2
2
|
netgen/ngscxx.bat,sha256=OHagH0Xm9cOpt3urQF1XRhzsoBOIdfl3KE3wB1hG0i4,670
|
|
3
3
|
netgen/ngsld.bat,sha256=YD1I1rK70K_YvLev7aYQMD9mCcwF55k1B_8pRWPpob0,428
|
|
4
4
|
netgen/include/arnoldi.hpp,sha256=m39slyQUujB_9j3NDfTpEWyldC6Fw8natUpPuBkevLM,1492
|
|
@@ -50,7 +50,7 @@ netgen/include/facetsurffespace.hpp,sha256=qO4tLszTL3YHmWCsWZn9QKTW45GiIJ4UFnf5y
|
|
|
50
50
|
netgen/include/fe_interfaces.hpp,sha256=gGLCSJtPBuOCQZuo2t0VGvXrRwNt0OOPLRag--qXfS8,854
|
|
51
51
|
netgen/include/fem.hpp,sha256=DPZpvRbOezchnVcUGlOE5R6xKFvmAqUeRza4GC285rw,2181
|
|
52
52
|
netgen/include/fesconvert.hpp,sha256=hbGst9rksfUJX3BguHcgiF62myv3D3a2zkbjv2Ccl4g,574
|
|
53
|
-
netgen/include/fespace.hpp,sha256=
|
|
53
|
+
netgen/include/fespace.hpp,sha256=fFarmWIll99eUN5y3Dedz3fOtDJGymkQ5cSDxfGXqUI,48503
|
|
54
54
|
netgen/include/finiteelement.hpp,sha256=ULds8D80WXlpVqgCppjHKrXhFuo-WewzIr3IalsIv8g,9431
|
|
55
55
|
netgen/include/globalinterfacespace.hpp,sha256=atR009fWSlJpYjRI3OgMcvInOajz1W5egPLdfPAPFu8,2796
|
|
56
56
|
netgen/include/globalspace.hpp,sha256=ZYni-ie6O2DD0N3u-fdmVfwygpV5lwJ3SOAnSSgWMNo,4079
|
|
@@ -94,6 +94,7 @@ netgen/include/integrator.hpp,sha256=feIiNHlv5DIxyf5TfDQhEnGVc0o3sx4qYC0YC04YiB0
|
|
|
94
94
|
netgen/include/integratorcf.hpp,sha256=YFUZSINM8_aUfXc73ewJEBVesuR6wD-mnt9rHoiB5Wg,8119
|
|
95
95
|
netgen/include/interpolate.hpp,sha256=mM3hYHpyjUtVlrinl59DaCUGA04F82-ZAJUCYMuh76M,1689
|
|
96
96
|
netgen/include/intrule.hpp,sha256=XxsIC1L5b4DMfXu9xe7Kr9gKgFki9g0p39nByE-k2eY,83361
|
|
97
|
+
netgen/include/intrules_SauterSchwab.hpp,sha256=2f9Lb77H6sgaVq7576L78zNGbv4MYgHpddIzfc36TKA,675
|
|
97
98
|
netgen/include/irspace.hpp,sha256=UFWeaFVUDwsHCJZqtZBBDnhWC4Oyy34z9Pr6KzofHPg,1557
|
|
98
99
|
netgen/include/jacobi.hpp,sha256=Y4lJtfjoeHjtuYqlNwMH_WDumFmARIw4a-V8eU_Ij9o,4222
|
|
99
100
|
netgen/include/l2hofe.hpp,sha256=03O8VX8PyBM6v8IrrVooN85H_X-NM4j2neDPivn-xGI,6843
|
|
@@ -106,7 +107,7 @@ netgen/include/matrix.hpp,sha256=0UT4qQMFBMf3eq8FS7XTkMbQaVSgz--EiNdVMzGq-Sc,579
|
|
|
106
107
|
netgen/include/memusage.hpp,sha256=m_-fuupqepSve37WkRkoFHHyTtE9PdGnOVPIdQHlDiw,1209
|
|
107
108
|
netgen/include/meshaccess.hpp,sha256=Yk5VSmQx4cp5WEHnfsZXUOijVlooEoozTAaUu75zla8,48419
|
|
108
109
|
netgen/include/mgpre.hpp,sha256=5Zqt3pzrvm3EOfr84iU6rQx23LTkntUTd_s4_i6wEzI,5029
|
|
109
|
-
netgen/include/mptools.hpp,sha256=
|
|
110
|
+
netgen/include/mptools.hpp,sha256=VLWS03RnSZhTFkH2j5nSupTcXMXfbDHzxKxdOLrm9oI,40220
|
|
110
111
|
netgen/include/multigrid.hpp,sha256=7YgJfeGTBnb-aFWHrbcVk3dos6XYU0iVCgiY8UvRopY,898
|
|
111
112
|
netgen/include/multivector.hpp,sha256=5rkNSqyPhIXAb1lGKLcy908D9Uw9oqY4wpUXZEXbEPE,13082
|
|
112
113
|
netgen/include/mumpsinverse.hpp,sha256=8YiUlQZMFVsJ0kuwaSphGZvxyEZJAZZApH8XahiTeEo,4249
|
|
@@ -135,9 +136,10 @@ netgen/include/plateaufespace.hpp,sha256=EKUQyPESNdB1vhz3U7B-QVQmfkNACNk2r5KvN-x
|
|
|
135
136
|
netgen/include/pml.hpp,sha256=iftuUVHXkFSqa-dIU8hImQewscv0qdek_fN3gR9xbSY,7559
|
|
136
137
|
netgen/include/pmltrafo.hpp,sha256=j6Sk5tHbzKPT1hj_jI6n6-cRUgV5b3_o3kRNev95wDE,20237
|
|
137
138
|
netgen/include/postproc.hpp,sha256=TiEqDkANZJtxl-aOYMac-FKhtSkokXS3AuxAScqUDBQ,5334
|
|
139
|
+
netgen/include/potentialtools.hpp,sha256=DhBMmkL4xcm3UYOqt1cWoonjVf5m2ceCxp6s6qTWp24,355
|
|
138
140
|
netgen/include/precomp.hpp,sha256=mx_zGsnBxqRVArwgkDpvUcX8EzP8v_8QwVdOp5m1nWQ,1337
|
|
139
141
|
netgen/include/preconditioner.hpp,sha256=3UCrQqZ49YUHneg24-JoYVO40B4Di1DR-A3TQLZme2A,14630
|
|
140
|
-
netgen/include/prolongation.hpp,sha256=
|
|
142
|
+
netgen/include/prolongation.hpp,sha256=WjfpHPXxSBa1lOPbrTXEKo44wxe6OeGVMPK-XR0E-7c,11304
|
|
141
143
|
netgen/include/python_comp.hpp,sha256=FgujlcVk9FKWwMBEo9CfJ-q_Kb4TNcCziotVTFIuXvY,3571
|
|
142
144
|
netgen/include/python_fem.hpp,sha256=pdSB1RLhv2Vi52TaRoGpjQ21EHOA3RFAF0jeiWDp6EQ,3161
|
|
143
145
|
netgen/include/python_linalg.hpp,sha256=HdWTpdddyVmv3ZO73sG0BoHleKiREg9emIcyjFl3au8,1761
|
|
@@ -155,7 +157,7 @@ netgen/include/solve.hpp,sha256=lzCGHU1QOj9VXG43Q8MzvDi48-BfVH_fG8R0ttU8Xfg,2123
|
|
|
155
157
|
netgen/include/sparsecholesky.hpp,sha256=hOzFoXMEelAdJROF1q4zkYv0yfZgSDhjwaYvRRmiMcE,9201
|
|
156
158
|
netgen/include/sparsematrix.hpp,sha256=vyk1ViL0oXSiPZX4FfrFgy8whefffUrTmSlTS60SbrU,33744
|
|
157
159
|
netgen/include/sparsematrix_dyn.hpp,sha256=RSxxEAg6Y82DDt7S46Hw_KCxvQBPvEoBvH8j-H5plz4,2792
|
|
158
|
-
netgen/include/sparsematrix_impl.hpp,sha256=
|
|
160
|
+
netgen/include/sparsematrix_impl.hpp,sha256=Y7uMOMhksi3-7xGmievBI1V8QFlvgzQiGhAcapCzM9I,30261
|
|
159
161
|
netgen/include/special_matrix.hpp,sha256=2BdxqD7aNfKGsyXjW5rmJAhRfSPro36VaSH4__RYMJE,16904
|
|
160
162
|
netgen/include/specialelement.hpp,sha256=ovP0KuLWkBRnoc72hfzGgrrigzNQBdJexVAgSUj63vg,3351
|
|
161
163
|
netgen/include/statushandler.hpp,sha256=IJPw19bARTth8D8wc6kHTBkxE4o3QTWB-cGDGz1Q2oE,679
|
|
@@ -164,7 +166,7 @@ netgen/include/superluinverse.hpp,sha256=A5YmUv_5R0qAzcD4zIxpUPAB6HqLcXuFU6J91Yg
|
|
|
164
166
|
netgen/include/symbolicintegrator.hpp,sha256=tk8SwRT2swPiafO1JevZskjFVwvAxbGd0HTGPJjx5oo,36868
|
|
165
167
|
netgen/include/symmetricmatrix.hpp,sha256=M79mq0z70ohLFoi8cxPAxxlqD3RjFZAkbCrHwQrhvY8,2954
|
|
166
168
|
netgen/include/tangentialfacetfe.hpp,sha256=iEP_cU3nBtVUnH67dvzeMqIS-JM6SeILhB738YX9Spg,7491
|
|
167
|
-
netgen/include/tangentialfacetfespace.hpp,sha256=
|
|
169
|
+
netgen/include/tangentialfacetfespace.hpp,sha256=Ot0m9OA3ps0xh7AWiLUK-yeZ40ogeFx7zY6dGWQuTPc,2808
|
|
168
170
|
netgen/include/tensor.hpp,sha256=nzrF84BknvEixYfMyN-RdaWVlBIXJkYw82kpjmfyqCE,12535
|
|
169
171
|
netgen/include/tensorcoefficient.hpp,sha256=eA-SVbv_N89PnBLAEf-O--8SwicgiCwRPbx_NHQp-fw,17522
|
|
170
172
|
netgen/include/tensorproductintegrator.hpp,sha256=Sfo_YsCL_TZnbqR2gBWcFLDr7DOlmSHAUJu-mCeYrI0,4643
|
|
@@ -184,7 +186,7 @@ netgen/include/voxelcoefficientfunction.hpp,sha256=zPlatX_nf2ODK2X979wvpm1HXHEzn
|
|
|
184
186
|
netgen/include/vtkoutput.hpp,sha256=GwPaFtOVY27_1hKwSqpNHV4ppOk3CVsLdMpocm27odQ,6628
|
|
185
187
|
netgen/include/vvector.hpp,sha256=vpnwWlNWsEJB26ve8cKADbUMGVBTTVCFvrBC4r_LDDQ,4785
|
|
186
188
|
netgen/include/webgui.hpp,sha256=xm1S5KHockrzf_R4zHzQ9fzwfQ4H5aZaZm9ItCaR41s,2199
|
|
187
|
-
netgen/lib/libngsolve.lib,sha256=
|
|
189
|
+
netgen/lib/libngsolve.lib,sha256=vQVORqp4qqv_bQg4LA9fpl_n9Gm-YoTmvkItkX5SGq8,13487320
|
|
188
190
|
ngsolve/TensorProductTools.py,sha256=jD4LtJdEiLt2dDsU6STMXb10yrau_i20gatwGlqbiFQ,8562
|
|
189
191
|
ngsolve/__console.py,sha256=QLnfw1ONU9eVPQZ_LjzY-7b_gfZpRRRdI7imHR1lJR8,2983
|
|
190
192
|
ngsolve/__expr.py,sha256=ZAtv94PVtAdvWWKFIvQGJC55aIEY6ajo-l5Hp-1V-6s,4396
|
|
@@ -199,7 +201,7 @@ ngsolve/meshes.py,sha256=nz95LP1EEIVAEJ0jyQGqq0E-62uuy2tvIRgqIrEqDHQ,27534
|
|
|
199
201
|
ngsolve/ngs2petsc.py,sha256=PLAkvu4H-ZEXd0-bM2v0OJX7gga-OJ9d-NB7g322-wQ,12809
|
|
200
202
|
ngsolve/ngscxx.py,sha256=r9TV49w0MKIxE6fgJYO4FNv-5wcM9eAFYIG9GspUy_A,1335
|
|
201
203
|
ngsolve/ngslib.lib,sha256=_HzV4t-JUpCMSs1rNu4Jjtmr69v0FQUaOatAn17WF4A,1716
|
|
202
|
-
ngsolve/ngslib.pyd,sha256=
|
|
204
|
+
ngsolve/ngslib.pyd,sha256=H5mgUh4ts6YxG-81v6H5Tm3FXNFjmIdMkkQ9lhSYqJw,123904
|
|
203
205
|
ngsolve/nonlinearsolvers.py,sha256=nKd-SVJseTWztHZPEPKsbv0mLwQjFILZtOh7Ggft0xs,8419
|
|
204
206
|
ngsolve/preconditioners.py,sha256=2To9cGdhZscFRKrIb6NfjKLBXoIfkemnhryaXrdgNC8,218
|
|
205
207
|
ngsolve/solvers.py,sha256=Vbm5RfIJ83nMtQ1pYJL0uBBuys4-mcY6b63MNkyiqxU,311
|
|
@@ -207,12 +209,12 @@ ngsolve/timestepping.py,sha256=SuKsFS7cDXRixKWdMMIWW4flet12HLeqWTBC0DFhPwg,8535
|
|
|
207
209
|
ngsolve/timing.py,sha256=j_Plbbh51pS9QwMq93hyvFDSrbywmdKZ6Z6OOZmZoe4,4093
|
|
208
210
|
ngsolve/utils.py,sha256=jg6smLuKF6G9Rvg-EXjyYwjFJGyyiqSRknevdjp-9J4,4724
|
|
209
211
|
ngsolve/webgui.py,sha256=MG9bzYvfZYodiC5-DR-9auveCzKX3d13AGOgKANne-A,24902
|
|
210
|
-
ngsolve/cmake/NGSolveConfig.cmake,sha256
|
|
212
|
+
ngsolve/cmake/NGSolveConfig.cmake,sha256=-ZM-4-pyXYj978cuQX40a8K-4Agi6MddbJvQaSenpKA,5141
|
|
211
213
|
ngsolve/cmake/ngsolve-targets-release.cmake,sha256=knQjCmz6J-x_Egg5DosY5hU_CZdZlSQxQ4Za7pS07fA,907
|
|
212
|
-
ngsolve/cmake/ngsolve-targets.cmake,sha256=
|
|
214
|
+
ngsolve/cmake/ngsolve-targets.cmake,sha256=KzivMGcMGzQeOgCq926f23QY4BEXVi4SLxukHTYG7Bc,6179
|
|
213
215
|
ngsolve/config/__init__.py,sha256=IjGKWBHvRx572Z6m-5z0q82xuQaWlBABy1whwy2Uxak,23
|
|
214
216
|
ngsolve/config/__main__.py,sha256=anI_XpgrpEnVnMyrFiH3Yon_tpQZkehnqRTNC02NiBI,93
|
|
215
|
-
ngsolve/config/config.py,sha256=
|
|
217
|
+
ngsolve/config/config.py,sha256=uuSjP_frBt94O2Nx5GPDKRI5w5lX0NRs0dSXvFJ8wqE,2521
|
|
216
218
|
ngsolve/demos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
217
219
|
ngsolve/demos/TensorProduct/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
218
220
|
ngsolve/demos/TensorProduct/tp_dg_1d_1d.py,sha256=3Q9ntmVJGIKQ-JLdGWgECR_kDjTG8FPVCSiTJkxyi40,2188
|
|
@@ -244,37 +246,37 @@ ngsolve/demos/mpi/mpi_cmagnet.py,sha256=59TuQvIIGoDStyJneH47NG131nppBoQpZQ9rfvG_
|
|
|
244
246
|
ngsolve/demos/mpi/mpi_navierstokes.py,sha256=ieAWMDd9LoH99L14iBgF_YmX_xk7gltZ9MruTFN6xAY,3028
|
|
245
247
|
ngsolve/demos/mpi/mpi_poisson.py,sha256=_-H0HFqlwlpasiVD9OQjUvJbWJcQ34-4y-va1WOSOzE,2557
|
|
246
248
|
ngsolve/demos/mpi/mpi_timeDG.py,sha256=FUOh_1dzOGUU-uAsD4iyz0RVT382jMiMiuYkZjarhAE,1963
|
|
247
|
-
ngsolve-6.2.
|
|
248
|
-
ngsolve-6.2.
|
|
249
|
-
ngsolve-6.2.
|
|
250
|
-
ngsolve-6.2.
|
|
251
|
-
ngsolve-6.2.
|
|
252
|
-
ngsolve-6.2.
|
|
253
|
-
ngsolve-6.2.
|
|
254
|
-
ngsolve-6.2.
|
|
255
|
-
ngsolve-6.2.
|
|
256
|
-
ngsolve-6.2.
|
|
257
|
-
ngsolve-6.2.
|
|
258
|
-
ngsolve-6.2.
|
|
259
|
-
ngsolve-6.2.
|
|
260
|
-
ngsolve-6.2.
|
|
261
|
-
ngsolve-6.2.
|
|
262
|
-
ngsolve-6.2.
|
|
263
|
-
ngsolve-6.2.
|
|
264
|
-
ngsolve-6.2.
|
|
265
|
-
ngsolve-6.2.
|
|
266
|
-
ngsolve-6.2.
|
|
267
|
-
ngsolve-6.2.
|
|
268
|
-
ngsolve-6.2.
|
|
269
|
-
ngsolve-6.2.
|
|
270
|
-
ngsolve-6.2.
|
|
271
|
-
ngsolve-6.2.
|
|
272
|
-
ngsolve-6.2.
|
|
273
|
-
ngsolve-6.2.
|
|
274
|
-
ngsolve-6.2.
|
|
275
|
-
ngsolve-6.2.
|
|
276
|
-
ngsolve-6.2.
|
|
277
|
-
ngsolve-6.2.
|
|
278
|
-
ngsolve-6.2.
|
|
279
|
-
ngsolve-6.2.
|
|
280
|
-
ngsolve-6.2.
|
|
249
|
+
ngsolve-6.2.2503.data/data/Scripts/ngsolve.tcl,sha256=8KBOXZKYU_qx8785PIjdmVjcUbCxR5aYrod0BZ4UgGc,21637
|
|
250
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/beam.geo,sha256=HTv0A6IUoVuavifolhGKY6U44z0hni07Htonqe6rw_A,404
|
|
251
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/beam.vol,sha256=QZbM9JE4rBs5nVXaw7ZAbDf60yXbX19bm1OnOScF57M,13834
|
|
252
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/chip.in2d,sha256=561AjEIPnlzMZHIzep5lRjocQDm8w7o7IDna5u8s9JQ,592
|
|
253
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/chip.vol,sha256=gkEmBWlQh8BkSFNTf-XISfmuGzHXDKANV4Uoww_BwJI,28511
|
|
254
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/coil.geo,sha256=ylB2OiWEZztFXPx99qTNRJKmZFIDPEezEgQt4EPtZRA,376
|
|
255
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/coil.vol,sha256=t8cWP_YX38FMw0S-7vEVUOcSH0VK6DlaqVWG_zmBo-4,147284
|
|
256
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/coilshield.geo,sha256=Sq8w7i22WQ0viaiM3bU_63lZGFWp8JgyDqs3RdjeTe0,629
|
|
257
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/coilshield.vol,sha256=JiZOM9A529-hikvv1kyLwffTRpeatLtaVTNcu42o1fo,165576
|
|
258
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/cube.geo,sha256=Wd9AnPdoQgjQ-JK6zmoXjsNxPR9B8ED4pdHVwmRoe1M,405
|
|
259
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/cube.vol,sha256=RS8bay_KlF6IZM0QDDr7_dGaFLqoxszQU_w8TYutMKY,92127
|
|
260
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/d10_DGdoubleglazing.pde,sha256=lK3sXmK74eFEMk8F6hwFHe_tBYnOdRq3F-RbzKpDK0c,1354
|
|
261
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/d11_chip_nitsche.pde,sha256=VuEQtkZaIJA9yuvjG_jcx1UB9UtAaZSoeJYFHcHeYxk,1141
|
|
262
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/d1_square.pde,sha256=24ZZ0nlbr5LKl_mPyeZZMSkiCBiBk1fzNElo3yITX2A,1072
|
|
263
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/d2_chip.pde,sha256=yGIbzuTdCEjdoC9Ig_hbcy5qz69_wxgPZeYmhY1rN7k,985
|
|
264
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/d3_helmholtz.pde,sha256=gWqQTh1M9NiKGohlu5JxDJuvRz-T28WlNSVbwmMvM-0,590
|
|
265
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/d4_cube.pde,sha256=6kL43ehAh1PdwnFlLjadg325bFjpz02p2PpAOxlDFuc,1079
|
|
266
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/d5_beam.pde,sha256=VQt9WbqAVWObFH9Jy1YieE9WHnVZ_hnsKVTz6ysEBxI,2059
|
|
267
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/d6_shaft.pde,sha256=y10nLFA2-GwEwnAs5R-8wppRq-09vYJ_C9LJ3DSvlS0,1974
|
|
268
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/d7_coil.pde,sha256=KFkqtZiPD4LQsGnghwwdq1qmpWf0T5xQR4HwbRL9ZZA,1250
|
|
269
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/d8_coilshield.pde,sha256=9XG0TcgZ7mComh_pVntnuzDldEx5PD-C7gqK05PTWus,1190
|
|
270
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/d9_hybridDG.pde,sha256=vYschVRu5vC91YpyVZFCBFuno-ZlOcRznPD-OvJTLtQ,1551
|
|
271
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/doubleglazing.in2d,sha256=lDCukUh9iTpkiH-qJAVdeAlMpiYF0AibAA6g3jOeWDY,533
|
|
272
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/doubleglazing.vol,sha256=IUOhUrZi8WMnvrIJe--A8cYPN6mscslA8_4yxvKShb0,35724
|
|
273
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/piezo2d40round4.vol.gz,sha256=RuxM0vtYljoAImOH6U6avt0LmWaUbGNao37n8p_Yd1w,496477
|
|
274
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/shaft.geo,sha256=Y3OVQlWjgICe2Dwz6-Qs8r0tLanjwtWP0xFx5AwNRJk,2507
|
|
275
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/shaft.vol,sha256=IqViJ4hJKk3Uf66PkVJ-kHpBQ_ZpkigRuh5g1Po4euY,274741
|
|
276
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/square.in2d,sha256=5dewiEjTsRFiNkBlmaTjBAZejq55TTlusp8ALfTMc2M,209
|
|
277
|
+
ngsolve-6.2.2503.data/data/share/ngsolve/square.vol,sha256=tWdPeQ52deUNgWOsWKhqgNVsJKhkJmEAVp5-xjhzEwg,9311
|
|
278
|
+
ngsolve-6.2.2503.dist-info/licenses/LICENSE,sha256=iFoD9UsVeWEjb0aEPnmXKr_NaJC2y7NovH7KMo_5WhI,26934
|
|
279
|
+
ngsolve-6.2.2503.dist-info/METADATA,sha256=YwcCw4sV3sbrG7JEJiMIwNG4mO5KXbeeimOpBNeEtDo,302
|
|
280
|
+
ngsolve-6.2.2503.dist-info/WHEEL,sha256=3cUY9TiuvxHsB0dWaW6wa9MO8pP_yfFeO2_t7ly9aNg,96
|
|
281
|
+
ngsolve-6.2.2503.dist-info/top_level.txt,sha256=1llU44DxNIP85uPT4RChsIuV3h2d0_5j0Ui_Df5vV8E,15
|
|
282
|
+
ngsolve-6.2.2503.dist-info/RECORD,,
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|