ngsolve 6.2.2506.post74.dev0__cp314-cp314-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/analytic_integrals.hpp +10 -0
- netgen/include/arnoldi.hpp +55 -0
- netgen/include/bandmatrix.hpp +334 -0
- netgen/include/basematrix.hpp +957 -0
- netgen/include/basevector.hpp +1268 -0
- netgen/include/bdbequations.hpp +2805 -0
- netgen/include/bdbintegrator.hpp +1660 -0
- netgen/include/bem_diffops.hpp +475 -0
- netgen/include/bessel.hpp +1064 -0
- netgen/include/bilinearform.hpp +963 -0
- netgen/include/bla.hpp +29 -0
- netgen/include/blockalloc.hpp +95 -0
- netgen/include/blockjacobi.hpp +328 -0
- netgen/include/bspline.hpp +116 -0
- netgen/include/calcinverse.hpp +141 -0
- netgen/include/cg.hpp +368 -0
- netgen/include/chebyshev.hpp +44 -0
- netgen/include/cholesky.hpp +720 -0
- netgen/include/clapack.h +7254 -0
- netgen/include/code_generation.hpp +296 -0
- netgen/include/coefficient.hpp +2033 -0
- netgen/include/coefficient_impl.hpp +19 -0
- netgen/include/coefficient_stdmath.hpp +167 -0
- netgen/include/commutingAMG.hpp +106 -0
- netgen/include/comp.hpp +79 -0
- netgen/include/compatibility.hpp +41 -0
- netgen/include/complex_wrapper.hpp +73 -0
- netgen/include/compressedfespace.hpp +110 -0
- netgen/include/contact.hpp +235 -0
- netgen/include/diagonalmatrix.hpp +154 -0
- netgen/include/differentialoperator.hpp +276 -0
- netgen/include/diffop.hpp +1286 -0
- netgen/include/diffop_impl.hpp +328 -0
- netgen/include/diffopwithfactor.hpp +123 -0
- netgen/include/discontinuous.hpp +84 -0
- netgen/include/dump.hpp +949 -0
- netgen/include/ectypes.hpp +121 -0
- netgen/include/eigen.hpp +60 -0
- netgen/include/eigensystem.hpp +18 -0
- netgen/include/elasticity_equations.hpp +595 -0
- netgen/include/elementbyelement.hpp +195 -0
- netgen/include/elementtopology.hpp +1760 -0
- netgen/include/elementtransformation.hpp +339 -0
- netgen/include/evalfunc.hpp +405 -0
- netgen/include/expr.hpp +1686 -0
- netgen/include/facetfe.hpp +175 -0
- netgen/include/facetfespace.hpp +180 -0
- netgen/include/facethofe.hpp +111 -0
- netgen/include/facetsurffespace.hpp +112 -0
- netgen/include/fe_interfaces.hpp +32 -0
- netgen/include/fem.hpp +87 -0
- netgen/include/fesconvert.hpp +14 -0
- netgen/include/fespace.hpp +1449 -0
- netgen/include/finiteelement.hpp +286 -0
- netgen/include/globalinterfacespace.hpp +77 -0
- netgen/include/globalspace.hpp +115 -0
- netgen/include/gridfunction.hpp +525 -0
- netgen/include/h1amg.hpp +124 -0
- netgen/include/h1hofe.hpp +188 -0
- netgen/include/h1hofe_impl.hpp +1262 -0
- netgen/include/h1hofefo.hpp +148 -0
- netgen/include/h1hofefo_impl.hpp +185 -0
- netgen/include/h1hofespace.hpp +167 -0
- netgen/include/h1lofe.hpp +1240 -0
- netgen/include/h1lumping.hpp +41 -0
- netgen/include/hcurl_equations.hpp +1381 -0
- netgen/include/hcurlcurlfe.hpp +2241 -0
- netgen/include/hcurlcurlfespace.hpp +78 -0
- netgen/include/hcurlfe.hpp +259 -0
- netgen/include/hcurlfe_utils.hpp +107 -0
- netgen/include/hcurlhdiv_dshape.hpp +857 -0
- netgen/include/hcurlhdivfes.hpp +308 -0
- netgen/include/hcurlhofe.hpp +175 -0
- netgen/include/hcurlhofe_impl.hpp +1871 -0
- netgen/include/hcurlhofespace.hpp +193 -0
- netgen/include/hcurllofe.hpp +1146 -0
- netgen/include/hdiv_equations.hpp +880 -0
- netgen/include/hdivdivfe.hpp +2923 -0
- netgen/include/hdivdivsurfacespace.hpp +76 -0
- netgen/include/hdivfe.hpp +206 -0
- netgen/include/hdivfe_utils.hpp +717 -0
- netgen/include/hdivfes.hpp +75 -0
- netgen/include/hdivhofe.hpp +447 -0
- netgen/include/hdivhofe_impl.hpp +1107 -0
- netgen/include/hdivhofefo.hpp +229 -0
- netgen/include/hdivhofespace.hpp +177 -0
- netgen/include/hdivhosurfacefespace.hpp +106 -0
- netgen/include/hdivlofe.hpp +773 -0
- netgen/include/hidden.hpp +74 -0
- netgen/include/householder.hpp +181 -0
- netgen/include/hypre_ams_precond.hpp +123 -0
- netgen/include/hypre_precond.hpp +73 -0
- netgen/include/integrator.hpp +2012 -0
- netgen/include/integratorcf.hpp +253 -0
- netgen/include/interpolate.hpp +49 -0
- netgen/include/intrule.hpp +2542 -0
- netgen/include/intrules_SauterSchwab.hpp +25 -0
- netgen/include/irspace.hpp +49 -0
- netgen/include/jacobi.hpp +153 -0
- netgen/include/kernels.hpp +762 -0
- netgen/include/l2hofe.hpp +194 -0
- netgen/include/l2hofe_impl.hpp +564 -0
- netgen/include/l2hofefo.hpp +542 -0
- netgen/include/l2hofespace.hpp +344 -0
- netgen/include/la.hpp +38 -0
- netgen/include/linearform.hpp +266 -0
- netgen/include/matrix.hpp +2140 -0
- netgen/include/memusage.hpp +41 -0
- netgen/include/meshaccess.hpp +1359 -0
- netgen/include/mgpre.hpp +204 -0
- netgen/include/mp_coefficient.hpp +145 -0
- netgen/include/mptools.hpp +2281 -0
- netgen/include/multigrid.hpp +42 -0
- netgen/include/multivector.hpp +447 -0
- netgen/include/mumpsinverse.hpp +187 -0
- netgen/include/mycomplex.hpp +361 -0
- netgen/include/ng_lapack.hpp +1661 -0
- netgen/include/ngblas.hpp +1232 -0
- netgen/include/ngs_defines.hpp +30 -0
- netgen/include/ngs_stdcpp_include.hpp +106 -0
- netgen/include/ngs_utils.hpp +121 -0
- netgen/include/ngsobject.hpp +1019 -0
- netgen/include/ngsstream.hpp +113 -0
- netgen/include/ngstd.hpp +72 -0
- netgen/include/nodalhofe.hpp +96 -0
- netgen/include/nodalhofe_impl.hpp +141 -0
- netgen/include/normalfacetfe.hpp +223 -0
- netgen/include/normalfacetfespace.hpp +98 -0
- netgen/include/normalfacetsurfacefespace.hpp +84 -0
- netgen/include/order.hpp +251 -0
- netgen/include/parallel_matrices.hpp +222 -0
- netgen/include/paralleldofs.hpp +340 -0
- netgen/include/parallelngs.hpp +23 -0
- netgen/include/parallelvector.hpp +269 -0
- netgen/include/pardisoinverse.hpp +200 -0
- netgen/include/periodic.hpp +129 -0
- netgen/include/plateaufespace.hpp +25 -0
- netgen/include/pml.hpp +275 -0
- netgen/include/pmltrafo.hpp +631 -0
- netgen/include/postproc.hpp +142 -0
- netgen/include/potentialtools.hpp +22 -0
- netgen/include/precomp.hpp +60 -0
- netgen/include/preconditioner.hpp +602 -0
- netgen/include/prolongation.hpp +377 -0
- netgen/include/python_comp.hpp +107 -0
- netgen/include/python_fem.hpp +89 -0
- netgen/include/python_linalg.hpp +58 -0
- netgen/include/python_ngstd.hpp +386 -0
- netgen/include/recursive_pol.hpp +4896 -0
- netgen/include/recursive_pol_tet.hpp +395 -0
- netgen/include/recursive_pol_trig.hpp +492 -0
- netgen/include/reorderedfespace.hpp +81 -0
- netgen/include/sample_sort.hpp +105 -0
- netgen/include/scalarfe.hpp +335 -0
- netgen/include/shapefunction_utils.hpp +113 -0
- netgen/include/simd_complex.hpp +329 -0
- netgen/include/smoother.hpp +253 -0
- netgen/include/solve.hpp +89 -0
- netgen/include/sparsecholesky.hpp +313 -0
- netgen/include/sparsematrix.hpp +1038 -0
- netgen/include/sparsematrix_dyn.hpp +90 -0
- netgen/include/sparsematrix_impl.hpp +1013 -0
- netgen/include/special_matrix.hpp +463 -0
- netgen/include/specialelement.hpp +125 -0
- netgen/include/statushandler.hpp +33 -0
- netgen/include/stringops.hpp +12 -0
- netgen/include/superluinverse.hpp +136 -0
- netgen/include/symbolicintegrator.hpp +850 -0
- netgen/include/symmetricmatrix.hpp +144 -0
- netgen/include/tangentialfacetfe.hpp +224 -0
- netgen/include/tangentialfacetfespace.hpp +91 -0
- netgen/include/tensor.hpp +522 -0
- netgen/include/tensorcoefficient.hpp +446 -0
- netgen/include/tensorproductintegrator.hpp +113 -0
- netgen/include/thcurlfe.hpp +128 -0
- netgen/include/thcurlfe_impl.hpp +380 -0
- netgen/include/thdivfe.hpp +80 -0
- netgen/include/thdivfe_impl.hpp +492 -0
- netgen/include/tpdiffop.hpp +461 -0
- netgen/include/tpfes.hpp +133 -0
- netgen/include/tpintrule.hpp +224 -0
- netgen/include/triangular.hpp +465 -0
- netgen/include/tscalarfe.hpp +245 -0
- netgen/include/tscalarfe_impl.hpp +1029 -0
- netgen/include/umfpackinverse.hpp +148 -0
- netgen/include/vector.hpp +1273 -0
- netgen/include/voxelcoefficientfunction.hpp +41 -0
- netgen/include/vtkoutput.hpp +198 -0
- netgen/include/vvector.hpp +208 -0
- netgen/include/webgui.hpp +92 -0
- 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/TensorProductTools.py +210 -0
- ngsolve/__console.py +94 -0
- ngsolve/__expr.py +181 -0
- ngsolve/__init__.py +148 -0
- ngsolve/__init__.pyi +233 -0
- ngsolve/_scikit_build_core_dependencies.py +30 -0
- ngsolve/bla.pyi +1153 -0
- ngsolve/bvp.py +78 -0
- ngsolve/bvp.pyi +32 -0
- ngsolve/cmake/NGSolveConfig.cmake +102 -0
- ngsolve/cmake/ngsolve-targets-release.cmake +79 -0
- ngsolve/cmake/ngsolve-targets.cmake +163 -0
- ngsolve/comp/__init__.pyi +5449 -0
- ngsolve/comp/pml.pyi +89 -0
- ngsolve/config/__init__.py +1 -0
- ngsolve/config/__init__.pyi +43 -0
- ngsolve/config/__main__.py +4 -0
- ngsolve/config/config.py +60 -0
- ngsolve/config/config.pyi +45 -0
- ngsolve/demos/TensorProduct/__init__.py +0 -0
- ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +80 -0
- ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +73 -0
- ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +72 -0
- ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +66 -0
- ngsolve/demos/__init__.py +0 -0
- ngsolve/demos/howto/__init__.py +0 -0
- ngsolve/demos/howto/hhj.py +44 -0
- ngsolve/demos/howto/hybrid_dg.py +53 -0
- ngsolve/demos/howto/mixed.py +30 -0
- ngsolve/demos/howto/nonlin.py +29 -0
- ngsolve/demos/howto/pickling.py +26 -0
- ngsolve/demos/howto/pml.py +31 -0
- ngsolve/demos/howto/taskmanager.py +20 -0
- ngsolve/demos/howto/tdnns.py +47 -0
- ngsolve/demos/howto/timeDG-skeleton.py +45 -0
- ngsolve/demos/howto/timeDG.py +38 -0
- ngsolve/demos/howto/timeDGlap.py +42 -0
- ngsolve/demos/howto/timeDGwave.py +61 -0
- ngsolve/demos/intro/__init__.py +0 -0
- ngsolve/demos/intro/adaptive.py +123 -0
- ngsolve/demos/intro/cmagnet.py +59 -0
- ngsolve/demos/intro/elasticity.py +76 -0
- ngsolve/demos/intro/navierstokes.py +74 -0
- ngsolve/demos/intro/poisson.ipynb +170 -0
- ngsolve/demos/intro/poisson.py +41 -0
- ngsolve/demos/mpi/__init__.py +0 -0
- ngsolve/demos/mpi/mpi_cmagnet.py +87 -0
- ngsolve/demos/mpi/mpi_navierstokes.py +117 -0
- ngsolve/demos/mpi/mpi_poisson.py +89 -0
- ngsolve/demos/mpi/mpi_timeDG.py +82 -0
- ngsolve/directsolvers.py +26 -0
- ngsolve/directsolvers.pyi +15 -0
- ngsolve/eigenvalues.py +364 -0
- ngsolve/eigenvalues.pyi +30 -0
- ngsolve/fem.pyi +1647 -0
- ngsolve/internal.py +89 -0
- ngsolve/krylovspace.py +1013 -0
- ngsolve/krylovspace.pyi +298 -0
- ngsolve/la.pyi +1230 -0
- ngsolve/meshes.py +748 -0
- ngsolve/ngs2petsc.py +310 -0
- ngsolve/ngscxx.py +42 -0
- ngsolve/ngslib.so +0 -0
- ngsolve/ngstd.pyi +59 -0
- ngsolve/nonlinearsolvers.py +203 -0
- ngsolve/nonlinearsolvers.pyi +95 -0
- ngsolve/preconditioners.py +11 -0
- ngsolve/preconditioners.pyi +7 -0
- ngsolve/solve.pyi +109 -0
- ngsolve/solve_implementation.py +168 -0
- ngsolve/solve_implementation.pyi +42 -0
- ngsolve/solvers.py +7 -0
- ngsolve/solvers.pyi +14 -0
- ngsolve/timestepping.py +185 -0
- ngsolve/timestepping.pyi +28 -0
- ngsolve/timing.py +108 -0
- ngsolve/timing.pyi +54 -0
- ngsolve/utils.py +167 -0
- ngsolve/utils.pyi +273 -0
- ngsolve/webgui.py +670 -0
- ngsolve-6.2.2506.post74.dev0.data/data/Netgen.icns +0 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngscxx +17 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngsld +13 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngsolve.tcl +648 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngspy +2 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/beam.geo +17 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/beam.vol +240 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/chip.in2d +41 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/chip.vol +614 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coil.geo +12 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coil.vol +2560 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coilshield.geo +24 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coilshield.vol +3179 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/cube.geo +19 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/cube.vol +1832 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde +50 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde +40 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d1_square.pde +43 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d2_chip.pde +35 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d3_helmholtz.pde +22 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d4_cube.pde +46 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d5_beam.pde +74 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d6_shaft.pde +73 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d7_coil.pde +50 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d8_coilshield.pde +49 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d9_hybridDG.pde +72 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/doubleglazing.in2d +27 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/doubleglazing.vol +737 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/shaft.geo +73 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/shaft.vol +4291 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/square.in2d +17 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/square.vol +149 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/METADATA +13 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/RECORD +315 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/WHEEL +5 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/licenses/LICENSE +504 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/top_level.txt +2 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
#ifndef FILE_INTEGRATORCF
|
|
2
|
+
#define FILE_INTEGRATORCF
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
// WIP, need a bit more design ...
|
|
6
|
+
|
|
7
|
+
#include "coefficient.hpp"
|
|
8
|
+
#include "integrator.hpp"
|
|
9
|
+
#include "symbolicintegrator.hpp"
|
|
10
|
+
|
|
11
|
+
namespace ngfem
|
|
12
|
+
{
|
|
13
|
+
class Integral;
|
|
14
|
+
class DifferentialSymbol
|
|
15
|
+
{
|
|
16
|
+
public:
|
|
17
|
+
VorB vb;
|
|
18
|
+
VorB element_vb = VOL;
|
|
19
|
+
bool skeleton = false;
|
|
20
|
+
optional<variant<BitArray,string>> definedon;
|
|
21
|
+
int bonus_intorder = 0;
|
|
22
|
+
shared_ptr<ngcomp::GridFunction> deformation;
|
|
23
|
+
std::map<ELEMENT_TYPE,shared_ptr<IntegrationRule>> userdefined_intrules;
|
|
24
|
+
shared_ptr<BitArray> definedonelements;
|
|
25
|
+
|
|
26
|
+
DifferentialSymbol (VorB _vb) : vb(_vb) { ; }
|
|
27
|
+
DifferentialSymbol (VorB _vb, VorB _element_vb, bool _skeleton, // const BitArray & _definedon,
|
|
28
|
+
int _bonus_intorder)
|
|
29
|
+
: vb(_vb), element_vb(_element_vb), skeleton(_skeleton), /* definedon(_definedon), */ bonus_intorder(_bonus_intorder) { ; }
|
|
30
|
+
|
|
31
|
+
virtual ~DifferentialSymbol() { }
|
|
32
|
+
virtual shared_ptr<Integral> MakeIntegral(shared_ptr<CoefficientFunction> cf) const
|
|
33
|
+
{
|
|
34
|
+
return make_shared<Integral> (cf, *this);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class Integral
|
|
40
|
+
{
|
|
41
|
+
public:
|
|
42
|
+
shared_ptr<CoefficientFunction> cf;
|
|
43
|
+
DifferentialSymbol dx;
|
|
44
|
+
shared_ptr<Integral> linearization;
|
|
45
|
+
Integral (shared_ptr<CoefficientFunction> _cf,
|
|
46
|
+
DifferentialSymbol _dx)
|
|
47
|
+
: cf(_cf), dx(_dx) { ; }
|
|
48
|
+
virtual ~Integral() { }
|
|
49
|
+
|
|
50
|
+
template <typename TSCAL>
|
|
51
|
+
TSCAL T_Integrate (const ngcomp::MeshAccess & ma,
|
|
52
|
+
FlatVector<TSCAL> element_wise);
|
|
53
|
+
|
|
54
|
+
NGS_DLL_HEADER virtual double Integrate (const ngcomp::MeshAccess & ma,
|
|
55
|
+
FlatVector<double> element_wise);
|
|
56
|
+
|
|
57
|
+
NGS_DLL_HEADER virtual Complex Integrate (const ngcomp::MeshAccess & ma,
|
|
58
|
+
FlatVector<Complex> element_wise);
|
|
59
|
+
|
|
60
|
+
NGS_DLL_HEADER virtual shared_ptr<BilinearFormIntegrator> MakeBilinearFormIntegrator() const;
|
|
61
|
+
NGS_DLL_HEADER virtual shared_ptr<LinearFormIntegrator> MakeLinearFormIntegrator() const;
|
|
62
|
+
|
|
63
|
+
NGS_DLL_HEADER virtual shared_ptr<Integral> CreateSameIntegralType (shared_ptr<CoefficientFunction> _cf)
|
|
64
|
+
{
|
|
65
|
+
return make_shared<Integral> (_cf, dx);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
inline Integral operator* (double fac, const Integral & cf)
|
|
70
|
+
{
|
|
71
|
+
return Integral (fac * cf.cf, cf.dx);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
inline Integral operator* (Complex fac, const Integral & cf)
|
|
75
|
+
{
|
|
76
|
+
return Integral (fac * cf.cf, cf.dx);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
inline ostream & operator<< (ostream & ost, const Integral & igl)
|
|
81
|
+
{
|
|
82
|
+
ost << *igl.cf << " " << igl.dx.vb << endl;
|
|
83
|
+
return ost;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
class SumOfIntegrals
|
|
87
|
+
{
|
|
88
|
+
public:
|
|
89
|
+
Array<shared_ptr<Integral>> icfs;
|
|
90
|
+
Array<shared_ptr<Integral>> linearization_icfs;
|
|
91
|
+
|
|
92
|
+
SumOfIntegrals() = default;
|
|
93
|
+
SumOfIntegrals (shared_ptr<Integral> icf)
|
|
94
|
+
{ icfs += icf; }
|
|
95
|
+
|
|
96
|
+
auto begin() const { return icfs.begin(); }
|
|
97
|
+
auto end() const { return icfs.end(); }
|
|
98
|
+
|
|
99
|
+
shared_ptr<SumOfIntegrals>
|
|
100
|
+
Replace (std::map<shared_ptr<CoefficientFunction>, shared_ptr<CoefficientFunction>> replace)
|
|
101
|
+
|
|
102
|
+
{
|
|
103
|
+
auto repl = make_shared<SumOfIntegrals>();
|
|
104
|
+
CoefficientFunction::T_Transform transform;
|
|
105
|
+
transform.replace = replace;
|
|
106
|
+
for (auto & icf : icfs)
|
|
107
|
+
repl->icfs += icf->CreateSameIntegralType (icf->cf->Transform(transform));
|
|
108
|
+
return repl;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
Array<shared_ptr<ProxyFunction>> GetProxies (bool trialproxies)
|
|
112
|
+
{
|
|
113
|
+
Array<shared_ptr<ProxyFunction>> proxies;
|
|
114
|
+
|
|
115
|
+
for (auto & icf : icfs)
|
|
116
|
+
icf->cf->TraverseTree
|
|
117
|
+
( [&] (CoefficientFunction & nodecf)
|
|
118
|
+
{
|
|
119
|
+
auto proxy = dynamic_pointer_cast<ProxyFunction> ((&nodecf)->shared_from_this());
|
|
120
|
+
if (proxy)
|
|
121
|
+
{
|
|
122
|
+
if (proxy->IsTrialFunction() == trialproxies)
|
|
123
|
+
{
|
|
124
|
+
if (!proxies.Contains(proxy))
|
|
125
|
+
proxies.Append(proxy);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
return proxies;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
shared_ptr<SumOfIntegrals>
|
|
134
|
+
Diff (shared_ptr<CoefficientFunction> var,
|
|
135
|
+
shared_ptr<CoefficientFunction> dir) const
|
|
136
|
+
{
|
|
137
|
+
auto deriv = make_shared<SumOfIntegrals>();
|
|
138
|
+
for (auto & icf : icfs)
|
|
139
|
+
deriv->icfs += icf->CreateSameIntegralType (icf->cf->Diff(var.get(), dir));
|
|
140
|
+
return deriv;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
shared_ptr<SumOfIntegrals>
|
|
144
|
+
DiffShape (shared_ptr<CoefficientFunction> dir) const
|
|
145
|
+
{
|
|
146
|
+
auto deriv = make_shared<SumOfIntegrals>();
|
|
147
|
+
auto grad = dir->Operator("grad");
|
|
148
|
+
if (!grad)
|
|
149
|
+
throw Exception("In SumOfIntegrals::DiffShape: dir does not have a grad operator");
|
|
150
|
+
auto divdir = TraceCF(grad);
|
|
151
|
+
auto sgrad = dynamic_pointer_cast<ProxyFunction>(grad)->Trace();
|
|
152
|
+
auto sdivdir = TraceCF(sgrad);
|
|
153
|
+
|
|
154
|
+
auto tang = TangentialVectorCF(dir->Dimension(), false) -> Reshape(dir->Dimension(), 1);
|
|
155
|
+
auto bsdivdir = InnerProduct(sgrad*tang,tang);
|
|
156
|
+
|
|
157
|
+
DiffShapeCF shape;
|
|
158
|
+
//cout << "should add Eulerian here" << endl;
|
|
159
|
+
|
|
160
|
+
for (auto & icf : icfs)
|
|
161
|
+
{
|
|
162
|
+
switch (icf->dx.vb)
|
|
163
|
+
{
|
|
164
|
+
case VOL:
|
|
165
|
+
if (icf->dx.element_vb == VOL)
|
|
166
|
+
deriv->icfs += icf->CreateSameIntegralType ( icf->cf->Diff(&shape, dir) + divdir*icf->cf);
|
|
167
|
+
else
|
|
168
|
+
throw Exception("In DiffShape: for vb=VOL only element_vb=VOL implemented!");
|
|
169
|
+
break;
|
|
170
|
+
case BND:
|
|
171
|
+
if (icf->dx.element_vb == VOL)
|
|
172
|
+
deriv->icfs += icf->CreateSameIntegralType ( icf->cf->Diff(&shape, dir) + sdivdir*icf->cf);
|
|
173
|
+
else if (icf->dx.element_vb == BND && dir->Dimension() == 3)
|
|
174
|
+
deriv->icfs += icf->CreateSameIntegralType ( icf->cf->Diff(&shape, dir) + bsdivdir*icf->cf);
|
|
175
|
+
else if (icf->dx.element_vb == BND && dir->Dimension() == 2)
|
|
176
|
+
deriv->icfs += icf->CreateSameIntegralType ( icf->cf->Diff(&shape, dir));
|
|
177
|
+
else
|
|
178
|
+
throw Exception("In DiffShape: for vb=BND something went wrong!");
|
|
179
|
+
break;
|
|
180
|
+
default:
|
|
181
|
+
throw Exception("In DiffShape: for vb="+ToString(icf->dx.vb)+" and element_vb="+ToString(icf->dx.element_vb) + " not implemented!");
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return deriv;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
shared_ptr<SumOfIntegrals>
|
|
189
|
+
Compile (bool realcompile, bool wait, bool keep_files) const
|
|
190
|
+
{
|
|
191
|
+
auto compiled = make_shared<SumOfIntegrals>();
|
|
192
|
+
for (auto & icf : icfs)
|
|
193
|
+
compiled->icfs += icf->CreateSameIntegralType (::ngfem::Compile (icf->cf, realcompile, 2, wait, keep_files));
|
|
194
|
+
return compiled;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
void SetDefinedOnElements(shared_ptr<BitArray> defon)
|
|
198
|
+
{
|
|
199
|
+
for(auto& icf : icfs)
|
|
200
|
+
icf->dx.definedonelements = defon;
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
inline auto operator+ (const SumOfIntegrals & c1, const SumOfIntegrals & c2)
|
|
205
|
+
{
|
|
206
|
+
SumOfIntegrals sum;
|
|
207
|
+
for (auto & ci : c1.icfs) sum.icfs += ci;
|
|
208
|
+
for (auto & ci : c2.icfs) sum.icfs += ci;
|
|
209
|
+
return sum;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
inline auto operator* (double fac, SumOfIntegrals c1)
|
|
213
|
+
{
|
|
214
|
+
SumOfIntegrals faccf;
|
|
215
|
+
for (auto & ci : c1.icfs) faccf.icfs += ci->CreateSameIntegralType(fac*(ci->cf));
|
|
216
|
+
return faccf;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
inline auto operator* (Complex fac, SumOfIntegrals c1)
|
|
220
|
+
{
|
|
221
|
+
SumOfIntegrals faccf;
|
|
222
|
+
for (auto & ci : c1.icfs) faccf.icfs += ci->CreateSameIntegralType(fac*(ci->cf));
|
|
223
|
+
return faccf;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
inline auto operator- (const SumOfIntegrals & c1, const SumOfIntegrals & c2)
|
|
227
|
+
{
|
|
228
|
+
return c1 + (-1)*c2;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
inline ostream & operator<< (ostream & ost, const SumOfIntegrals & igls)
|
|
232
|
+
{
|
|
233
|
+
for (auto & igl : igls.icfs)
|
|
234
|
+
ost << *igl;
|
|
235
|
+
return ost;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
class Variation
|
|
239
|
+
{
|
|
240
|
+
public:
|
|
241
|
+
shared_ptr<SumOfIntegrals> igls;
|
|
242
|
+
Variation (shared_ptr<SumOfIntegrals> _igls) : igls(_igls) { ; }
|
|
243
|
+
|
|
244
|
+
auto Compile (bool realcompile, bool wait, bool keep_files) const
|
|
245
|
+
{
|
|
246
|
+
return Variation(igls->Compile(realcompile, wait, keep_files));
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
#endif
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#ifndef FILE_NGS_INTERPOLATE
|
|
2
|
+
#define FILE_NGS_INTERPOLATE
|
|
3
|
+
|
|
4
|
+
/**********************************************************************/
|
|
5
|
+
/* File: interpolate.cpp */
|
|
6
|
+
/* Author: L Kogler, M Neunteufel, J Schoeberl */
|
|
7
|
+
/* Date: June 2020 */
|
|
8
|
+
/**********************************************************************/
|
|
9
|
+
|
|
10
|
+
/*
|
|
11
|
+
Interpolation of CoefficientFunctions using
|
|
12
|
+
dual shapes
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
#include "fespace.hpp"
|
|
16
|
+
|
|
17
|
+
namespace ngcomp
|
|
18
|
+
{
|
|
19
|
+
|
|
20
|
+
class InterpolateProxy : public ProxyFunction
|
|
21
|
+
{
|
|
22
|
+
protected:
|
|
23
|
+
shared_ptr<CoefficientFunction> func;
|
|
24
|
+
shared_ptr<FESpace> space;
|
|
25
|
+
bool testfunction;
|
|
26
|
+
shared_ptr<DifferentialOperator> final_diffop;
|
|
27
|
+
int bonus_intorder;
|
|
28
|
+
public:
|
|
29
|
+
InterpolateProxy (shared_ptr<CoefficientFunction> func,
|
|
30
|
+
shared_ptr<FESpace> aspace,
|
|
31
|
+
bool testfunction,
|
|
32
|
+
shared_ptr<DifferentialOperator> diffop,
|
|
33
|
+
int bonus_intorder=0, VorB vb=VOL);
|
|
34
|
+
|
|
35
|
+
shared_ptr<ProxyFunction> GetAdditionalProxy (string name) const override;
|
|
36
|
+
|
|
37
|
+
shared_ptr<CoefficientFunction> Diff (const CoefficientFunction * var, shared_ptr<CoefficientFunction> dir) const override;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
NGS_DLL_HEADER
|
|
42
|
+
shared_ptr<CoefficientFunction> InterpolateCF (shared_ptr<CoefficientFunction> func, shared_ptr<FESpace> space,
|
|
43
|
+
int bonus_intorder=0,
|
|
44
|
+
optional<string> opname=nullopt);
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
#endif // FILE_NGS_INTERPOLATE
|