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,475 @@
|
|
|
1
|
+
#ifndef DIFFOPS_HPP
|
|
2
|
+
#define DIFFOPS_HPP
|
|
3
|
+
|
|
4
|
+
#include <bla.hpp>
|
|
5
|
+
#include <scalarfe.hpp>
|
|
6
|
+
#include <hcurlfe.hpp>
|
|
7
|
+
#include <hdivfe.hpp>
|
|
8
|
+
#include <diffop_impl.hpp>
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
namespace ngsbem
|
|
12
|
+
{
|
|
13
|
+
using namespace ngbla;
|
|
14
|
+
using namespace ngfem;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class DiffOpBoundaryRot : public DiffOp<DiffOpBoundaryRot>
|
|
18
|
+
{
|
|
19
|
+
public:
|
|
20
|
+
enum { DIM = 1 };
|
|
21
|
+
enum { DIM_SPACE = 3 };
|
|
22
|
+
enum { DIM_ELEMENT = 2 };
|
|
23
|
+
enum { DIM_DMAT = 3 };
|
|
24
|
+
enum { DIFFORDER = 1 };
|
|
25
|
+
|
|
26
|
+
static bool SupportsVB (VorB checkvb) { return checkvb==BND; }
|
|
27
|
+
|
|
28
|
+
static string Name() { return "boundaryrot"; }
|
|
29
|
+
|
|
30
|
+
static const ScalarFiniteElement<2> & Cast (const FiniteElement & fel)
|
|
31
|
+
{ return static_cast<const ScalarFiniteElement<2>&> (fel); }
|
|
32
|
+
|
|
33
|
+
///
|
|
34
|
+
// mat is 3 x ndof
|
|
35
|
+
template <typename AFEL, typename MIP, typename MAT>
|
|
36
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
37
|
+
MAT & mat, LocalHeap & lh)
|
|
38
|
+
{
|
|
39
|
+
Cast(fel).CalcMappedDShape (mip, Trans(mat));
|
|
40
|
+
for (int i = 0; i < fel.GetNDof(); i++)
|
|
41
|
+
{
|
|
42
|
+
Vec<3> grad = mat.Col(i);
|
|
43
|
+
mat.Col(i) = Cross(mip.GetNV(), grad);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
static int DimRef() { return 2; }
|
|
48
|
+
|
|
49
|
+
template <typename IP, typename MAT>
|
|
50
|
+
static void GenerateMatrixRef (const FiniteElement & fel, const IP & ip,
|
|
51
|
+
MAT && mat, LocalHeap & lh)
|
|
52
|
+
{
|
|
53
|
+
Cast(fel).CalcDShape (ip, Trans(mat));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
template <typename MIP, typename MAT>
|
|
57
|
+
static void CalcTransformationMatrix (const MIP & bmip,
|
|
58
|
+
MAT & mat, LocalHeap & lh)
|
|
59
|
+
{
|
|
60
|
+
auto & mip = static_cast<const MappedIntegrationPoint<2,3>&>(bmip);
|
|
61
|
+
Vec<3> nv = mip.GetNV();
|
|
62
|
+
mat = Trans(mip.GetJacobianInverse());
|
|
63
|
+
|
|
64
|
+
for (int j = 0; j < 2; j++)
|
|
65
|
+
mat.Col(j) = Cross(nv, Vec<3> (mat.Col(j)));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
/// mat is (ndof*3) x mip.Size()
|
|
70
|
+
static void GenerateMatrixSIMDIR (const FiniteElement & fel,
|
|
71
|
+
const SIMD_BaseMappedIntegrationRule & mir,
|
|
72
|
+
BareSliceMatrix<SIMD<double>> mat)
|
|
73
|
+
{
|
|
74
|
+
Cast(fel).CalcMappedDShape (mir, mat);
|
|
75
|
+
|
|
76
|
+
for (int j = 0; j < mir.Size(); j++)
|
|
77
|
+
{
|
|
78
|
+
Vec<3,SIMD<double>> nv = static_cast<const SIMD<ngfem::MappedIntegrationPoint<3,3>>&>(mir[j]).GetNV();
|
|
79
|
+
for (int i = 0; i < fel.GetNDof(); i++)
|
|
80
|
+
{
|
|
81
|
+
Vec<3,SIMD<double>> grad = mat.Col(j).Range(3*i, 3*i+3);
|
|
82
|
+
mat.Col(j).Range(3*i,3*i+3) = Cross(nv, grad);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class DiffOpRotatedTrace : public DiffOp<DiffOpRotatedTrace>
|
|
92
|
+
{
|
|
93
|
+
public:
|
|
94
|
+
enum { DIM = 1 };
|
|
95
|
+
enum { DIM_SPACE = 3 };
|
|
96
|
+
enum { DIM_ELEMENT = 2 };
|
|
97
|
+
enum { DIM_DMAT = 3 };
|
|
98
|
+
enum { DIFFORDER = 1 };
|
|
99
|
+
|
|
100
|
+
static string Name() { return "rotatedtrace"; }
|
|
101
|
+
static int DimRef() { return 2; }
|
|
102
|
+
|
|
103
|
+
static const HCurlFiniteElement<2> & Cast (const FiniteElement & fel)
|
|
104
|
+
{ return static_cast<const HCurlFiniteElement<2>&> (fel); }
|
|
105
|
+
|
|
106
|
+
// mat is 2 x ndof
|
|
107
|
+
template <typename IP, typename MAT>
|
|
108
|
+
static void GenerateMatrixRef (const FiniteElement & fel, const IP & ip,
|
|
109
|
+
MAT && mat, LocalHeap & lh)
|
|
110
|
+
{
|
|
111
|
+
Cast(fel).CalcShape (ip, Trans(mat));
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
///
|
|
115
|
+
// mat is 3 x ndof
|
|
116
|
+
template <typename AFEL, typename MIP, typename MAT>
|
|
117
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
118
|
+
MAT & mat, LocalHeap & lh)
|
|
119
|
+
{
|
|
120
|
+
Cast(fel).CalcMappedShape (mip, Trans(mat));
|
|
121
|
+
for (int i = 0; i < fel.GetNDof(); i++)
|
|
122
|
+
{
|
|
123
|
+
Vec<3> shape = mat.Col(i);
|
|
124
|
+
mat.Col(i) = Cross(mip.GetNV(), shape);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// mat is 3 x 2
|
|
129
|
+
template <typename MIP, typename MAT>
|
|
130
|
+
static void CalcTransformationMatrix (const MIP & bmip,
|
|
131
|
+
MAT & mat, LocalHeap & lh)
|
|
132
|
+
{
|
|
133
|
+
auto & mip = static_cast<const MappedIntegrationPoint<2,3>&>(bmip);
|
|
134
|
+
Vec<3> nv = mip.GetNV();
|
|
135
|
+
mat = Trans(mip.GetJacobianInverse());
|
|
136
|
+
|
|
137
|
+
for (int j = 0; j < 2; j++)
|
|
138
|
+
mat.Col(j) = Cross(nv, Vec<3> (mat.Col(j)));
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/// mat is (ndof*3) x mip.Size()
|
|
142
|
+
static void GenerateMatrixSIMDIR (const FiniteElement & fel,
|
|
143
|
+
const SIMD_BaseMappedIntegrationRule & mir,
|
|
144
|
+
BareSliceMatrix<SIMD<double>> mat)
|
|
145
|
+
{
|
|
146
|
+
Cast(fel).CalcMappedShape (mir, mat);
|
|
147
|
+
|
|
148
|
+
for (int j = 0; j < mir.Size(); j++)
|
|
149
|
+
{
|
|
150
|
+
Vec<3,SIMD<double>> nv = static_cast<const SIMD<ngfem::MappedIntegrationPoint<2,3>>&>(mir[j]).GetNV();
|
|
151
|
+
for (int i = 0; i < fel.GetNDof(); i++)
|
|
152
|
+
{
|
|
153
|
+
Vec<3,SIMD<double>> shape = mat.Col(j).Range(3*i, 3*i+3);
|
|
154
|
+
mat.Col(j).Range(3*i,3*i+3) = Cross(nv, shape);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
// rotated + scalar
|
|
161
|
+
class DiffOpHelmholtz : public DiffOp<DiffOpHelmholtz>
|
|
162
|
+
{
|
|
163
|
+
public:
|
|
164
|
+
enum { DIM = 1 };
|
|
165
|
+
enum { DIM_SPACE = 3 };
|
|
166
|
+
enum { DIM_ELEMENT = 2 };
|
|
167
|
+
enum { DIM_DMAT = 4 };
|
|
168
|
+
enum { DIFFORDER = 1 };
|
|
169
|
+
|
|
170
|
+
static string Name() { return "Helmholtz"; }
|
|
171
|
+
static int DimRef() { return 3; }
|
|
172
|
+
|
|
173
|
+
static const ScalarFiniteElement<2> & Cast (const FiniteElement & fel)
|
|
174
|
+
{ return static_cast<const ScalarFiniteElement<2>&> (fel); }
|
|
175
|
+
|
|
176
|
+
// mat is 3xndof
|
|
177
|
+
template <typename IP, typename MAT>
|
|
178
|
+
static void GenerateMatrixRef (const FiniteElement & fel, const IP & ip,
|
|
179
|
+
MAT && mat, LocalHeap & lh)
|
|
180
|
+
{
|
|
181
|
+
auto matvec = mat.Rows(0,2);
|
|
182
|
+
Cast(fel).CalcDShape (ip, Trans(matvec));
|
|
183
|
+
Cast(fel).CalcShape(ip, mat.Row(2));
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
///
|
|
187
|
+
// mat is 4 x ndof
|
|
188
|
+
template <typename AFEL, typename MIP, typename MAT>
|
|
189
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
190
|
+
MAT & mat, LocalHeap & lh)
|
|
191
|
+
{
|
|
192
|
+
// mat.AddSize(4, fel.GetNDof()) = 0.0;
|
|
193
|
+
auto matvec = mat.Rows(0,3);
|
|
194
|
+
Cast(fel).CalcMappedDShape (mip, Trans(matvec));
|
|
195
|
+
for (int i = 0; i < fel.GetNDof(); i++)
|
|
196
|
+
{
|
|
197
|
+
Vec<3> grad = matvec.Col(i);
|
|
198
|
+
matvec.Col(i) = Cross(mip.GetNV(), grad);
|
|
199
|
+
}
|
|
200
|
+
// *testout << "mat1 = " << mat << endl;
|
|
201
|
+
// mat.AddSize(4, fel.GetNDof()) = 0.0;
|
|
202
|
+
Cast(fel).CalcShape(mip.IP(), mat.Row(3));
|
|
203
|
+
// *testout << "scalar mat = " << endl << mat << mat;
|
|
204
|
+
// *testout << "mat2 = " << mat << endl;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// mat is 4x3
|
|
208
|
+
template <typename MIP, typename MAT>
|
|
209
|
+
static void CalcTransformationMatrix (const MIP & bmip,
|
|
210
|
+
MAT & mat, LocalHeap & lh)
|
|
211
|
+
{
|
|
212
|
+
auto & mip = static_cast<const MappedIntegrationPoint<2,3>&>(bmip);
|
|
213
|
+
Vec<3> nv = mip.GetNV();
|
|
214
|
+
mat = 0.0;
|
|
215
|
+
mat.Rows(0,3).Cols(0,2) = Trans(mip.GetJacobianInverse());
|
|
216
|
+
auto gradmat = mat.Rows(0,3).Cols(0,2);
|
|
217
|
+
for (int j = 0; j < 2; j++)
|
|
218
|
+
gradmat.Col(j) = Cross(nv, Vec<3> (gradmat.Col(j)));
|
|
219
|
+
|
|
220
|
+
mat(3,2) = 1.0;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/// mat is (ndof*4) x mip.Size()
|
|
224
|
+
static void GenerateMatrixSIMDIR (const FiniteElement & fel,
|
|
225
|
+
const SIMD_BaseMappedIntegrationRule & mir,
|
|
226
|
+
BareSliceMatrix<SIMD<double>> mat)
|
|
227
|
+
{
|
|
228
|
+
Cast(fel).CalcMappedDShape (mir, mat.Rows(0, 3*fel.GetNDof()));
|
|
229
|
+
|
|
230
|
+
for (int j = 0; j < mir.Size(); j++)
|
|
231
|
+
{
|
|
232
|
+
Vec<3,SIMD<double>> nv = static_cast<const SIMD<ngfem::MappedIntegrationPoint<3,3>>&>(mir[j]).GetNV();
|
|
233
|
+
for (int i = fel.GetNDof()-1; i >= 0; i--)
|
|
234
|
+
{
|
|
235
|
+
Vec<3,SIMD<double>> grad = mat.Col(j).Range(3*i, 3*i+3);
|
|
236
|
+
mat.Col(j).Range(4*i,4*i+3) = Cross(nv, grad);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// *testout << "simd mat1 = " << endl << mat.AddSize(4*fel.GetNDof(), mir.Size()) << endl;
|
|
240
|
+
// mat.AddSize(4*fel.GetNDof(), mir.Size()) = SIMD<double>(0.0);
|
|
241
|
+
Cast(fel).CalcShape (mir.IR(), mat.RowSlice(3,4));
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
// rotated
|
|
248
|
+
class DiffOpMaxwell : public DiffOp<DiffOpMaxwell>
|
|
249
|
+
{
|
|
250
|
+
public:
|
|
251
|
+
enum { DIM = 1 };
|
|
252
|
+
enum { DIM_SPACE = 3 };
|
|
253
|
+
enum { DIM_ELEMENT = 2 };
|
|
254
|
+
enum { DIM_DMAT = 4 };
|
|
255
|
+
enum { DIFFORDER = 1 };
|
|
256
|
+
|
|
257
|
+
static string Name() { return "Maxwell"; }
|
|
258
|
+
static int DimRef() { return 3; }
|
|
259
|
+
|
|
260
|
+
static const HCurlFiniteElement<2> & Cast (const FiniteElement & fel)
|
|
261
|
+
{ return static_cast<const HCurlFiniteElement<2>&> (fel); }
|
|
262
|
+
|
|
263
|
+
// mat is 3 x ndof
|
|
264
|
+
template <typename IP, typename MAT>
|
|
265
|
+
static void GenerateMatrixRef (const FiniteElement & fel, const IP & ip,
|
|
266
|
+
MAT && mat, LocalHeap & lh)
|
|
267
|
+
{
|
|
268
|
+
// auto matvec = mat.Rows(0,2);
|
|
269
|
+
Cast(fel).CalcShape (ip, Trans(mat));
|
|
270
|
+
Cast(fel).CalcCurlShape(ip, Trans(mat.Rows(2,3)));
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
///
|
|
274
|
+
// mat is 4 x ndof
|
|
275
|
+
template <typename AFEL, typename MIP, typename MAT>
|
|
276
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
277
|
+
MAT & mat, LocalHeap & lh)
|
|
278
|
+
{
|
|
279
|
+
// mat.AddSize(4, fel.GetNDof()) = 0.0;
|
|
280
|
+
auto matvec = mat.Rows(0,3);
|
|
281
|
+
Cast(fel).CalcMappedShape (mip, Trans(matvec));
|
|
282
|
+
for (int i = 0; i < fel.GetNDof(); i++)
|
|
283
|
+
{
|
|
284
|
+
Vec<3> shape = matvec.Col(i);
|
|
285
|
+
matvec.Col(i) = Cross(mip.GetNV(), shape);
|
|
286
|
+
}
|
|
287
|
+
// *testout << "mat1 = " << mat << endl;
|
|
288
|
+
// mat.AddSize(4, fel.GetNDof()) = 0.0;
|
|
289
|
+
mat.Row(3) =
|
|
290
|
+
1.0/mip.GetJacobiDet() *
|
|
291
|
+
Cast(fel).GetCurlShape(mip.IP(),lh).Col(0);
|
|
292
|
+
// *testout << "scalar mat = " << endl << mat << mat;
|
|
293
|
+
// *testout << "mat2 = " << mat << endl;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// mat is 4x3
|
|
297
|
+
template <typename MIP, typename MAT>
|
|
298
|
+
static void CalcTransformationMatrix (const MIP & bmip,
|
|
299
|
+
MAT & mat, LocalHeap & lh)
|
|
300
|
+
{
|
|
301
|
+
auto & mip = static_cast<const MappedIntegrationPoint<2,3>&>(bmip);
|
|
302
|
+
Vec<3> nv = mip.GetNV();
|
|
303
|
+
mat = 0.0;
|
|
304
|
+
mat.Rows(0,3).Cols(0,2) = Trans(mip.GetJacobianInverse());
|
|
305
|
+
auto matvec = mat.Rows(0,3).Cols(0,2);
|
|
306
|
+
for (int j = 0; j < 2; j++)
|
|
307
|
+
matvec.Col(j) = Cross(nv, Vec<3> (matvec.Col(j)));
|
|
308
|
+
|
|
309
|
+
mat(3,2) = 1.0 / mip.GetJacobiDet();
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/// mat is (ndof*4) x mip.Size()
|
|
313
|
+
static void GenerateMatrixSIMDIR (const FiniteElement & fel,
|
|
314
|
+
const SIMD_BaseMappedIntegrationRule & mir,
|
|
315
|
+
BareSliceMatrix<SIMD<double>> mat)
|
|
316
|
+
{
|
|
317
|
+
Cast(fel).CalcMappedShape (mir, mat.Rows(0, 3*fel.GetNDof()));
|
|
318
|
+
for (int j = 0; j < mir.Size(); j++)
|
|
319
|
+
{
|
|
320
|
+
Vec<3,SIMD<double>> nv = static_cast<const SIMD<ngfem::MappedIntegrationPoint<2,3>>&>(mir[j]).GetNV();
|
|
321
|
+
for (int i = fel.GetNDof()-1; i >= 0; i--)
|
|
322
|
+
{
|
|
323
|
+
Vec<3,SIMD<double>> shape = mat.Col(j).Range(3*i, 3*i+3);
|
|
324
|
+
mat.Col(j).Range(4*i,4*i+3) = Cross(nv, shape);
|
|
325
|
+
// mat.Col(j).Range(4*i+3,4*i+4) = SIMD<double>(0.0);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
// *testout << "simd mat1 = " << endl << mat.AddSize(4*fel.GetNDof(), mir.Size()) << endl;
|
|
329
|
+
// mat.AddSize(4*fel.GetNDof(), mir.Size()) = SIMD<double>(0.0);
|
|
330
|
+
|
|
331
|
+
constexpr size_t BS=16;
|
|
332
|
+
LocalHeapMem<BS*SIMD<double>::Size()*sizeof(SIMD<MappedIntegrationPoint<2,2>>)+64> lh("genmatlh");
|
|
333
|
+
FE_ElementTransformation<2,2> trafo2d(fel.ElementType());
|
|
334
|
+
for (size_t first = 0; first < mir.Size(); first += BS)
|
|
335
|
+
{
|
|
336
|
+
HeapReset hr(lh);
|
|
337
|
+
size_t next = std::min(first+BS, mir.Size());
|
|
338
|
+
SIMD_MappedIntegrationRule<2,2> mir2d(mir.IR().Range(first, next), trafo2d, lh);
|
|
339
|
+
Cast(fel).CalcMappedCurlShape (mir2d, mat.RowSlice(3,4).Cols(first, next));
|
|
340
|
+
}
|
|
341
|
+
for (size_t i = 0; i < mir.Size(); i++)
|
|
342
|
+
mat.Col(i).Slice(3,4).Range(fel.GetNDof()) *= 1.0 / mir[i].GetJacobiDet();
|
|
343
|
+
// *testout << "simd mat2 = " << endl << mat.AddSize(4*fel.GetNDof(), mir.Size()) << endl;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
using DiffOp<DiffOpMaxwell>::ApplySIMDIR;
|
|
347
|
+
static void ApplySIMDIR (const FiniteElement & fel, const SIMD_BaseMappedIntegrationRule & mir,
|
|
348
|
+
BareSliceVector<Complex> x, BareSliceMatrix<SIMD<Complex>> y)
|
|
349
|
+
{
|
|
350
|
+
Cast(fel).Evaluate (mir, x, y.Rows(3));
|
|
351
|
+
for (int j = 0; j < mir.Size(); j++)
|
|
352
|
+
{
|
|
353
|
+
Vec<3,SIMD<double>> nv = static_cast<const SIMD<ngfem::MappedIntegrationPoint<2,3>>&>(mir[j]).GetNV();
|
|
354
|
+
Vec<3,SIMD<Complex>> shape = y.Col(j).Range(0,3);
|
|
355
|
+
y.Col(j).Range(0,3) = Cross(nv, shape);
|
|
356
|
+
}
|
|
357
|
+
y.Row(3).Range(mir.Size()) = SIMD<Complex>(0.0);
|
|
358
|
+
// TODO: curl part
|
|
359
|
+
}
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
// copied from ngsolve/fem/hdiv_equations.hpp, DiffOpIdHDivSurface
|
|
368
|
+
class DiffOpMaxwellNew : public DiffOp<DiffOpMaxwellNew>
|
|
369
|
+
{
|
|
370
|
+
public:
|
|
371
|
+
enum { DIM = 1 };
|
|
372
|
+
enum { DIM_SPACE = 3 };
|
|
373
|
+
enum { DIM_ELEMENT = 2 };
|
|
374
|
+
enum { DIM_DMAT = 4 };
|
|
375
|
+
enum { DIFFORDER = 1 };
|
|
376
|
+
|
|
377
|
+
static string Name() { return "Maxwell"; }
|
|
378
|
+
static int DimRef() { return 3; }
|
|
379
|
+
|
|
380
|
+
static const HDivFiniteElement<2> & Cast (const FiniteElement & fel)
|
|
381
|
+
{ return static_cast<const HDivFiniteElement<2>&> (fel); }
|
|
382
|
+
|
|
383
|
+
// mat is 3xndof
|
|
384
|
+
template<typename IP, typename MAT>
|
|
385
|
+
static void GenerateMatrixRef (const FiniteElement & fel, const IP & ip,
|
|
386
|
+
MAT && mat, LocalHeap & lh)
|
|
387
|
+
{
|
|
388
|
+
auto matvec = mat.Rows(0,2); // 2D vector field
|
|
389
|
+
Cast(fel).CalcShape (ip, Trans(matvec));
|
|
390
|
+
Cast(fel).CalcDivShape (ip, mat.Row(2)); //divergence
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
///
|
|
394
|
+
// mat is 4 x ndof
|
|
395
|
+
template <typename AFEL, typename MIP, typename MAT>
|
|
396
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
397
|
+
MAT & mat, LocalHeap & lh)
|
|
398
|
+
{
|
|
399
|
+
auto matvec = mat.Rows(0,3);
|
|
400
|
+
matvec = (1.0 / mip.GetJacobiDet()) *mip.GetJacobian () *
|
|
401
|
+
Trans (Cast(fel).GetShape(mip.IP(),lh));
|
|
402
|
+
|
|
403
|
+
mat.Row(3) =
|
|
404
|
+
1.0/mip.GetJacobiDet() *
|
|
405
|
+
Cast(fel).GetDivShape(mip.IP(),lh).Col(0);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
// mat is 4x3
|
|
409
|
+
template <typename MIP, typename MAT>
|
|
410
|
+
static void CalcTransformationMatrix (const MIP & bmip,
|
|
411
|
+
MAT & mat, LocalHeap & lh)
|
|
412
|
+
{
|
|
413
|
+
auto & mip = static_cast<const MappedIntegrationPoint<2,3>&>(bmip);
|
|
414
|
+
mat = 0.0;
|
|
415
|
+
mat.Rows(0,3).Cols(0,2) = (1.0 / mip.GetJacobiDet()) * mip.GetJacobian();
|
|
416
|
+
mat(3,2) = 1.0 / mip.GetJacobiDet();
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
/// mat is (ndof*4) x mip.Size()
|
|
420
|
+
static void GenerateMatrixSIMDIR (const FiniteElement & fel,
|
|
421
|
+
const SIMD_BaseMappedIntegrationRule & mir,
|
|
422
|
+
BareSliceMatrix<SIMD<double>> mat)
|
|
423
|
+
{
|
|
424
|
+
Cast(fel).CalcMappedShape (mir, mat.Rows(0, 3*fel.GetNDof()));
|
|
425
|
+
for (int j = 0; j < mir.Size(); j++)
|
|
426
|
+
{
|
|
427
|
+
for (int i = fel.GetNDof()-1; i >= 0; i--)
|
|
428
|
+
{
|
|
429
|
+
Vec<3,SIMD<double>> shape = mat.Col(j).Range(3*i, 3*i+3);
|
|
430
|
+
mat.Col(j).Range(4*i,4*i+3) = shape;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
Cast(fel).CalcMappedDivShape (mir, mat.RowSlice(3, 4));
|
|
435
|
+
/*
|
|
436
|
+
constexpr size_t BS=16;
|
|
437
|
+
LocalHeapMem<BS*SIMD<double>::Size()*sizeof(SIMD<MappedIntegrationPoint<2,2>>)+64> lh("genmatlh");
|
|
438
|
+
FE_ElementTransformation<2,2> trafo2d(fel.ElementType());
|
|
439
|
+
for (size_t first = 0; first < mir.Size(); first += BS)
|
|
440
|
+
{
|
|
441
|
+
HeapReset hr(lh);
|
|
442
|
+
size_t next = std::min(first+BS, mir.Size());
|
|
443
|
+
SIMD_MappedIntegrationRule<2,2> mir2d(mir.IR().Range(first, next), trafo2d, lh);
|
|
444
|
+
Cast(fel).CalcMappedDivShape (mir2d, mat.RowSlice(3,4).Cols(first, next));
|
|
445
|
+
}
|
|
446
|
+
for (size_t i = 0; i < mir.Size(); i++)
|
|
447
|
+
mat.Col(i).Slice(3,4).Range(fel.GetNDof()) *= 1.0 / mir[i].GetJacobiDet();
|
|
448
|
+
*/
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
using DiffOp<DiffOpMaxwellNew>::ApplySIMDIR;
|
|
452
|
+
static void ApplySIMDIR (const FiniteElement & fel, const SIMD_BaseMappedIntegrationRule & mir,
|
|
453
|
+
BareSliceVector<Complex> x, BareSliceMatrix<SIMD<Complex>> y)
|
|
454
|
+
{
|
|
455
|
+
Vector<> xr(fel.GetNDof()), xi(fel.GetNDof());
|
|
456
|
+
Matrix<SIMD<double>> valr(3,mir.Size()), vali(3, mir.Size());
|
|
457
|
+
|
|
458
|
+
xr = Real(x);
|
|
459
|
+
xi = Imag(x);
|
|
460
|
+
Cast(fel).Evaluate (mir, xr, valr);
|
|
461
|
+
Cast(fel).Evaluate (mir, xi, vali);
|
|
462
|
+
|
|
463
|
+
for (int j = 0; j < mir.Size(); j++)
|
|
464
|
+
for (int k = 0; k < 3; k ++)
|
|
465
|
+
y(k,j) = SIMD<Complex> (valr(k,j), vali(k,j));
|
|
466
|
+
y.Row(3).Range(mir.Size()) = SIMD<Complex>(0.0);
|
|
467
|
+
}
|
|
468
|
+
};
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
#endif
|