--- /srv/reproducible-results/rbuild-debian/r-b-build.i4nkdGUi/b1/dune-localfunctions_2.10~pre20240905-1_i386.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.i4nkdGUi/b2/dune-localfunctions_2.10~pre20240905-1_i386.changes ├── Files │ @@ -1,3 +1,3 @@ │ │ f11faa019d2fbfc7192193d7dbf3c730 127156 libdevel optional libdune-localfunctions-dev_2.10~pre20240905-1_i386.deb │ - a467a60cdca09328bce670c17ab80e3f 4972968 doc optional libdune-localfunctions-doc_2.10~pre20240905-1_all.deb │ + 5561423a98a1bf110bb0b31575429665 4966648 doc optional libdune-localfunctions-doc_2.10~pre20240905-1_all.deb ├── libdune-localfunctions-doc_2.10~pre20240905-1_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2024-10-22 04:35:21.000000 debian-binary │ │ --rw-r--r-- 0 0 0 34076 2024-10-22 04:35:21.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 4938700 2024-10-22 04:35:21.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 34020 2024-10-22 04:35:21.000000 control.tar.xz │ │ +-rw-r--r-- 0 0 0 4932436 2024-10-22 04:35:21.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ │ │ │ ├── line order │ │ │ │ │ @@ -1,22 +1,14 @@ │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/changelog.Debian.gz │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/changelog.gz │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/copyright │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00002.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00005.html │ │ │ │ │ -usr/share/doc/libdune-localfunctions-doc/doxygen/a00008.html │ │ │ │ │ -usr/share/doc/libdune-localfunctions-doc/doxygen/a00008_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00011.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00011_source.html │ │ │ │ │ -usr/share/doc/libdune-localfunctions-doc/doxygen/a00023.html │ │ │ │ │ -usr/share/doc/libdune-localfunctions-doc/doxygen/a00023_source.html │ │ │ │ │ -usr/share/doc/libdune-localfunctions-doc/doxygen/a00026.html │ │ │ │ │ -usr/share/doc/libdune-localfunctions-doc/doxygen/a00026_source.html │ │ │ │ │ -usr/share/doc/libdune-localfunctions-doc/doxygen/a00029.html │ │ │ │ │ -usr/share/doc/libdune-localfunctions-doc/doxygen/a00029_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00032.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00032_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00035.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00035_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00038.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00038_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00041.html │ │ │ │ │ @@ -95,14 +87,16 @@ │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00149_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00152.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00152_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00155.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00155_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00158.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00158_source.html │ │ │ │ │ +usr/share/doc/libdune-localfunctions-doc/doxygen/a00161.html │ │ │ │ │ +usr/share/doc/libdune-localfunctions-doc/doxygen/a00161_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00164.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00164_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00167.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00167_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00170.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00170_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00173.html │ │ │ │ │ @@ -125,14 +119,16 @@ │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00197_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00200.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00200_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00203.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00203_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00206.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00206_source.html │ │ │ │ │ +usr/share/doc/libdune-localfunctions-doc/doxygen/a00209.html │ │ │ │ │ +usr/share/doc/libdune-localfunctions-doc/doxygen/a00209_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00212.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00212_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00215.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00215_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00218.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00218_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00221.html │ │ │ │ │ @@ -299,14 +295,18 @@ │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00461_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00464.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00464_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00467.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00467_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00470.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00470_source.html │ │ │ │ │ +usr/share/doc/libdune-localfunctions-doc/doxygen/a00473.html │ │ │ │ │ +usr/share/doc/libdune-localfunctions-doc/doxygen/a00473_source.html │ │ │ │ │ +usr/share/doc/libdune-localfunctions-doc/doxygen/a00476.html │ │ │ │ │ +usr/share/doc/libdune-localfunctions-doc/doxygen/a00476_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00479.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00479_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00482.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00482_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00485.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00485_source.html │ │ │ │ │ usr/share/doc/libdune-localfunctions-doc/doxygen/a00488.html │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -5,362 +5,362 @@ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 967 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/changelog.Debian.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3136 2024-09-05 06:45:48.000000 ./usr/share/doc/libdune-localfunctions-doc/changelog.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2895 2023-01-12 15:07:33.000000 ./usr/share/doc/libdune-localfunctions-doc/copyright │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3060 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00002.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3058 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00005.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3743 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00008.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6042 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00008_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3900 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00011.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4722 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00011_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5411 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00023.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21373 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00023_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7726 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00026.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 53426 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00026_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5558 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00029.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 61780 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00029_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7328 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00032.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 76678 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00032_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5510 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00035.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 24381 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00035_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4719 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00038.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8885 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00038_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7345 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00041.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 50280 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00041_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5634 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00044.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 40030 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00044_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4832 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00047.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 20471 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00047_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7816 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00050.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 43349 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00050_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5074 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 22714 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5282 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 48605 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5141 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13124 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5141 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00062.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12551 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00062_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5295 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00065.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 36397 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00065_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5087 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00068.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 20497 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00068_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5706 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00071.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 15526 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00071_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5136 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12768 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5084 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 19688 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5292 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 49679 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5094 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00083.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 19557 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00083_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5302 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00086.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 33233 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00086_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5148 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00089.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12592 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00089_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5481 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00092.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 22234 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00092_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5294 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00095.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 48545 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00095_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6300 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00011.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 27026 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00011_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5420 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00032.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 18628 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00032_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4789 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00035.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12151 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00035_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6789 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00038.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 51443 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00038_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4884 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00041.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 17950 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00041_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5052 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00044.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 10750 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00044_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6112 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00047.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 24672 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00047_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6372 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00050.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 19543 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00050_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5141 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13124 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5074 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 22714 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5282 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 48605 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5081 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00062.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 23273 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00062_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5294 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00065.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 48545 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00065_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5148 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00068.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13612 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00068_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5141 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00071.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12551 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00071_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5295 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 36397 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5087 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 20497 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5454 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 22137 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5458 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00083.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 22109 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00083_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5084 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00086.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 19688 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00086_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5136 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00089.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12768 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00089_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5292 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00092.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 49679 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00092_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5706 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00095.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 15526 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00095_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5148 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00098.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13612 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00098_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5081 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 23273 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5459 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00104.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 22083 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00104_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5454 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00107.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 22137 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00107_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6372 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00110.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 19543 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00110_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5480 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00113.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 22346 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00113_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5458 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00116.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 22109 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00116_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5213 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00119.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 10364 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00119_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6487 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00122.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 42105 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00122_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5231 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00125.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 23866 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00125_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5359 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00128.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 36065 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00128_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6002 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00131.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 47050 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00131_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5535 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00134.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 30826 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00134_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8588 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00137.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 189046 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00137_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6400 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00140.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 52932 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00140_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5604 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00143.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 35784 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00143_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6433 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00146.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 53843 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00146_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21997 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00149.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 60166 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00149_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5591 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00152.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 57996 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00152_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12583 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00155.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 103633 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00155_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5443 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00158.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 20134 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00158_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5879 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00164.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 17595 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00164_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6315 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00167.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 96771 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00167_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 22245 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00170.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 279939 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00170_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5537 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00173.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 36523 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00173_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6400 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00176.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 15839 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00176_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6142 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00179.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 26360 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00179_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5498 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00182.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 118523 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00182_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7158 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00185.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 25188 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00185_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5258 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00188.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 20256 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00188_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5365 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00191.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13305 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00191_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6238 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00194.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 23786 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00194_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5585 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00197.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 132014 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00197_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4984 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00200.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 14586 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00200_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5173 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00203.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12445 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00203_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5512 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00206.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 109519 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00206_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6522 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00212.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 47195 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00212_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4995 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00215.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 24188 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00215_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5062 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00218.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 33499 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00218_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6142 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00221.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 26360 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00221_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4780 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00224.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 11292 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00224_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4871 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00227.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 18990 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00227_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4902 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00230.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 11585 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00230_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5060 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00233.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9360 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00233_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5500 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00236.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 100782 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00236_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7361 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00239.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 42593 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00239_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5772 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00242.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 29862 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00242_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4035 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00245.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5071 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00245_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5187 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00248.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12768 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00248_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5388 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00251.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21882 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00251_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4952 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00254.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12196 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00254_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4918 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00257.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 23898 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00257_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4886 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00260.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 14326 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00260_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5109 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00263.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13454 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00263_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5175 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00266.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 90389 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00266_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5052 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00269.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 23946 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00269_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5056 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00272.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 24822 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00272_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5222 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00275.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 92560 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00275_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5109 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00278.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13455 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00278_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5460 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00281.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21371 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00281_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5055 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00284.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 18626 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00284_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5178 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00287.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 31461 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00287_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5109 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00290.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13242 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00290_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5713 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00293.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 44949 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00293_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5399 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00296.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21861 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00296_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4974 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00299.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 14762 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00299_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5097 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00302.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12245 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00302_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5166 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00305.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 24421 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00305_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5107 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00308.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12283 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00308_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4987 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00311.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 14834 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00311_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5176 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00314.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 24626 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00314_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5767 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00317.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 19908 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00317_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7052 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00320.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 102022 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00320_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5623 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00323.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 53709 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00323_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5188 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00326.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 11955 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00326_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5157 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00329.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 34488 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00329_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5039 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00332.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 18773 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00332_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5101 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00335.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13008 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00335_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5051 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00338.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 26143 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00338_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5109 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00341.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13540 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00341_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5222 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00344.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 111999 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00344_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5387 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00347.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21870 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00347_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5192 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00350.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 20750 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00350_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5396 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00353.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21980 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00353_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5379 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00356.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21826 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00356_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5197 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00359.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 20758 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00359_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4886 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00362.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 14900 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00362_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4952 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00365.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12298 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00365_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4918 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00368.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 24988 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00368_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5179 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00371.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 51961 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00371_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5109 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00374.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13186 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00374_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5051 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00377.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 20659 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00377_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9090 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00380.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 35933 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00380_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5355 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00383.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21676 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00383_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5388 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00386.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21877 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00386_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5461 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00389.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12096 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00389_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5388 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00392.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21877 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00392_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5461 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00395.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21397 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00395_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5713 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00398.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 39719 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00398_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5194 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00401.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 20870 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00401_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5180 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00404.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21610 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00404_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4782 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00407.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 18490 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00407_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6688 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00410.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 60061 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00410_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5254 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00413.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21365 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00413_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5272 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00416.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 41301 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00416_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4781 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00419.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 15327 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00419_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6850 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00422.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 54922 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00422_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5334 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00425.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7305 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00425_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4741 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00428.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 19582 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00428_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5033 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00431.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 27564 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00431_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5032 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00434.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 29436 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00434_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5107 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00437.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13659 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00437_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5161 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00440.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9897 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00440_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5078 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00443.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 15533 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00443_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5006 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00446.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 22751 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00446_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5148 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00449.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 25783 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00449_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5078 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00452.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12418 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00452_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4737 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00455.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13102 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00455_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5717 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00458.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 41173 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00458_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5296 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00461.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 20460 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00461_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5197 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00464.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 29357 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00464_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5107 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00467.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12403 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00467_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4897 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00470.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 16231 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00470_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6300 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00479.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 27026 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00479_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5420 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00482.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 18628 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00482_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3685 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00485.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6374 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00485_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3690 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00488.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5774 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00488_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5052 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00491.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 10750 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00491_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6112 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00494.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 24672 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00494_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6024 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00497.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 37596 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00497_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4172 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00500.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5444 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00500_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3552 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00503.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5413 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00503_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6921 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00506.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 45373 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00506_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6739 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00509.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 119956 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00509_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5309 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00512.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21390 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00512_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5111 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00515.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13285 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00515_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5836 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00518.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 29091 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00518_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7277 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00521.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 45329 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00521_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5363 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00524.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21377 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00524_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5463 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00527.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 62830 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00527_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5614 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00530.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 67252 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00530_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5146 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00533.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9133 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00533_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6989 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00536.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 151739 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00536_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5507 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00539.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 75861 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00539_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4884 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00542.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 17950 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00542_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6789 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00545.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 51443 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00545_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4789 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00548.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12151 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00548_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12592 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00098_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5302 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 33233 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5094 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00104.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 19557 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00104_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5480 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00107.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 22346 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00107_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5481 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00110.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 22234 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00110_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5459 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00113.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 22083 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00113_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3743 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00116.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6042 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00116_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5097 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00119.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12245 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00119_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5166 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00122.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 24421 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00122_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4974 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00125.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 14762 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00125_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5387 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00128.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21870 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00128_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5379 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00131.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21826 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00131_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4886 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00134.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 14326 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00134_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4918 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00137.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 23898 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00137_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4952 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00140.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12196 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00140_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5051 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00143.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 26143 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00143_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5109 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00146.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13540 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00146_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5222 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00149.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 111999 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00149_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5192 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00152.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 20750 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00152_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5767 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00155.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 19908 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00155_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5460 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00158.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21371 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00158_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5399 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00161.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21861 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00161_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5388 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00164.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21877 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00164_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5388 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00167.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21882 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00167_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5109 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00170.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13186 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00170_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5051 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00173.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 20659 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00173_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5179 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00176.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 51961 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00176_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 9090 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00179.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 35933 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00179_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5713 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00182.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 44949 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00182_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5396 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00185.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21980 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00185_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5056 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00188.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 24822 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00188_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5222 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00191.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 92560 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00191_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5109 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00194.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13455 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00194_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5197 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00197.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 20758 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00197_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4952 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00200.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12298 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00200_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4918 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00203.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 24988 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00203_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4886 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00206.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 14900 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00206_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5461 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00209.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12096 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00209_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5355 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00212.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21676 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00212_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5713 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00215.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 39719 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00215_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5039 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00218.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 18773 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00218_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5157 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00221.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 34488 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00221_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5101 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00224.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13008 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00224_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5178 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00227.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 31461 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00227_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5055 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00230.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 18626 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00230_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5109 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00233.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13242 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00233_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7052 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00236.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 102022 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00236_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5188 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00239.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 11955 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00239_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5623 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00242.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 53709 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00242_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5107 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00245.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12283 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00245_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5176 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00248.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 24626 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00248_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4987 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00251.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 14834 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00251_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5388 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00254.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21877 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00254_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5461 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00257.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21397 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00257_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5109 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00260.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13454 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00260_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5175 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00263.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 90389 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00263_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5052 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00266.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 23946 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00266_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5187 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00269.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12768 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00269_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5772 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00272.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 29862 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00272_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6400 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00275.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 15839 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00275_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5197 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00278.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 29357 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00278_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4897 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00281.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 16231 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00281_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5107 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00284.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12403 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00284_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5006 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00287.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 22751 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00287_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5717 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00290.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 41173 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00290_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5296 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00293.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 20460 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00293_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5078 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00296.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12418 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00296_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4737 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00299.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13102 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00299_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5148 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00302.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 25783 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00302_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6850 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00305.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 54922 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00305_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5254 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00308.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21365 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00308_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5334 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00311.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7305 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00311_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5194 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00314.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 20870 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00314_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4781 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00317.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 15327 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00317_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5272 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00320.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 41301 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00320_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6688 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00323.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 60061 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00323_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4782 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00326.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 18490 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00326_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5180 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00329.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21610 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00329_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3690 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00332.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5774 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00332_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21997 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00335.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 60166 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00335_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6400 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00338.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 52932 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00338_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6315 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00341.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 96771 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00341_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8588 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00344.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 189046 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00344_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12583 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00347.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 103633 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00347_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6002 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00350.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 47050 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00350_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5535 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00353.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 30826 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00353_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5537 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00356.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 36523 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00356_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5604 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00359.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 35784 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00359_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5879 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00362.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 17595 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00362_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 22245 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00365.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 279939 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00365_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5591 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00368.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 57996 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00368_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6433 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00371.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 53843 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00371_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5443 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00374.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 20134 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00374_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3552 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00377.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5413 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00377_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5231 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00380.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 23866 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00380_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6487 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00383.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 42105 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00383_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5411 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00386.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21373 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00386_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6024 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00389.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 37596 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00389_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5213 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00392.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 10364 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00392_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3685 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00395.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6374 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00395_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4741 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00398.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 19582 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00398_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5359 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00401.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 36065 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00401_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4035 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00404.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5071 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00404_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5500 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00407.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 100782 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00407_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5365 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00410.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13305 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00410_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5173 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00413.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12445 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00413_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5512 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00416.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 109519 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00416_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4871 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00419.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 18990 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00419_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4902 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00422.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 11585 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00422_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4780 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00425.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 11292 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00425_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7158 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00428.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 25188 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00428_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4984 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00431.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 14586 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00431_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6522 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00434.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 47195 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00434_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4995 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00437.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 24188 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00437_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6238 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00440.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 23786 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00440_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6142 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00443.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 26360 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00443_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5060 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00446.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 9360 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00446_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5258 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00449.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 20256 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00449_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7361 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00452.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 42593 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00452_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5498 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00455.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 118523 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00455_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5585 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00458.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 132014 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00458_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5062 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00461.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 33499 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00461_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6142 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00464.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 26360 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00464_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5507 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00467.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 75861 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00467_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5146 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00470.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 9133 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00470_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5614 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00473.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 67252 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00473_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6989 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00476.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 151739 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00476_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5463 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00479.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 62830 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00479_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5161 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00482.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 9897 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00482_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5032 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00485.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 29436 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00485_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5078 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00488.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 15533 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00488_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5107 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00491.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13659 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00491_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5033 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00494.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 27564 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00494_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3900 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00497.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4722 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00497_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7345 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00500.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 50280 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00500_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7726 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00503.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 53426 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00503_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5634 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00506.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 40030 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00506_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7816 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00509.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 43349 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00509_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5510 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00512.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 24381 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00512_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5558 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00515.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 61780 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00515_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4719 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00518.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8885 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00518_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4832 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00521.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 20471 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00521_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7328 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00524.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 76678 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00524_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4172 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00527.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5444 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00527_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7277 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00530.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 45329 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00530_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5363 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00533.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21377 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00533_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5309 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00536.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21390 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00536_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5836 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00539.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 29091 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00539_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5111 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00542.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13285 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00542_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6921 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00545.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 45373 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00545_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6739 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00548.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 119956 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00548_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 20048 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00551.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 11892 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00552.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 50323 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00552.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4902 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00553.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5249 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00553.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4381 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00554.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5396 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00554.png │ │ │ │ @@ -1292,28 +1292,28 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 13141 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04550_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5439 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04553.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 39074 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04553_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4165 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04556.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 11666 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04556_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5082 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04559.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 13282 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04559_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5215 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04562.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 33312 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04562_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5064 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04565.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 16940 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04565_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5082 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04568.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 18005 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04568_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5546 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04571.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 23257 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04571_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5918 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04574.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 41303 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04574_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5057 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04577.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13906 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04577_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5183 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04580.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13536 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04580_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5546 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04562.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 23257 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04562_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5918 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04565.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 41303 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04565_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5057 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04568.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13906 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04568_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5183 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04571.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 13536 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04571_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5215 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04574.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 33312 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04574_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5064 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04577.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 16940 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04577_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5082 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04580.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 18005 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04580_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5297 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04583.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 20103 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04583_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7068 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04586.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 43907 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04586_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5617 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04589.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 18893 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04589_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 127915 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/annotated.html │ │ │ │ @@ -1545,15 +1545,15 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5719 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_efe9c42b7995a789e2e3a3951e68c4dc.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4683 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_efe9c42b7995a789e2e3a3951e68c4dc_dep.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5171 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_f2cea2550179f5ef9eb9f9aa69c380e8.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3986 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_f2cea2550179f5ef9eb9f9aa69c380e8_dep.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5591 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_fae6c31a68fd74edf8214423c164f0b4.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4291 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_fae6c31a68fd74edf8214423c164f0b4_dep.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 45631 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/doxygen.css │ │ │ │ --rw-r--r-- 0 root (0) root (0) 88368 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dune-localfunctions.tag.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 88398 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dune-localfunctions.tag.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7704 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dynsections.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 87570 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/files.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 10520 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/functions.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 19917 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/functions_b.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 12586 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/functions_c.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 15015 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/functions_d.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 17302 2024-10-22 04:35:21.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/functions_e.html │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00011.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: rannacherturek.hh File Reference │ │ │ │ +dune-localfunctions: power.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,29 +65,50 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
rannacherturek.hh File Reference
│ │ │ │ +
│ │ │ │ +Classes | │ │ │ │ +Namespaces
│ │ │ │ +
power.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

Convenience header that includes all available Rannacher-Turek LocalFiniteElements. │ │ │ │ -More...

│ │ │ │ -
#include <dune/localfunctions/rannacherturek/rannacherturek.hh>
│ │ │ │ +
#include <cstddef>
│ │ │ │ +#include <memory>
│ │ │ │ +#include <dune/geometry/type.hh>
│ │ │ │ +#include <dune/localfunctions/meta/power/basis.hh>
│ │ │ │ +#include <dune/localfunctions/meta/power/coefficients.hh>
│ │ │ │ +#include <dune/localfunctions/meta/power/interpolation.hh>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ -

Detailed Description

│ │ │ │ -

Convenience header that includes all available Rannacher-Turek LocalFiniteElements.

│ │ │ │ -
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +

│ │ │ │ +Classes

class  Dune::PowerFiniteElement< Backend, dimR >
 Meta-finite element turning a scalar finite element into vector-valued one. More...
 
struct  Dune::PowerFiniteElement< Backend, dimR >::Traits
 types of component objects More...
 
class  Dune::PowerFiniteElementFactory< BackendFiniteElement, dimR >
 Factory for meta-finite elements turning scalar finite elements into vector-valued ones. More...
 
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +

│ │ │ │ +Namespaces

namespace  Dune
 
│ │ │ │ +
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,16 +1,33 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ -rannacherturek.hh File Reference │ │ │ │ │ -Convenience header that includes all available Rannacher-Turek │ │ │ │ │ -LocalFiniteElements. _M_o_r_e_._._. │ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_r_a_n_n_a_c_h_e_r_t_u_r_e_k_/_r_a_n_n_a_c_h_e_r_t_u_r_e_k_._h_h> │ │ │ │ │ + * _m_e_t_a │ │ │ │ │ +_C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ +power.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_m_e_t_a_/_p_o_w_e_r_/_b_a_s_i_s_._h_h> │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_m_e_t_a_/_p_o_w_e_r_/_c_o_e_f_f_i_c_i_e_n_t_s_._h_h> │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_m_e_t_a_/_p_o_w_e_r_/_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h> │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ -********** DDeettaaiilleedd DDeessccrriippttiioonn ********** │ │ │ │ │ -Convenience header that includes all available Rannacher-Turek │ │ │ │ │ -LocalFiniteElements. │ │ │ │ │ +CCllaasssseess │ │ │ │ │ + class   _D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _B_a_c_k_e_n_d_,_ _d_i_m_R_ _> │ │ │ │ │ +  Meta-finite element turning a scalar finite element into vector-valued │ │ │ │ │ + one. _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ +struct   _D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _B_a_c_k_e_n_d_,_ _d_i_m_R_ _>_:_:_T_r_a_i_t_s │ │ │ │ │ +  types of component objects _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ + class   _D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_<_ _B_a_c_k_e_n_d_F_i_n_i_t_e_E_l_e_m_e_n_t_,_ _d_i_m_R_ _> │ │ │ │ │ +  Factory for meta-finite elements turning scalar finite elements into │ │ │ │ │ + vector-valued ones. _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ +NNaammeessppaacceess │ │ │ │ │ +namespace   _D_u_n_e │ │ │ │ │ +  │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00011_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: rannacherturek.hh Source File │ │ │ │ +dune-localfunctions: power.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,27 +70,144 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
rannacherturek.hh
│ │ │ │ +
power.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ - │ │ │ │ - │ │ │ │ +
5
│ │ │ │ +
6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_HH
│ │ │ │ +
7#define DUNE_LOCALFUNCTIONS_META_POWER_HH
│ │ │ │ +
8
│ │ │ │ +
9#include <cstddef>
│ │ │ │ +
10#include <memory>
│ │ │ │ +
11
│ │ │ │ +
12#include <dune/geometry/type.hh>
│ │ │ │ +
13
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
17
│ │ │ │ +
18namespace Dune {
│ │ │ │ +
19
│ │ │ │ +
22
│ │ │ │ +
28 template<class Backend, std::size_t dimR>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
30 public:
│ │ │ │ +
│ │ │ │ +
32 struct Traits {
│ │ │ │ + │ │ │ │ + │ │ │ │ +
38 typedef PowerInterpolation<typename Backend::Traits::Interpolation,
│ │ │ │ +
39 typename Basis::Traits> Interpolation;
│ │ │ │ +
40 };
│ │ │ │ +
│ │ │ │ +
41 private:
│ │ │ │ +
42 std::shared_ptr<const Backend> backend;
│ │ │ │ +
43 typename Traits::Basis basis_;
│ │ │ │ +
44 typename Traits::Coefficients coefficients_;
│ │ │ │ +
45 typename Traits::Interpolation interpolation_;
│ │ │ │ +
46
│ │ │ │ +
47 public:
│ │ │ │ +
49
│ │ │ │ +
│ │ │ │ +
53 PowerFiniteElement(const Backend &backend_) :
│ │ │ │ +
54 backend(new Backend(backend_)),
│ │ │ │ +
55 basis_(backend->basis()),
│ │ │ │ +
56 coefficients_(backend->coefficients(), dimR),
│ │ │ │ +
57 interpolation_(backend->interpolation())
│ │ │ │ +
58 { }
│ │ │ │ +
│ │ │ │ +
59
│ │ │ │ +
61
│ │ │ │ +
│ │ │ │ +
65 PowerFiniteElement(const std::shared_ptr<const Backend> &backendSPtr) :
│ │ │ │ +
66 backend(backendSPtr),
│ │ │ │ +
67 basis_(backend->basis()),
│ │ │ │ +
68 coefficients_(backend->coefficients(), dimR),
│ │ │ │ +
69 interpolation_(backend->interpolation())
│ │ │ │ +
70 { }
│ │ │ │ +
│ │ │ │ +
71
│ │ │ │ +
73
│ │ │ │ +
77 const typename Traits::Basis& basis() const { return basis_; }
│ │ │ │ +
79
│ │ │ │ +
│ │ │ │ +
83 const typename Traits::Coefficients& coefficients() const
│ │ │ │ +
84 { return coefficients_; }
│ │ │ │ +
│ │ │ │ +
86
│ │ │ │ +
│ │ │ │ +
90 const typename Traits::Interpolation& interpolation() const
│ │ │ │ +
91 { return interpolation_; }
│ │ │ │ +
│ │ │ │ +
93 GeometryType type() const { return backend->type(); }
│ │ │ │ +
94 };
│ │ │ │ +
│ │ │ │ +
95
│ │ │ │ +
98
│ │ │ │ +
105 template<class BackendFiniteElement, std::size_t dimR>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
107 {
│ │ │ │ +
108 public:
│ │ │ │ + │ │ │ │ +
111
│ │ │ │ +
113
│ │ │ │ +
│ │ │ │ +
117 const FiniteElement make(const BackendFiniteElement &backend) const
│ │ │ │ +
118 { return FiniteElement(backend); }
│ │ │ │ +
│ │ │ │ +
120
│ │ │ │ +
124 const FiniteElement
│ │ │ │ +
│ │ │ │ +
125 make(const std::shared_ptr<const BackendFiniteElement> &backendSPtr) const
│ │ │ │ +
126 { return FiniteElement(backendSPtr); }
│ │ │ │ +
│ │ │ │ +
127
│ │ │ │ +
128 };
│ │ │ │ +
│ │ │ │ +
129
│ │ │ │ +
130} // namespace Dune
│ │ │ │ +
131
│ │ │ │ +
132#endif // DUNE_LOCALFUNCTIONS_META_POWER_HH
│ │ │ │ +
Definition bdfmcube.hh:18
│ │ │ │ +
Meta-finite element turning a scalar finite element into vector-valued one.
Definition power.hh:29
│ │ │ │ +
const Traits::Basis & basis() const
Extract basis of this finite element.
Definition power.hh:77
│ │ │ │ +
GeometryType type() const
Extract geometry type of this finite element.
Definition power.hh:93
│ │ │ │ +
const Traits::Interpolation & interpolation() const
Extract interpolation of this finite element.
Definition power.hh:90
│ │ │ │ +
PowerFiniteElement(const Backend &backend_)
Construct a finite element.
Definition power.hh:53
│ │ │ │ +
PowerFiniteElement(const std::shared_ptr< const Backend > &backendSPtr)
Construct a finite element.
Definition power.hh:65
│ │ │ │ +
const Traits::Coefficients & coefficients() const
Extract coefficients of this finite element.
Definition power.hh:83
│ │ │ │ +
types of component objects
Definition power.hh:32
│ │ │ │ +
PowerBasis< typename Backend::Traits::Basis, dimR > Basis
type of the Basis
Definition power.hh:34
│ │ │ │ +
PowerCoefficients Coefficients
type of the Coefficients
Definition power.hh:36
│ │ │ │ +
PowerInterpolation< typename Backend::Traits::Interpolation, typename Basis::Traits > Interpolation
type of the Interpolation
Definition power.hh:39
│ │ │ │ +
Factory for meta-finite elements turning scalar finite elements into vector-valued ones.
Definition power.hh:107
│ │ │ │ +
const FiniteElement make(const std::shared_ptr< const BackendFiniteElement > &backendSPtr) const
create a finite element
Definition power.hh:125
│ │ │ │ +
const FiniteElement make(const BackendFiniteElement &backend) const
create a finite element
Definition power.hh:117
│ │ │ │ +
PowerFiniteElement< BackendFiniteElement, dimR > FiniteElement
Type of the finite element.
Definition power.hh:110
│ │ │ │ +
Meta-basis turning a scalar basis into vector-valued basis.
Definition meta/power/basis.hh:26
│ │ │ │ +
Meta-coefficients turning a scalar coefficients into vector-valued coefficients.
Definition meta/power/coefficients.hh:23
│ │ │ │ +
Meta-interpolation turning a scalar interpolation into vector-valued interpolation.
Definition meta/power/interpolation.hh:26
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,17 +1,171 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ -rannacherturek.hh │ │ │ │ │ + * _m_e_t_a │ │ │ │ │ +power.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -9#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_r_a_n_n_a_c_h_e_r_t_u_r_e_k_/_r_a_n_n_a_c_h_e_r_t_u_r_e_k_._h_h> │ │ │ │ │ -_r_a_n_n_a_c_h_e_r_t_u_r_e_k_._h_h │ │ │ │ │ +5 │ │ │ │ │ +6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_HH │ │ │ │ │ +7#define DUNE_LOCALFUNCTIONS_META_POWER_HH │ │ │ │ │ +8 │ │ │ │ │ +9#include │ │ │ │ │ +10#include │ │ │ │ │ +11 │ │ │ │ │ +12#include │ │ │ │ │ +13 │ │ │ │ │ +14#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_m_e_t_a_/_p_o_w_e_r_/_b_a_s_i_s_._h_h> │ │ │ │ │ +15#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_m_e_t_a_/_p_o_w_e_r_/_c_o_e_f_f_i_c_i_e_n_t_s_._h_h> │ │ │ │ │ +16#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_m_e_t_a_/_p_o_w_e_r_/_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h> │ │ │ │ │ +17 │ │ │ │ │ +18namespace _D_u_n_e { │ │ │ │ │ +19 │ │ │ │ │ +22 │ │ │ │ │ +28 template │ │ │ │ │ +_2_9 class _P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t { │ │ │ │ │ +30 public: │ │ │ │ │ +_3_2 struct _T_r_a_i_t_s { │ │ │ │ │ +_3_4 typedef _P_o_w_e_r_B_a_s_i_s_<_t_y_p_e_n_a_m_e_ _B_a_c_k_e_n_d_:_:_T_r_a_i_t_s_:_:_B_a_s_i_s_,_ _d_i_m_R_> _B_a_s_i_s; │ │ │ │ │ +_3_6 typedef _P_o_w_e_r_C_o_e_f_f_i_c_i_e_n_t_s _C_o_e_f_f_i_c_i_e_n_t_s; │ │ │ │ │ +38 typedef _P_o_w_e_r_I_n_t_e_r_p_o_l_a_t_i_o_n _I_n_t_e_r_p_o_l_a_t_i_o_n; │ │ │ │ │ +40 }; │ │ │ │ │ +41 private: │ │ │ │ │ +42 std::shared_ptr backend; │ │ │ │ │ +43 typename _T_r_a_i_t_s_:_:_B_a_s_i_s basis_; │ │ │ │ │ +44 typename _T_r_a_i_t_s_:_:_C_o_e_f_f_i_c_i_e_n_t_s coefficients_; │ │ │ │ │ +45 typename _T_r_a_i_t_s_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n interpolation_; │ │ │ │ │ +46 │ │ │ │ │ +47 public: │ │ │ │ │ +49 │ │ │ │ │ +_5_3 _P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t(const Backend &backend_) : │ │ │ │ │ +54 backend(new Backend(backend_)), │ │ │ │ │ +55 basis_(backend->_b_a_s_i_s()), │ │ │ │ │ +56 coefficients_(backend->_c_o_e_f_f_i_c_i_e_n_t_s(), dimR), │ │ │ │ │ +57 interpolation_(backend->_i_n_t_e_r_p_o_l_a_t_i_o_n()) │ │ │ │ │ +58 { } │ │ │ │ │ +59 │ │ │ │ │ +61 │ │ │ │ │ +_6_5 _P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t(const std::shared_ptr &backendSPtr) : │ │ │ │ │ +66 backend(backendSPtr), │ │ │ │ │ +67 basis_(backend->_b_a_s_i_s()), │ │ │ │ │ +68 coefficients_(backend->_c_o_e_f_f_i_c_i_e_n_t_s(), dimR), │ │ │ │ │ +69 interpolation_(backend->_i_n_t_e_r_p_o_l_a_t_i_o_n()) │ │ │ │ │ +70 { } │ │ │ │ │ +71 │ │ │ │ │ +73 │ │ │ │ │ +_7_7 const typename _T_r_a_i_t_s_:_:_B_a_s_i_s& _b_a_s_i_s() const { return basis_; } │ │ │ │ │ +79 │ │ │ │ │ +_8_3 const typename _T_r_a_i_t_s_:_:_C_o_e_f_f_i_c_i_e_n_t_s& _c_o_e_f_f_i_c_i_e_n_t_s() const │ │ │ │ │ +84 { return coefficients_; } │ │ │ │ │ +86 │ │ │ │ │ +_9_0 const typename _T_r_a_i_t_s_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n& _i_n_t_e_r_p_o_l_a_t_i_o_n() const │ │ │ │ │ +91 { return interpolation_; } │ │ │ │ │ +_9_3 GeometryType _t_y_p_e() const { return backend->type(); } │ │ │ │ │ +94 }; │ │ │ │ │ +95 │ │ │ │ │ +98 │ │ │ │ │ +105 template │ │ │ │ │ +_1_0_6 class _P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y │ │ │ │ │ +107 { │ │ │ │ │ +108 public: │ │ │ │ │ +_1_1_0 typedef _P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_<_B_a_c_k_e_n_d_F_i_n_i_t_e_E_l_e_m_e_n_t_,_ _d_i_m_R_> _F_i_n_i_t_e_E_l_e_m_e_n_t; │ │ │ │ │ +111 │ │ │ │ │ +113 │ │ │ │ │ +_1_1_7 const _F_i_n_i_t_e_E_l_e_m_e_n_t _m_a_k_e(const BackendFiniteElement &backend) const │ │ │ │ │ +118 { return _F_i_n_i_t_e_E_l_e_m_e_n_t(backend); } │ │ │ │ │ +120 │ │ │ │ │ +124 const _F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +_1_2_5 _m_a_k_e(const std::shared_ptr &backendSPtr) const │ │ │ │ │ +126 { return _F_i_n_i_t_e_E_l_e_m_e_n_t(backendSPtr); } │ │ │ │ │ +127 │ │ │ │ │ +128 }; │ │ │ │ │ +129 │ │ │ │ │ +130} // namespace Dune │ │ │ │ │ +131 │ │ │ │ │ +132#endif // DUNE_LOCALFUNCTIONS_META_POWER_HH │ │ │ │ │ +_D_u_n_e │ │ │ │ │ +DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +Meta-finite element turning a scalar finite element into vector-valued one. │ │ │ │ │ +DDeeffiinniittiioonn power.hh:29 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_b_a_s_i_s │ │ │ │ │ +const Traits::Basis & basis() const │ │ │ │ │ +Extract basis of this finite element. │ │ │ │ │ +DDeeffiinniittiioonn power.hh:77 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_t_y_p_e │ │ │ │ │ +GeometryType type() const │ │ │ │ │ +Extract geometry type of this finite element. │ │ │ │ │ +DDeeffiinniittiioonn power.hh:93 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_i_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +const Traits::Interpolation & interpolation() const │ │ │ │ │ +Extract interpolation of this finite element. │ │ │ │ │ +DDeeffiinniittiioonn power.hh:90 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +PowerFiniteElement(const Backend &backend_) │ │ │ │ │ +Construct a finite element. │ │ │ │ │ +DDeeffiinniittiioonn power.hh:53 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +PowerFiniteElement(const std::shared_ptr< const Backend > &backendSPtr) │ │ │ │ │ +Construct a finite element. │ │ │ │ │ +DDeeffiinniittiioonn power.hh:65 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_c_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +const Traits::Coefficients & coefficients() const │ │ │ │ │ +Extract coefficients of this finite element. │ │ │ │ │ +DDeeffiinniittiioonn power.hh:83 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s │ │ │ │ │ +types of component objects │ │ │ │ │ +DDeeffiinniittiioonn power.hh:32 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s_:_:_B_a_s_i_s │ │ │ │ │ +PowerBasis< typename Backend::Traits::Basis, dimR > Basis │ │ │ │ │ +type of the Basis │ │ │ │ │ +DDeeffiinniittiioonn power.hh:34 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s_:_:_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +PowerCoefficients Coefficients │ │ │ │ │ +type of the Coefficients │ │ │ │ │ +DDeeffiinniittiioonn power.hh:36 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +PowerInterpolation< typename Backend::Traits::Interpolation, typename Basis:: │ │ │ │ │ +Traits > Interpolation │ │ │ │ │ +type of the Interpolation │ │ │ │ │ +DDeeffiinniittiioonn power.hh:39 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y │ │ │ │ │ +Factory for meta-finite elements turning scalar finite elements into vector- │ │ │ │ │ +valued ones. │ │ │ │ │ +DDeeffiinniittiioonn power.hh:107 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_:_:_m_a_k_e │ │ │ │ │ +const FiniteElement make(const std::shared_ptr< const BackendFiniteElement > │ │ │ │ │ +&backendSPtr) const │ │ │ │ │ +create a finite element │ │ │ │ │ +DDeeffiinniittiioonn power.hh:125 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_:_:_m_a_k_e │ │ │ │ │ +const FiniteElement make(const BackendFiniteElement &backend) const │ │ │ │ │ +create a finite element │ │ │ │ │ +DDeeffiinniittiioonn power.hh:117 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +PowerFiniteElement< BackendFiniteElement, dimR > FiniteElement │ │ │ │ │ +Type of the finite element. │ │ │ │ │ +DDeeffiinniittiioonn power.hh:110 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_B_a_s_i_s │ │ │ │ │ +Meta-basis turning a scalar basis into vector-valued basis. │ │ │ │ │ +DDeeffiinniittiioonn meta/power/basis.hh:26 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +Meta-coefficients turning a scalar coefficients into vector-valued │ │ │ │ │ +coefficients. │ │ │ │ │ +DDeeffiinniittiioonn meta/power/coefficients.hh:23 │ │ │ │ │ +_D_u_n_e_:_:_P_o_w_e_r_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +Meta-interpolation turning a scalar interpolation into vector-valued │ │ │ │ │ +interpolation. │ │ │ │ │ +DDeeffiinniittiioonn meta/power/interpolation.hh:26 │ │ │ │ │ +_b_a_s_i_s_._h_h │ │ │ │ │ +_c_o_e_f_f_i_c_i_e_n_t_s_._h_h │ │ │ │ │ +_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00032.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: virtualwrappers.hh File Reference │ │ │ │ +dune-localfunctions: bdfmcube.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,48 +65,36 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
virtualwrappers.hh File Reference
│ │ │ │ +
bdfmcube.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <array>
│ │ │ │ -#include <dune/localfunctions/common/localbasis.hh>
│ │ │ │ -#include <dune/localfunctions/common/localkey.hh>
│ │ │ │ -#include <dune/localfunctions/common/virtualinterface.hh>
│ │ │ │ + │ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

struct  Dune::LocalFiniteElementCloneFactoryHelper< Imp, IsInterface >
 
struct  Dune::LocalFiniteElementCloneFactory< Imp >
 
class  Dune::LocalBasisVirtualImp< T, Imp >
 class for wrapping a basis using the virtual interface More...
 
class  Dune::LocalInterpolationVirtualImp< DomainType, RangeType, Imp >
 class for wrapping a local interpolation using the virtual interface More...
 
class  Dune::LocalCoefficientsVirtualImp< Imp >
 class for wrapping local coefficients using the virtual interface More...
 
class  Dune::LocalFiniteElementVirtualImp< Imp >
 class for wrapping a finite element using the virtual interface More...
class  Dune::BDFMCubeLocalFiniteElement< D, R, dim, order >
 Brezzi-Douglas-Fortin-Marini finite elements for cubes. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,39 +1,26 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ - * _c_o_m_m_o_n │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_f_o_r_t_i_n_m_a_r_i_n_i │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -virtualwrappers.hh File Reference │ │ │ │ │ -#include │ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h> │ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h> │ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_v_i_r_t_u_a_l_i_n_t_e_r_f_a_c_e_._h_h> │ │ │ │ │ +bdfmcube.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h> │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_f_o_r_t_i_n_m_a_r_i_n_i_/_c_u_b_e_/_l_o_c_a_l_b_a_s_i_s_._h_h> │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_f_o_r_t_i_n_m_a_r_i_n_i_/_c_u_b_e_/ │ │ │ │ │ +_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h> │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_f_o_r_t_i_n_m_a_r_i_n_i_/_c_u_b_e_/ │ │ │ │ │ +_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h> │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -struct   _D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_C_l_o_n_e_F_a_c_t_o_r_y_H_e_l_p_e_r_<_ _I_m_p_,_ _I_s_I_n_t_e_r_f_a_c_e_ _> │ │ │ │ │ -  │ │ │ │ │ -struct   _D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_C_l_o_n_e_F_a_c_t_o_r_y_<_ _I_m_p_ _> │ │ │ │ │ -  │ │ │ │ │ - class   _D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_m_p_<_ _T_,_ _I_m_p_ _> │ │ │ │ │ -  class for wrapping a basis using the virtual interface _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ - class   _D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_m_p_<_ _D_o_m_a_i_n_T_y_p_e_,_ _R_a_n_g_e_T_y_p_e_,_ _I_m_p_ _> │ │ │ │ │ -  class for wrapping a local interpolation using the virtual interface │ │ │ │ │ - _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ - class   _D_u_n_e_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_m_p_<_ _I_m_p_ _> │ │ │ │ │ -  class for wrapping local coefficients using the virtual interface │ │ │ │ │ - _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ - class   _D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_<_ _I_m_p_ _> │ │ │ │ │ -  class for wrapping a finite element using the virtual interface │ │ │ │ │ - _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_F_M_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _d_i_m_,_ _o_r_d_e_r_ _> │ │ │ │ │ +  Brezzi-Douglas-Fortin-Marini finite elements for cubes. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00032_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: virtualwrappers.hh Source File │ │ │ │ +dune-localfunctions: bdfmcube.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,410 +70,95 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
virtualwrappers.hh
│ │ │ │ +
bdfmcube.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH
│ │ │ │
7
│ │ │ │ -
8#include <array>
│ │ │ │ +
8#include <dune/geometry/type.hh>
│ │ │ │
9
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
13
│ │ │ │ -
14namespace Dune
│ │ │ │ -
15{
│ │ │ │ + │ │ │ │ +
11
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
15
│ │ │ │
16
│ │ │ │ -
17 // forward declaration needed by friend declarations
│ │ │ │ -
18 template<class Imp>
│ │ │ │ -
19 class LocalFiniteElementVirtualImp;
│ │ │ │ -
20
│ │ │ │ -
21 // default clone method is the copy constructor
│ │ │ │ -
22 template<class Imp, bool IsInterface>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
24 {
│ │ │ │ -
│ │ │ │ -
25 static Imp* clone(const Imp& imp)
│ │ │ │ -
26 {
│ │ │ │ -
27 return new Imp(imp);
│ │ │ │ -
28 }
│ │ │ │ +
│ │ │ │ +
17namespace Dune
│ │ │ │ +
18{
│ │ │ │ +
19
│ │ │ │ +
43 template<class D, class R, unsigned int dim, unsigned int order>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
45 {
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
49
│ │ │ │ +
50 public:
│ │ │ │ + │ │ │ │ +
52
│ │ │ │ + │ │ │ │ +
55
│ │ │ │ +
│ │ │ │ +
61 BDFMCubeLocalFiniteElement (std::bitset<2*dim> s)
│ │ │ │ +
62 : basis( s ), interpolation( s )
│ │ │ │ +
63 {}
│ │ │ │
│ │ │ │ -
29 };
│ │ │ │ -
│ │ │ │ -
30
│ │ │ │ -
31 // if FE derives from virtual interface the clone method is used
│ │ │ │ -
32 template<class Imp>
│ │ │ │ -
33 struct LocalFiniteElementCloneFactoryHelper<Imp, true>
│ │ │ │ -
34 {
│ │ │ │ -
35 static Imp* clone(const Imp& imp)
│ │ │ │ -
36 {
│ │ │ │ -
37 return imp.clone();
│ │ │ │ -
38 }
│ │ │ │ -
39 };
│ │ │ │ -
40
│ │ │ │ -
41 // factory template to clone and create an objects
│ │ │ │ -
42 template<class Imp>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
44 {
│ │ │ │ - │ │ │ │ -
46
│ │ │ │ -
│ │ │ │ -
47 static Imp* clone(const Imp& imp)
│ │ │ │ -
48 {
│ │ │ │ - │ │ │ │ -
50 }
│ │ │ │ -
│ │ │ │ -
51
│ │ │ │ -
│ │ │ │ -
52 static Imp* create()
│ │ │ │ -
53 {
│ │ │ │ -
54 return new Imp;
│ │ │ │ -
55 }
│ │ │ │ -
│ │ │ │ -
56 };
│ │ │ │ -
│ │ │ │ -
57
│ │ │ │ -
58
│ │ │ │ -
59
│ │ │ │ -
60 // -----------------------------------------------------------------
│ │ │ │ -
61 // Basis
│ │ │ │ -
62 // -----------------------------------------------------------------
│ │ │ │ -
63
│ │ │ │
64
│ │ │ │ -
65
│ │ │ │ -
72 template<class T , class Imp>
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ -
75 {
│ │ │ │ -
76 template<class FEImp>
│ │ │ │ - │ │ │ │ -
78
│ │ │ │ -
79 protected:
│ │ │ │ -
80
│ │ │ │ -
│ │ │ │ -
82 LocalBasisVirtualImp( const Imp &imp )
│ │ │ │ -
83 : impl_(imp)
│ │ │ │ -
84 {}
│ │ │ │ -
│ │ │ │ -
85
│ │ │ │ -
86 public:
│ │ │ │ -
87 using Traits = T;
│ │ │ │ -
88
│ │ │ │ -
│ │ │ │ -
90 unsigned int size () const
│ │ │ │ -
91 {
│ │ │ │ -
92 return impl_.size();
│ │ │ │ -
93 }
│ │ │ │ -
│ │ │ │ -
94
│ │ │ │ -
│ │ │ │ -
96 unsigned int order () const
│ │ │ │ -
97 {
│ │ │ │ -
98 return impl_.order();
│ │ │ │ -
99 }
│ │ │ │ -
│ │ │ │ -
100
│ │ │ │ -
│ │ │ │ -
102 inline void evaluateFunction (const typename Traits::DomainType& in,
│ │ │ │ -
103 std::vector<typename Traits::RangeType>& out) const
│ │ │ │ -
104 {
│ │ │ │ -
105 impl_.evaluateFunction(in,out);
│ │ │ │ -
106 }
│ │ │ │ -
│ │ │ │ -
107
│ │ │ │ -
│ │ │ │ -
109 inline void evaluateJacobian(
│ │ │ │ -
110 const typename Traits::DomainType& in,
│ │ │ │ -
111 std::vector<typename Traits::JacobianType>& out) const
│ │ │ │ -
112 {
│ │ │ │ -
113 impl_.evaluateJacobian(in,out);
│ │ │ │ -
114 }
│ │ │ │ -
│ │ │ │ -
115
│ │ │ │ -
│ │ │ │ -
121 void partial(const std::array<unsigned int,Traits::dimDomain>& order,
│ │ │ │ -
122 const typename Traits::DomainType& in,
│ │ │ │ -
123 std::vector<typename Traits::RangeType>& out) const
│ │ │ │ -
124 {
│ │ │ │ -
125 impl_.partial(order,in,out);
│ │ │ │ -
126 }
│ │ │ │ -
│ │ │ │ -
127
│ │ │ │ -
128 protected:
│ │ │ │ -
129 const Imp& impl_;
│ │ │ │ -
130 };
│ │ │ │ -
│ │ │ │ -
131
│ │ │ │ -
132
│ │ │ │ -
133
│ │ │ │ -
134 // -----------------------------------------------------------------
│ │ │ │ -
135 // Interpolation
│ │ │ │ -
136 // -----------------------------------------------------------------
│ │ │ │ -
137
│ │ │ │ -
146 template<class DomainType, class RangeType, class Imp>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
148 : public LocalInterpolationVirtualInterface< DomainType, RangeType >
│ │ │ │ -
149 {
│ │ │ │ -
150 template<class FEImp>
│ │ │ │ - │ │ │ │ -
152
│ │ │ │ - │ │ │ │ -
154
│ │ │ │ -
155 protected:
│ │ │ │ -
156
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
159 : impl_(imp) {}
│ │ │ │ -
│ │ │ │ -
160
│ │ │ │ -
161 public:
│ │ │ │ -
162
│ │ │ │ - │ │ │ │ -
164
│ │ │ │ - │ │ │ │ -
166
│ │ │ │ -
│ │ │ │ -
168 virtual void interpolate (const FunctionType& f, std::vector<CoefficientType>& out) const
│ │ │ │ -
169 {
│ │ │ │ -
170 impl_.interpolate(f,out);
│ │ │ │ -
171 }
│ │ │ │ -
│ │ │ │ -
172
│ │ │ │ -
173 protected:
│ │ │ │ -
174 const Imp& impl_;
│ │ │ │ -
175
│ │ │ │ -
176 };
│ │ │ │ -
│ │ │ │ -
177
│ │ │ │ -
178
│ │ │ │ -
179
│ │ │ │ -
180 // -----------------------------------------------------------------
│ │ │ │ -
181 // Coefficients
│ │ │ │ -
182 // -----------------------------------------------------------------
│ │ │ │ -
183
│ │ │ │ -
190 template<class Imp>
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ -
193 {
│ │ │ │ -
194 template<class FEImp>
│ │ │ │ - │ │ │ │ -
196
│ │ │ │ -
197 protected:
│ │ │ │ -
198
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
201 : impl_(imp)
│ │ │ │ -
202 {}
│ │ │ │ +
65 auto localBasis () const -> const LocalBasis& { return basis; }
│ │ │ │ +
66 auto localCoefficients () const -> const LocalCoefficients& { return coefficients; }
│ │ │ │ +
67 auto localInterpolation () const -> const LocalInterpolation& { return interpolation; }
│ │ │ │ +
68
│ │ │ │ +
70 unsigned int size () const { return basis.size(); }
│ │ │ │ +
71 static constexpr auto type () -> GeometryType { return GeometryTypes::cube(dim); }
│ │ │ │ +
72
│ │ │ │ +
73 private:
│ │ │ │ +
74 LocalBasis basis;
│ │ │ │ +
75 LocalCoefficients coefficients;
│ │ │ │ +
76 LocalInterpolation interpolation;
│ │ │ │ +
77 };
│ │ │ │
│ │ │ │ -
203
│ │ │ │ -
204 public:
│ │ │ │ -
205
│ │ │ │ -
│ │ │ │ -
207 std::size_t size () const
│ │ │ │ -
208 {
│ │ │ │ -
209 return impl_.size();
│ │ │ │ -
210 }
│ │ │ │ -
│ │ │ │ -
211
│ │ │ │ -
│ │ │ │ -
213 const LocalKey& localKey (std::size_t i) const
│ │ │ │ -
214 {
│ │ │ │ -
215 return impl_.localKey(i);
│ │ │ │ -
216 }
│ │ │ │ -
│ │ │ │ -
217
│ │ │ │ -
218 protected:
│ │ │ │ -
219 const Imp& impl_;
│ │ │ │ -
220
│ │ │ │ -
221 };
│ │ │ │ -
│ │ │ │ -
222
│ │ │ │ -
223
│ │ │ │ -
224
│ │ │ │ -
225 // -----------------------------------------------------------------
│ │ │ │ -
226 // Finite Element
│ │ │ │ -
227 // -----------------------------------------------------------------
│ │ │ │ -
228
│ │ │ │ -
237 template<class Imp>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
239 : public LocalFiniteElementVirtualInterface<typename Imp::Traits::LocalBasisType::Traits>
│ │ │ │ -
240 {
│ │ │ │ -
241 using LocalBasisTraits = typename Imp::Traits::LocalBasisType::Traits;
│ │ │ │ - │ │ │ │ -
243
│ │ │ │ -
244 public:
│ │ │ │ -
245 typedef typename Interface::Traits Traits;
│ │ │ │ -
246
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
253 {}
│ │ │ │ -
│ │ │ │ -
254
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
257 : impl_(LocalFiniteElementCloneFactory<Imp>::create()),
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
261 {}
│ │ │ │ -
│ │ │ │ -
262
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
269 {}
│ │ │ │ -
│ │ │ │ -
270
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
272 {
│ │ │ │ -
273 delete impl_;
│ │ │ │ -
274 }
│ │ │ │ -
│ │ │ │ -
275
│ │ │ │ -
│ │ │ │ -
277 const typename Traits::LocalBasisType& localBasis () const
│ │ │ │ -
278 {
│ │ │ │ -
279 return localBasisImp_;
│ │ │ │ -
280 }
│ │ │ │ -
│ │ │ │ -
281
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
284 {
│ │ │ │ - │ │ │ │ -
286 }
│ │ │ │ -
│ │ │ │ -
287
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
290 {
│ │ │ │ - │ │ │ │ -
292 }
│ │ │ │ -
│ │ │ │ -
293
│ │ │ │ -
│ │ │ │ -
295 unsigned int size () const
│ │ │ │ -
296 {
│ │ │ │ -
297 return impl_->size();
│ │ │ │ -
298 }
│ │ │ │ -
│ │ │ │ -
299
│ │ │ │ -
│ │ │ │ -
301 const GeometryType type () const
│ │ │ │ -
302 {
│ │ │ │ -
303 return impl_->type();
│ │ │ │ -
304 }
│ │ │ │ -
│ │ │ │ -
305
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
312 {
│ │ │ │ -
313 return new LocalFiniteElementVirtualImp<Imp>(*this);
│ │ │ │ -
314 }
│ │ │ │ -
│ │ │ │ -
315
│ │ │ │ -
316 protected:
│ │ │ │ -
317 const Imp* impl_;
│ │ │ │ -
318
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
323 typename Imp::Traits::LocalInterpolationType> localInterpolationImp_;
│ │ │ │ -
324 };
│ │ │ │ +
78
│ │ │ │ +
79} // namespace Dune
│ │ │ │
│ │ │ │ -
325}
│ │ │ │ -
326#endif
│ │ │ │ - │ │ │ │ - │ │ │ │ +
80
│ │ │ │ +
81#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH
│ │ │ │ + │ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │ -
R RangeType
range type
Definition common/localbasis.hh:52
│ │ │ │ +
Brezzi-Douglas-Fortin-Marini finite elements for cubes.
Definition bdfmcube.hh:45
│ │ │ │ +
auto localCoefficients() const -> const LocalCoefficients &
Definition bdfmcube.hh:66
│ │ │ │ +
unsigned int size() const
Number of shape functions in this finite element.
Definition bdfmcube.hh:70
│ │ │ │ +
BDFMCubeLocalFiniteElement()
Standard constructor.
Definition bdfmcube.hh:54
│ │ │ │ +
auto localBasis() const -> const LocalBasis &
Definition bdfmcube.hh:65
│ │ │ │ +
static constexpr auto type() -> GeometryType
Definition bdfmcube.hh:71
│ │ │ │ +
auto localInterpolation() const -> const LocalInterpolation &
Definition bdfmcube.hh:67
│ │ │ │ +
BDFMCubeLocalFiniteElement(std::bitset< 2 *dim > s)
Make set number s, where 0 <= s < 2^(2*dim)
Definition bdfmcube.hh:61
│ │ │ │ +
Brezzi-Douglas-Fortin-Marini shape functions on a reference cube.
Definition brezzidouglasfortinmarini/cube/localbasis.hh:37
│ │ │ │ +
Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes.
Definition brezzidouglasfortinmarini/cube/localcoefficients.hh:33
│ │ │ │ +
Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes.
Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:36
│ │ │ │
traits helper struct
Definition localfiniteelementtraits.hh:13
│ │ │ │ -
LB LocalBasisType
Definition localfiniteelementtraits.hh:16
│ │ │ │ -
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:20
│ │ │ │ -
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:24
│ │ │ │ -
Describe position of one degree of freedom.
Definition localkey.hh:24
│ │ │ │ -
virtual base class for a local interpolation
Definition virtualinterface.hh:133
│ │ │ │ -
std::function< RangeType(DomainType)> FunctionType
type of function to interpolate
Definition virtualinterface.hh:137
│ │ │ │ -
RangeType::field_type CoefficientType
type of the coefficient vector in the interpolate method
Definition virtualinterface.hh:140
│ │ │ │ -
virtual base class for a local basis
Definition virtualinterface.hh:40
│ │ │ │ -
virtual base class for local coefficients
Definition virtualinterface.hh:198
│ │ │ │ -
virtual base class for local finite elements with functions
Definition virtualinterface.hh:225
│ │ │ │ -
class for wrapping a finite element using the virtual interface
Definition virtualwrappers.hh:240
│ │ │ │ -
const Traits::LocalBasisType & localBasis() const
Definition virtualwrappers.hh:277
│ │ │ │ -
virtual LocalFiniteElementVirtualImp< Imp > * clone() const
clone this wrapper
Definition virtualwrappers.hh:311
│ │ │ │ -
const LocalInterpolationVirtualImp< typename LocalBasisTraits::DomainType, typename LocalBasisTraits::RangeType, typename Imp::Traits::LocalInterpolationType > localInterpolationImp_
Definition virtualwrappers.hh:323
│ │ │ │ -
LocalFiniteElementVirtualImp(const Imp &imp)
taking a LocalFiniteElementVirtualInterface implementation
Definition virtualwrappers.hh:248
│ │ │ │ -
Interface::Traits Traits
Definition virtualwrappers.hh:245
│ │ │ │ -
LocalFiniteElementVirtualImp()
Default constructor. Assumes that the implementation class is default constructible as well.
Definition virtualwrappers.hh:256
│ │ │ │ -
LocalFiniteElementVirtualImp(const LocalFiniteElementVirtualImp &other)
Copy constructor needed for deep copy.
Definition virtualwrappers.hh:264
│ │ │ │ -
~LocalFiniteElementVirtualImp()
Definition virtualwrappers.hh:271
│ │ │ │ -
unsigned int size() const
Number of shape functions in this finite element.
Definition virtualwrappers.hh:295
│ │ │ │ -
const GeometryType type() const
Definition virtualwrappers.hh:301
│ │ │ │ -
const Imp * impl_
Definition virtualwrappers.hh:317
│ │ │ │ -
const Traits::LocalCoefficientsType & localCoefficients() const
Definition virtualwrappers.hh:283
│ │ │ │ -
const LocalBasisVirtualImp< LocalBasisTraits, typename Imp::Traits::LocalBasisType > localBasisImp_
Definition virtualwrappers.hh:319
│ │ │ │ -
const LocalCoefficientsVirtualImp< typename Imp::Traits::LocalCoefficientsType > localCoefficientsImp_
Definition virtualwrappers.hh:320
│ │ │ │ -
const Traits::LocalInterpolationType & localInterpolation() const
Definition virtualwrappers.hh:289
│ │ │ │ -
Definition virtualwrappers.hh:24
│ │ │ │ -
static Imp * clone(const Imp &imp)
Definition virtualwrappers.hh:25
│ │ │ │ -
Definition virtualwrappers.hh:44
│ │ │ │ -
static Imp * clone(const Imp &imp)
Definition virtualwrappers.hh:47
│ │ │ │ -
static Imp * create()
Definition virtualwrappers.hh:52
│ │ │ │ -
LocalFiniteElementVirtualInterface< typename Imp::Traits::LocalBasisType::Traits > Interface
Definition virtualwrappers.hh:45
│ │ │ │ -
class for wrapping a basis using the virtual interface
Definition virtualwrappers.hh:75
│ │ │ │ -
void partial(const std::array< unsigned int, Traits::dimDomain > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of any order of all shape functions.
Definition virtualwrappers.hh:121
│ │ │ │ -
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all basis function at given position.
Definition virtualwrappers.hh:102
│ │ │ │ -
const Imp & impl_
Definition virtualwrappers.hh:129
│ │ │ │ -
unsigned int size() const
Number of shape functions.
Definition virtualwrappers.hh:90
│ │ │ │ -
T Traits
Definition virtualwrappers.hh:87
│ │ │ │ -
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate jacobian of all shape functions at given position.
Definition virtualwrappers.hh:109
│ │ │ │ -
LocalBasisVirtualImp(const Imp &imp)
constructor taking an implementation of the interface
Definition virtualwrappers.hh:82
│ │ │ │ -
unsigned int order() const
Polynomial order of the shape functions.
Definition virtualwrappers.hh:96
│ │ │ │ -
class for wrapping a local interpolation using the virtual interface
Definition virtualwrappers.hh:149
│ │ │ │ -
virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const
determine coefficients interpolating a given function
Definition virtualwrappers.hh:168
│ │ │ │ -
const Imp & impl_
Definition virtualwrappers.hh:174
│ │ │ │ -
Base::FunctionType FunctionType
Definition virtualwrappers.hh:163
│ │ │ │ -
LocalInterpolationVirtualImp(const Imp &imp)
constructor taking an implementation of the Dune::LocalInterpolationVirtualInterface
Definition virtualwrappers.hh:158
│ │ │ │ -
Base::CoefficientType CoefficientType
Definition virtualwrappers.hh:165
│ │ │ │ -
class for wrapping local coefficients using the virtual interface
Definition virtualwrappers.hh:193
│ │ │ │ -
LocalCoefficientsVirtualImp(const Imp &imp)
constructor taking an implementation of the Dune::LocalCoefficientsVirtualInterface
Definition virtualwrappers.hh:200
│ │ │ │ -
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition virtualwrappers.hh:213
│ │ │ │ -
std::size_t size() const
number of coefficients
Definition virtualwrappers.hh:207
│ │ │ │ -
const Imp & impl_
Definition virtualwrappers.hh:219
│ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,489 +1,114 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ - * _c_o_m_m_o_n │ │ │ │ │ -virtualwrappers.hh │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_f_o_r_t_i_n_m_a_r_i_n_i │ │ │ │ │ +bdfmcube.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ +8#include │ │ │ │ │ 9 │ │ │ │ │ -10#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h> │ │ │ │ │ -11#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h> │ │ │ │ │ -12#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_v_i_r_t_u_a_l_i_n_t_e_r_f_a_c_e_._h_h> │ │ │ │ │ -13 │ │ │ │ │ -14namespace _D_u_n_e │ │ │ │ │ -15{ │ │ │ │ │ +10#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h> │ │ │ │ │ +11 │ │ │ │ │ +12#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_f_o_r_t_i_n_m_a_r_i_n_i_/_c_u_b_e_/_l_o_c_a_l_b_a_s_i_s_._h_h> │ │ │ │ │ +13#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_f_o_r_t_i_n_m_a_r_i_n_i_/_c_u_b_e_/ │ │ │ │ │ +_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h> │ │ │ │ │ +14#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_f_o_r_t_i_n_m_a_r_i_n_i_/_c_u_b_e_/ │ │ │ │ │ +_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h> │ │ │ │ │ +15 │ │ │ │ │ 16 │ │ │ │ │ -17 // forward declaration needed by friend declarations │ │ │ │ │ -18 template │ │ │ │ │ -19 class LocalFiniteElementVirtualImp; │ │ │ │ │ -20 │ │ │ │ │ -21 // default clone method is the copy constructor │ │ │ │ │ -22 template │ │ │ │ │ -_2_3 struct _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_C_l_o_n_e_F_a_c_t_o_r_y_H_e_l_p_e_r │ │ │ │ │ -24 { │ │ │ │ │ -_2_5 static Imp* _c_l_o_n_e(const Imp& imp) │ │ │ │ │ -26 { │ │ │ │ │ -27 return new Imp(imp); │ │ │ │ │ -28 } │ │ │ │ │ -29 }; │ │ │ │ │ -30 │ │ │ │ │ -31 // if FE derives from virtual interface the clone method is used │ │ │ │ │ -32 template │ │ │ │ │ -33 struct LocalFiniteElementCloneFactoryHelper │ │ │ │ │ -34 { │ │ │ │ │ -35 static Imp* _c_l_o_n_e(const Imp& imp) │ │ │ │ │ -36 { │ │ │ │ │ -37 return imp.clone(); │ │ │ │ │ -38 } │ │ │ │ │ -39 }; │ │ │ │ │ -40 │ │ │ │ │ -41 // factory template to clone and create an objects │ │ │ │ │ -42 template │ │ │ │ │ -_4_3 struct _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_C_l_o_n_e_F_a_c_t_o_r_y │ │ │ │ │ -44 { │ │ │ │ │ -_4_5 typedef _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_<_t_y_p_e_n_a_m_e_ _I_m_p_:_:_T_r_a_i_t_s_:_: │ │ │ │ │ -_L_o_c_a_l_B_a_s_i_s_T_y_p_e_:_:_T_r_a_i_t_s_> _I_n_t_e_r_f_a_c_e; │ │ │ │ │ -46 │ │ │ │ │ -_4_7 static Imp* _c_l_o_n_e(const Imp& imp) │ │ │ │ │ -48 { │ │ │ │ │ -49 return _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_C_l_o_n_e_F_a_c_t_o_r_y_H_e_l_p_e_r_<_I_m_p_,_ _s_t_d_:_:_i_s___b_a_s_e___o_f_<_I_n_t_e_r_f_a_c_e_, │ │ │ │ │ -_I_m_p_>_:_:_v_a_l_u_e>_:_:_c_l_o_n_e(imp); │ │ │ │ │ -50 } │ │ │ │ │ -51 │ │ │ │ │ -_5_2 static Imp* _c_r_e_a_t_e() │ │ │ │ │ -53 { │ │ │ │ │ -54 return new Imp; │ │ │ │ │ -55 } │ │ │ │ │ -56 }; │ │ │ │ │ -57 │ │ │ │ │ -58 │ │ │ │ │ -59 │ │ │ │ │ -60 // ----------------------------------------------------------------- │ │ │ │ │ -61 // Basis │ │ │ │ │ -62 // ----------------------------------------------------------------- │ │ │ │ │ -63 │ │ │ │ │ +_1_7namespace _D_u_n_e │ │ │ │ │ +18{ │ │ │ │ │ +19 │ │ │ │ │ +43 template │ │ │ │ │ +_4_4 class _B_D_F_M_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +45 { │ │ │ │ │ +46 using _L_o_c_a_l_B_a_s_i_s = _B_D_F_M_C_u_b_e_L_o_c_a_l_B_a_s_i_s_<_D_,_ _R_,_ _d_i_m_,_ _o_r_d_e_r_>; │ │ │ │ │ +47 using _L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s = _B_D_F_M_C_u_b_e_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_<_D_,_ _R_,_ _d_i_m_,_ _o_r_d_e_r_>; │ │ │ │ │ +48 using _L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n = _B_D_F_M_C_u_b_e_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_D_,_ _R_,_ _d_i_m_,_ _o_r_d_e_r_>; │ │ │ │ │ +49 │ │ │ │ │ +50 public: │ │ │ │ │ +_5_1 using _T_r_a_i_t_s = _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_<_L_o_c_a_l_B_a_s_i_s_,_ _L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_, │ │ │ │ │ +_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_ _>; │ │ │ │ │ +52 │ │ │ │ │ +_5_4 _B_D_F_M_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t () {} │ │ │ │ │ +55 │ │ │ │ │ +_6_1 _B_D_F_M_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t (std::bitset<2*dim> s) │ │ │ │ │ +62 : basis( s ), interpolation( s ) │ │ │ │ │ +63 {} │ │ │ │ │ 64 │ │ │ │ │ -65 │ │ │ │ │ -72 template │ │ │ │ │ -_7_3 class _L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -74 : public _L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -75 { │ │ │ │ │ -76 template │ │ │ │ │ -_7_7 friend class _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p; │ │ │ │ │ +_6_5 auto _l_o_c_a_l_B_a_s_i_s () const -> const _L_o_c_a_l_B_a_s_i_s& { return basis; } │ │ │ │ │ +_6_6 auto _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () const -> const _L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s& { return │ │ │ │ │ +coefficients; } │ │ │ │ │ +_6_7 auto _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n () const -> const _L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n& { return │ │ │ │ │ +interpolation; } │ │ │ │ │ +68 │ │ │ │ │ +_7_0 unsigned int _s_i_z_e () const { return basis.size(); } │ │ │ │ │ +_7_1 static constexpr auto _t_y_p_e () -> GeometryType { return GeometryTypes::cube │ │ │ │ │ +(dim); } │ │ │ │ │ +72 │ │ │ │ │ +73 private: │ │ │ │ │ +74 LocalBasis basis; │ │ │ │ │ +75 LocalCoefficients coefficients; │ │ │ │ │ +76 LocalInterpolation interpolation; │ │ │ │ │ +77 }; │ │ │ │ │ 78 │ │ │ │ │ -79 protected: │ │ │ │ │ +79} // namespace Dune │ │ │ │ │ 80 │ │ │ │ │ -_8_2 _L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_m_p( const Imp &imp ) │ │ │ │ │ -83 : _i_m_p_l__(imp) │ │ │ │ │ -84 {} │ │ │ │ │ -85 │ │ │ │ │ -86 public: │ │ │ │ │ -_8_7 using _T_r_a_i_t_s = T; │ │ │ │ │ -88 │ │ │ │ │ -_9_0 unsigned int _s_i_z_e () const │ │ │ │ │ -91 { │ │ │ │ │ -92 return _i_m_p_l__.size(); │ │ │ │ │ -93 } │ │ │ │ │ -94 │ │ │ │ │ -_9_6 unsigned int _o_r_d_e_r () const │ │ │ │ │ -97 { │ │ │ │ │ -98 return _i_m_p_l__.order(); │ │ │ │ │ -99 } │ │ │ │ │ -100 │ │ │ │ │ -_1_0_2 inline void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n (const typename Traits::DomainType& in, │ │ │ │ │ -103 std::vector& out) const │ │ │ │ │ -104 { │ │ │ │ │ -105 _i_m_p_l__.evaluateFunction(in,out); │ │ │ │ │ -106 } │ │ │ │ │ -107 │ │ │ │ │ -_1_0_9 inline void _e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n( │ │ │ │ │ -110 const typename Traits::DomainType& in, │ │ │ │ │ -111 std::vector& out) const │ │ │ │ │ -112 { │ │ │ │ │ -113 _i_m_p_l__.evaluateJacobian(in,out); │ │ │ │ │ -114 } │ │ │ │ │ -115 │ │ │ │ │ -_1_2_1 void _p_a_r_t_i_a_l(const std::array& _o_r_d_e_r, │ │ │ │ │ -122 const typename Traits::DomainType& in, │ │ │ │ │ -123 std::vector& out) const │ │ │ │ │ -124 { │ │ │ │ │ -125 _i_m_p_l__.partial(_o_r_d_e_r,in,out); │ │ │ │ │ -126 } │ │ │ │ │ -127 │ │ │ │ │ -128 protected: │ │ │ │ │ -_1_2_9 const Imp& _i_m_p_l__; │ │ │ │ │ -130 }; │ │ │ │ │ -131 │ │ │ │ │ -132 │ │ │ │ │ -133 │ │ │ │ │ -134 // ----------------------------------------------------------------- │ │ │ │ │ -135 // Interpolation │ │ │ │ │ -136 // ----------------------------------------------------------------- │ │ │ │ │ -137 │ │ │ │ │ -146 template │ │ │ │ │ -_1_4_7 class _L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -148 : public _L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e< DomainType, RangeType > │ │ │ │ │ -149 { │ │ │ │ │ -150 template │ │ │ │ │ -_1_5_1 friend class _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p; │ │ │ │ │ -152 │ │ │ │ │ -153 typedef _L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_<_ _D_o_m_a_i_n_T_y_p_e_,_ _R_a_n_g_e_T_y_p_e_ _> _B_a_s_e; │ │ │ │ │ -154 │ │ │ │ │ -155 protected: │ │ │ │ │ -156 │ │ │ │ │ -_1_5_8 _L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_m_p( const Imp &imp) │ │ │ │ │ -159 : _i_m_p_l__(imp) {} │ │ │ │ │ -160 │ │ │ │ │ -161 public: │ │ │ │ │ -162 │ │ │ │ │ -_1_6_3 typedef typename _B_a_s_e_:_:_F_u_n_c_t_i_o_n_T_y_p_e _F_u_n_c_t_i_o_n_T_y_p_e; │ │ │ │ │ -164 │ │ │ │ │ -_1_6_5 typedef typename _B_a_s_e_:_:_C_o_e_f_f_i_c_i_e_n_t_T_y_p_e _C_o_e_f_f_i_c_i_e_n_t_T_y_p_e; │ │ │ │ │ -166 │ │ │ │ │ -_1_6_8 virtual void _i_n_t_e_r_p_o_l_a_t_e (const _F_u_n_c_t_i_o_n_T_y_p_e& f, std:: │ │ │ │ │ -vector& out) const │ │ │ │ │ -169 { │ │ │ │ │ -170 _i_m_p_l__.interpolate(f,out); │ │ │ │ │ -171 } │ │ │ │ │ -172 │ │ │ │ │ -173 protected: │ │ │ │ │ -_1_7_4 const Imp& _i_m_p_l__; │ │ │ │ │ -175 │ │ │ │ │ -176 }; │ │ │ │ │ -177 │ │ │ │ │ -178 │ │ │ │ │ -179 │ │ │ │ │ -180 // ----------------------------------------------------------------- │ │ │ │ │ -181 // Coefficients │ │ │ │ │ -182 // ----------------------------------------------------------------- │ │ │ │ │ -183 │ │ │ │ │ -190 template │ │ │ │ │ -_1_9_1 class _L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -192 : public _L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -193 { │ │ │ │ │ -194 template │ │ │ │ │ -_1_9_5 friend class _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p; │ │ │ │ │ -196 │ │ │ │ │ -197 protected: │ │ │ │ │ -198 │ │ │ │ │ -_2_0_0 _L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_m_p( const Imp &imp ) │ │ │ │ │ -201 : _i_m_p_l__(imp) │ │ │ │ │ -202 {} │ │ │ │ │ -203 │ │ │ │ │ -204 public: │ │ │ │ │ -205 │ │ │ │ │ -_2_0_7 std::size_t _s_i_z_e () const │ │ │ │ │ -208 { │ │ │ │ │ -209 return _i_m_p_l__.size(); │ │ │ │ │ -210 } │ │ │ │ │ -211 │ │ │ │ │ -_2_1_3 const _L_o_c_a_l_K_e_y& _l_o_c_a_l_K_e_y (std::size_t i) const │ │ │ │ │ -214 { │ │ │ │ │ -215 return _i_m_p_l__.localKey(i); │ │ │ │ │ -216 } │ │ │ │ │ -217 │ │ │ │ │ -218 protected: │ │ │ │ │ -_2_1_9 const Imp& _i_m_p_l__; │ │ │ │ │ -220 │ │ │ │ │ -221 }; │ │ │ │ │ -222 │ │ │ │ │ -223 │ │ │ │ │ -224 │ │ │ │ │ -225 // ----------------------------------------------------------------- │ │ │ │ │ -226 // Finite Element │ │ │ │ │ -227 // ----------------------------------------------------------------- │ │ │ │ │ -228 │ │ │ │ │ -237 template │ │ │ │ │ -_2_3_8 class _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -239 : public _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -240 { │ │ │ │ │ -241 using LocalBasisTraits = typename Imp::Traits::LocalBasisType::Traits; │ │ │ │ │ -242 using _I_n_t_e_r_f_a_c_e = _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_<_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_>; │ │ │ │ │ -243 │ │ │ │ │ -244 public: │ │ │ │ │ -_2_4_5 typedef typename _I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s _T_r_a_i_t_s; │ │ │ │ │ -246 │ │ │ │ │ -_2_4_8 _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p( const Imp &imp ) │ │ │ │ │ -249 : _i_m_p_l__(_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_C_l_o_n_e_F_a_c_t_o_r_y::_c_l_o_n_e(imp)), │ │ │ │ │ -250 _l_o_c_a_l_B_a_s_i_s_I_m_p__(_i_m_p_l__->_l_o_c_a_l_B_a_s_i_s()), │ │ │ │ │ -251 _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_I_m_p__(_i_m_p_l__->_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s()), │ │ │ │ │ -252 _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_I_m_p__(_i_m_p_l__->_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n()) │ │ │ │ │ -253 {} │ │ │ │ │ -254 │ │ │ │ │ -_2_5_6 _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p() │ │ │ │ │ -257 : _i_m_p_l__(_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_C_l_o_n_e_F_a_c_t_o_r_y::create()), │ │ │ │ │ -258 _l_o_c_a_l_B_a_s_i_s_I_m_p__(_i_m_p_l__->_l_o_c_a_l_B_a_s_i_s()), │ │ │ │ │ -259 _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_I_m_p__(_i_m_p_l__->_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s()), │ │ │ │ │ -260 _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_I_m_p__(_i_m_p_l__->_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n()) │ │ │ │ │ -261 {} │ │ │ │ │ -262 │ │ │ │ │ -_2_6_4 _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p(const _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p& other) │ │ │ │ │ -265 : _i_m_p_l__(_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_C_l_o_n_e_F_a_c_t_o_r_y::_c_l_o_n_e(*other._i_m_p_l__)), │ │ │ │ │ -266 _l_o_c_a_l_B_a_s_i_s_I_m_p__(_i_m_p_l__->_l_o_c_a_l_B_a_s_i_s()), │ │ │ │ │ -267 _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_I_m_p__(_i_m_p_l__->_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s()), │ │ │ │ │ -268 _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_I_m_p__(_i_m_p_l__->_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n()) │ │ │ │ │ -269 {} │ │ │ │ │ -270 │ │ │ │ │ -_2_7_1 _~_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p() │ │ │ │ │ -272 { │ │ │ │ │ -273 delete _i_m_p_l__; │ │ │ │ │ -274 } │ │ │ │ │ -275 │ │ │ │ │ -_2_7_7 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e& _l_o_c_a_l_B_a_s_i_s () const │ │ │ │ │ -278 { │ │ │ │ │ -279 return _l_o_c_a_l_B_a_s_i_s_I_m_p__; │ │ │ │ │ -280 } │ │ │ │ │ -281 │ │ │ │ │ -_2_8_3 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e& _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () const │ │ │ │ │ -284 { │ │ │ │ │ -285 return _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_I_m_p__; │ │ │ │ │ -286 } │ │ │ │ │ -287 │ │ │ │ │ -_2_8_9 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e& _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n () const │ │ │ │ │ -290 { │ │ │ │ │ -291 return _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_I_m_p__; │ │ │ │ │ -292 } │ │ │ │ │ -293 │ │ │ │ │ -_2_9_5 unsigned int _s_i_z_e () const │ │ │ │ │ -296 { │ │ │ │ │ -297 return _i_m_p_l__->size(); │ │ │ │ │ -298 } │ │ │ │ │ -299 │ │ │ │ │ -_3_0_1 const GeometryType _t_y_p_e () const │ │ │ │ │ -302 { │ │ │ │ │ -303 return _i_m_p_l__->type(); │ │ │ │ │ -304 } │ │ │ │ │ -305 │ │ │ │ │ -_3_1_1 virtual _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_<_I_m_p_>* _c_l_o_n_e() const │ │ │ │ │ -312 { │ │ │ │ │ -313 return new _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_<_I_m_p_>(*this); │ │ │ │ │ -314 } │ │ │ │ │ -315 │ │ │ │ │ -316 protected: │ │ │ │ │ -_3_1_7 const Imp* _i_m_p_l__; │ │ │ │ │ -318 │ │ │ │ │ -_3_1_9 const _L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_m_p_<_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_,_ _t_y_p_e_n_a_m_e_ _I_m_p_:_:_T_r_a_i_t_s_:_: │ │ │ │ │ -_L_o_c_a_l_B_a_s_i_s_T_y_p_e_> _l_o_c_a_l_B_a_s_i_s_I_m_p__; │ │ │ │ │ -_3_2_0 const _L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_m_p_<_t_y_p_e_n_a_m_e_ _I_m_p_:_:_T_r_a_i_t_s_:_: │ │ │ │ │ -_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e_> _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_I_m_p__; │ │ │ │ │ -321 const _L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_m_p _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_I_m_p__; │ │ │ │ │ -324 }; │ │ │ │ │ -325} │ │ │ │ │ -326#endif │ │ │ │ │ -_v_i_r_t_u_a_l_i_n_t_e_r_f_a_c_e_._h_h │ │ │ │ │ -_l_o_c_a_l_k_e_y_._h_h │ │ │ │ │ +81#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH │ │ │ │ │ +_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e │ │ │ │ │ -D DomainType │ │ │ │ │ -domain type │ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:43 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_R_a_n_g_e_T_y_p_e │ │ │ │ │ -R RangeType │ │ │ │ │ -range type │ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:52 │ │ │ │ │ +_D_u_n_e_:_:_B_D_F_M_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +Brezzi-Douglas-Fortin-Marini finite elements for cubes. │ │ │ │ │ +DDeeffiinniittiioonn bdfmcube.hh:45 │ │ │ │ │ +_D_u_n_e_:_:_B_D_F_M_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +auto localCoefficients() const -> const LocalCoefficients & │ │ │ │ │ +DDeeffiinniittiioonn bdfmcube.hh:66 │ │ │ │ │ +_D_u_n_e_:_:_B_D_F_M_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_s_i_z_e │ │ │ │ │ +unsigned int size() const │ │ │ │ │ +Number of shape functions in this finite element. │ │ │ │ │ +DDeeffiinniittiioonn bdfmcube.hh:70 │ │ │ │ │ +_D_u_n_e_:_:_B_D_F_M_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_B_D_F_M_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BDFMCubeLocalFiniteElement() │ │ │ │ │ +Standard constructor. │ │ │ │ │ +DDeeffiinniittiioonn bdfmcube.hh:54 │ │ │ │ │ +_D_u_n_e_:_:_B_D_F_M_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_B_a_s_i_s │ │ │ │ │ +auto localBasis() const -> const LocalBasis & │ │ │ │ │ +DDeeffiinniittiioonn bdfmcube.hh:65 │ │ │ │ │ +_D_u_n_e_:_:_B_D_F_M_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_t_y_p_e │ │ │ │ │ +static constexpr auto type() -> GeometryType │ │ │ │ │ +DDeeffiinniittiioonn bdfmcube.hh:71 │ │ │ │ │ +_D_u_n_e_:_:_B_D_F_M_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +auto localInterpolation() const -> const LocalInterpolation & │ │ │ │ │ +DDeeffiinniittiioonn bdfmcube.hh:67 │ │ │ │ │ +_D_u_n_e_:_:_B_D_F_M_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_B_D_F_M_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BDFMCubeLocalFiniteElement(std::bitset< 2 *dim > s) │ │ │ │ │ +Make set number s, where 0 <= s < 2^(2*dim) │ │ │ │ │ +DDeeffiinniittiioonn bdfmcube.hh:61 │ │ │ │ │ +_D_u_n_e_:_:_B_D_F_M_C_u_b_e_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +Brezzi-Douglas-Fortin-Marini shape functions on a reference cube. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasfortinmarini/cube/localbasis.hh:37 │ │ │ │ │ +_D_u_n_e_:_:_B_D_F_M_C_u_b_e_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasfortinmarini/cube/localcoefficients.hh:33 │ │ │ │ │ +_D_u_n_e_:_:_B_D_F_M_C_u_b_e_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasfortinmarini/cube/localinterpolation.hh:36 │ │ │ │ │ _D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s │ │ │ │ │ traits helper struct │ │ │ │ │ DDeeffiinniittiioonn localfiniteelementtraits.hh:13 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e │ │ │ │ │ -LB LocalBasisType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:16 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e │ │ │ │ │ -LC LocalCoefficientsType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:20 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e │ │ │ │ │ -LI LocalInterpolationType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:24 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ -Describe position of one degree of freedom. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:24 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -virtual base class for a local interpolation │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:133 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_F_u_n_c_t_i_o_n_T_y_p_e │ │ │ │ │ -std::function< RangeType(DomainType)> FunctionType │ │ │ │ │ -type of function to interpolate │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:137 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_C_o_e_f_f_i_c_i_e_n_t_T_y_p_e │ │ │ │ │ -RangeType::field_type CoefficientType │ │ │ │ │ -type of the coefficient vector in the interpolate method │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:140 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -virtual base class for a local basis │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:40 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -virtual base class for local coefficients │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:198 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -virtual base class for local finite elements with functions │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:225 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -class for wrapping a finite element using the virtual interface │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:240 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_l_o_c_a_l_B_a_s_i_s │ │ │ │ │ -const Traits::LocalBasisType & localBasis() const │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:277 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_c_l_o_n_e │ │ │ │ │ -virtual LocalFiniteElementVirtualImp< Imp > * clone() const │ │ │ │ │ -clone this wrapper │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:311 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_I_m_p__ │ │ │ │ │ -const LocalInterpolationVirtualImp< typename LocalBasisTraits::DomainType, │ │ │ │ │ -typename LocalBasisTraits::RangeType, typename Imp::Traits:: │ │ │ │ │ -LocalInterpolationType > localInterpolationImp_ │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:323 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -LocalFiniteElementVirtualImp(const Imp &imp) │ │ │ │ │ -taking a LocalFiniteElementVirtualInterface implementation │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:248 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_T_r_a_i_t_s │ │ │ │ │ -Interface::Traits Traits │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:245 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -LocalFiniteElementVirtualImp() │ │ │ │ │ -Default constructor. Assumes that the implementation class is default │ │ │ │ │ -constructible as well. │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:256 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -LocalFiniteElementVirtualImp(const LocalFiniteElementVirtualImp &other) │ │ │ │ │ -Copy constructor needed for deep copy. │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:264 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_~_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -~LocalFiniteElementVirtualImp() │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:271 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_s_i_z_e │ │ │ │ │ -unsigned int size() const │ │ │ │ │ -Number of shape functions in this finite element. │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:295 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_t_y_p_e │ │ │ │ │ -const GeometryType type() const │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:301 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_i_m_p_l__ │ │ │ │ │ -const Imp * impl_ │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:317 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -const Traits::LocalCoefficientsType & localCoefficients() const │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:283 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_l_o_c_a_l_B_a_s_i_s_I_m_p__ │ │ │ │ │ -const LocalBasisVirtualImp< LocalBasisTraits, typename Imp::Traits:: │ │ │ │ │ -LocalBasisType > localBasisImp_ │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:319 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_I_m_p__ │ │ │ │ │ -const LocalCoefficientsVirtualImp< typename Imp::Traits::LocalCoefficientsType │ │ │ │ │ -> localCoefficientsImp_ │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:320 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_m_p_:_:_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -const Traits::LocalInterpolationType & localInterpolation() const │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:289 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_C_l_o_n_e_F_a_c_t_o_r_y_H_e_l_p_e_r │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:24 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_C_l_o_n_e_F_a_c_t_o_r_y_H_e_l_p_e_r_:_:_c_l_o_n_e │ │ │ │ │ -static Imp * clone(const Imp &imp) │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:25 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_C_l_o_n_e_F_a_c_t_o_r_y │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:44 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_C_l_o_n_e_F_a_c_t_o_r_y_:_:_c_l_o_n_e │ │ │ │ │ -static Imp * clone(const Imp &imp) │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:47 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_C_l_o_n_e_F_a_c_t_o_r_y_:_:_c_r_e_a_t_e │ │ │ │ │ -static Imp * create() │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:52 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_C_l_o_n_e_F_a_c_t_o_r_y_:_:_I_n_t_e_r_f_a_c_e │ │ │ │ │ -LocalFiniteElementVirtualInterface< typename Imp::Traits::LocalBasisType:: │ │ │ │ │ -Traits > Interface │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:45 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -class for wrapping a basis using the virtual interface │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:75 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_m_p_:_:_p_a_r_t_i_a_l │ │ │ │ │ -void partial(const std::array< unsigned int, Traits::dimDomain > &order, const │ │ │ │ │ -typename Traits::DomainType &in, std::vector< typename Traits::RangeType > │ │ │ │ │ -&out) const │ │ │ │ │ -Evaluate partial derivatives of any order of all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:121 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_m_p_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n │ │ │ │ │ -void evaluateFunction(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ -typename Traits::RangeType > &out) const │ │ │ │ │ -Evaluate all basis function at given position. │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:102 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_m_p_:_:_i_m_p_l__ │ │ │ │ │ -const Imp & impl_ │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:129 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_m_p_:_:_s_i_z_e │ │ │ │ │ -unsigned int size() const │ │ │ │ │ -Number of shape functions. │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:90 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_m_p_:_:_T_r_a_i_t_s │ │ │ │ │ -T Traits │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:87 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_m_p_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n │ │ │ │ │ -void evaluateJacobian(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ -typename Traits::JacobianType > &out) const │ │ │ │ │ -Evaluate jacobian of all shape functions at given position. │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:109 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_m_p_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -LocalBasisVirtualImp(const Imp &imp) │ │ │ │ │ -constructor taking an implementation of the interface │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:82 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_m_p_:_:_o_r_d_e_r │ │ │ │ │ -unsigned int order() const │ │ │ │ │ -Polynomial order of the shape functions. │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:96 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -class for wrapping a local interpolation using the virtual interface │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:149 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_m_p_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ -virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > │ │ │ │ │ -&out) const │ │ │ │ │ -determine coefficients interpolating a given function │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:168 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_m_p_:_:_i_m_p_l__ │ │ │ │ │ -const Imp & impl_ │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:174 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_m_p_:_:_F_u_n_c_t_i_o_n_T_y_p_e │ │ │ │ │ -Base::FunctionType FunctionType │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:163 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_m_p_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -LocalInterpolationVirtualImp(const Imp &imp) │ │ │ │ │ -constructor taking an implementation of the Dune:: │ │ │ │ │ -LocalInterpolationVirtualInterface │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:158 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_m_p_:_:_C_o_e_f_f_i_c_i_e_n_t_T_y_p_e │ │ │ │ │ -Base::CoefficientType CoefficientType │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:165 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -class for wrapping local coefficients using the virtual interface │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:193 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_m_p_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_m_p │ │ │ │ │ -LocalCoefficientsVirtualImp(const Imp &imp) │ │ │ │ │ -constructor taking an implementation of the Dune:: │ │ │ │ │ -LocalCoefficientsVirtualInterface │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:200 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_m_p_:_:_l_o_c_a_l_K_e_y │ │ │ │ │ -const LocalKey & localKey(std::size_t i) const │ │ │ │ │ -get i'th index │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:213 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_m_p_:_:_s_i_z_e │ │ │ │ │ -std::size_t size() const │ │ │ │ │ -number of coefficients │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:207 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_m_p_:_:_i_m_p_l__ │ │ │ │ │ -const Imp & impl_ │ │ │ │ │ -DDeeffiinniittiioonn virtualwrappers.hh:219 │ │ │ │ │ _l_o_c_a_l_b_a_s_i_s_._h_h │ │ │ │ │ +_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h │ │ │ │ │ +_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00035.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: localfiniteelementvariantcache.hh File Reference │ │ │ │ +dune-localfunctions: monomiallocalcoefficients.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,42 +65,33 @@ │ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
localfiniteelementvariantcache.hh File Reference
│ │ │ │ +
monomiallocalcoefficients.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <vector>
│ │ │ │ -#include <tuple>
│ │ │ │ -#include <utility>
│ │ │ │ -#include <type_traits>
│ │ │ │ -#include <dune/common/std/type_traits.hh>
│ │ │ │ -#include <dune/common/exceptions.hh>
│ │ │ │ -#include <dune/common/typelist.hh>
│ │ │ │ -#include <dune/common/hybridutilities.hh>
│ │ │ │ -#include <dune/geometry/type.hh>
│ │ │ │ -#include <dune/geometry/typeindex.hh>
│ │ │ │ -#include <dune/localfunctions/common/localfiniteelementvariant.hh>
│ │ │ │ +
#include <cstddef>
│ │ │ │ +#include <vector>
│ │ │ │ +#include "../common/localkey.hh"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::LocalFiniteElementVariantCache< Base >
 A cache storing a compile time selection of local finite element implementations. More...
class  Dune::MonomialLocalCoefficients< static_size >
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,31 +1,21 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ - * _c_o_m_m_o_n │ │ │ │ │ + * _m_o_n_o_m_i_a_l │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -localfiniteelementvariantcache.hh File Reference │ │ │ │ │ +monomiallocalcoefficients.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ #include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_v_a_r_i_a_n_t_._h_h> │ │ │ │ │ +#include "_._._/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e_<_ _B_a_s_e_ _> │ │ │ │ │ -  A cache storing a compile time selection of local finite element │ │ │ │ │ - implementations. _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_<_ _s_t_a_t_i_c___s_i_z_e_ _> │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00035_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: localfiniteelementvariantcache.hh Source File │ │ │ │ +dune-localfunctions: monomiallocalcoefficients.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,143 +70,77 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
localfiniteelementvariantcache.hh
│ │ │ │ +
monomiallocalcoefficients.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANTCACHE_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANTCACHE_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH
│ │ │ │
7
│ │ │ │ -
8#include <vector>
│ │ │ │ -
9#include <tuple>
│ │ │ │ -
10#include <utility>
│ │ │ │ -
11#include <type_traits>
│ │ │ │ +
8#include <cstddef>
│ │ │ │ +
9#include <vector>
│ │ │ │ +
10
│ │ │ │ +
11#include "../common/localkey.hh"
│ │ │ │
12
│ │ │ │ -
13#include <dune/common/std/type_traits.hh>
│ │ │ │ -
14#include <dune/common/exceptions.hh>
│ │ │ │ -
15#include <dune/common/typelist.hh>
│ │ │ │ -
16#include <dune/common/hybridutilities.hh>
│ │ │ │ -
17
│ │ │ │ -
18#include <dune/geometry/type.hh>
│ │ │ │ -
19#include <dune/geometry/typeindex.hh>
│ │ │ │ -
20
│ │ │ │ - │ │ │ │ -
22
│ │ │ │ -
23
│ │ │ │ -
24namespace Dune {
│ │ │ │ -
25
│ │ │ │ -
26namespace Impl {
│ │ │ │ -
27
│ │ │ │ -
28 // This class provides the index method of LocalGeometryTypeIndex
│ │ │ │ -
29 // but throws a Dune::RangeError if the dimension does not match.
│ │ │ │ -
30 // This can be helpful to catch errors in a LocalFiniteElementVariantCache
│ │ │ │ -
31 // instance based on dimension specific GeometryType indices.
│ │ │ │ -
32 template<std::size_t dim>
│ │ │ │ -
33 struct FixedDimLocalGeometryTypeIndex {
│ │ │ │ -
34 inline static std::size_t index(const GeometryType &gt)
│ │ │ │ -
35 {
│ │ │ │ -
36 if (gt.dim() != dim)
│ │ │ │ -
37 DUNE_THROW(Dune::RangeError, "Asking for dim=" << dim << " specific index of GeometryType with dimension " << gt.dim());
│ │ │ │ -
38 return LocalGeometryTypeIndex::index(gt);
│ │ │ │ +
13namespace Dune
│ │ │ │ +
14{
│ │ │ │ +
15
│ │ │ │ +
23 template<int static_size>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
25 {
│ │ │ │ +
26 public:
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
29 : index(static_size, LocalKey(0,0,0))
│ │ │ │ +
30 {
│ │ │ │ +
31 for(int i = 0; i < static_size; ++i)
│ │ │ │ +
32 index[i].index(i);
│ │ │ │ +
33 }
│ │ │ │ +
│ │ │ │ +
34
│ │ │ │ +
│ │ │ │ +
36 std::size_t size () const
│ │ │ │ +
37 {
│ │ │ │ +
38 return static_size;
│ │ │ │
39 }
│ │ │ │ -
40 };
│ │ │ │ -
41
│ │ │ │ -
42} // end namespace Impl
│ │ │ │ -
43
│ │ │ │ -
66template<class Base>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
68{
│ │ │ │ -
69
│ │ │ │ -
70 template<class LFEImplTuple>
│ │ │ │ -
71 struct GenerateLFEVariant;
│ │ │ │ -
72
│ │ │ │ -
73 template<class Index, class... LFEImpl>
│ │ │ │ -
74 struct GenerateLFEVariant<std::tuple<std::pair<Index, LFEImpl>...>>
│ │ │ │ -
75 {
│ │ │ │ -
76 using type = UniqueTypes_t<LocalFiniteElementVariant, decltype(std::declval<LFEImpl>()())...>;
│ │ │ │ -
77 };
│ │ │ │ -
78
│ │ │ │ -
79 using Base::getImplementations;
│ │ │ │ -
80 using Base::index;
│ │ │ │ -
81 using Implementations = decltype(std::declval<Base>().getImplementations());
│ │ │ │ -
82
│ │ │ │ -
83public:
│ │ │ │ -
84
│ │ │ │ -
92 using FiniteElementType = typename GenerateLFEVariant<Implementations>::type;
│ │ │ │ -
93
│ │ │ │ -
98 template<class... Args>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
100 Base(std::forward<Args>(args)...)
│ │ │ │ -
101 {
│ │ │ │ -
102 Dune::Hybrid::forEach(getImplementations(), [&,this](auto feImpl) {
│ │ │ │ -
103 auto implIndex = feImpl.first;
│ │ │ │ -
104 if (cache_.size() < implIndex+1)
│ │ │ │ -
105 cache_.resize(implIndex+1);
│ │ │ │ -
106 cache_[implIndex] = feImpl.second();
│ │ │ │ -
107 });
│ │ │ │ -
108 }
│ │ │ │ -
│ │ │ │ -
109
│ │ │ │ - │ │ │ │ -
112
│ │ │ │ - │ │ │ │ -
115
│ │ │ │ - │ │ │ │ -
118
│ │ │ │ - │ │ │ │ -
121
│ │ │ │ -
126 template<class... Key>
│ │ │ │ -
│ │ │ │ -
127 const auto& get(const Key&... key) const
│ │ │ │ -
128 {
│ │ │ │ -
129 auto implIndex = index(key...);
│ │ │ │ -
130 if (implIndex >= cache_.size())
│ │ │ │ -
131 DUNE_THROW(Dune::RangeError,"There is no LocalFiniteElement of the requested type.");
│ │ │ │ -
132 if (not(cache_[implIndex]))
│ │ │ │ -
133 DUNE_THROW(Dune::RangeError,"There is no LocalFiniteElement of the requested type.");
│ │ │ │ -
134 return cache_[implIndex];
│ │ │ │ -
135 }
│ │ │ │ -
│ │ │ │ -
136
│ │ │ │ -
137private:
│ │ │ │ -
138 std::vector<FiniteElementType> cache_;
│ │ │ │ -
139};
│ │ │ │ -
│ │ │ │ -
140
│ │ │ │ -
141
│ │ │ │ -
142
│ │ │ │ -
143} // namespace Dune
│ │ │ │ -
144
│ │ │ │ -
145
│ │ │ │ -
146
│ │ │ │ -
147
│ │ │ │ -
148#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH
│ │ │ │ - │ │ │ │ +
│ │ │ │ +
40
│ │ │ │ +
│ │ │ │ +
42 const LocalKey& localKey (std::size_t i) const
│ │ │ │ +
43 {
│ │ │ │ +
44 return index[i];
│ │ │ │ +
45 }
│ │ │ │ +
│ │ │ │ +
46
│ │ │ │ +
47 private:
│ │ │ │ +
48 std::vector<LocalKey> index;
│ │ │ │ +
49 };
│ │ │ │ +
│ │ │ │ +
50
│ │ │ │ +
51}
│ │ │ │ +
52#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
A cache storing a compile time selection of local finite element implementations.
Definition localfiniteelementvariantcache.hh:68
│ │ │ │ -
LocalFiniteElementVariantCache & operator=(const LocalFiniteElementVariantCache &other)=default
Copy assignment.
│ │ │ │ -
LocalFiniteElementVariantCache(Args &&... args)
Default constructor.
Definition localfiniteelementvariantcache.hh:99
│ │ │ │ -
LocalFiniteElementVariantCache(LocalFiniteElementVariantCache &&other)=default
Move constructor.
│ │ │ │ -
const auto & get(const Key &... key) const
Get the LocalFiniteElement for the given key data.
Definition localfiniteelementvariantcache.hh:127
│ │ │ │ -
LocalFiniteElementVariantCache(const LocalFiniteElementVariantCache &other)=default
Copy constructor.
│ │ │ │ -
typename GenerateLFEVariant< Implementations >::type FiniteElementType
Type of exported LocalFiniteElement's.
Definition localfiniteelementvariantcache.hh:92
│ │ │ │ +
Describe position of one degree of freedom.
Definition localkey.hh:24
│ │ │ │ +
Definition monomiallocalcoefficients.hh:25
│ │ │ │ +
std::size_t size() const
number of coefficients
Definition monomiallocalcoefficients.hh:36
│ │ │ │ +
MonomialLocalCoefficients()
Standard constructor.
Definition monomiallocalcoefficients.hh:28
│ │ │ │ +
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition monomiallocalcoefficients.hh:42
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,158 +1,73 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ - * _c_o_m_m_o_n │ │ │ │ │ -localfiniteelementvariantcache.hh │ │ │ │ │ + * _m_o_n_o_m_i_a_l │ │ │ │ │ +monomiallocalcoefficients.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANTCACHE_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANTCACHE_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ -9#include │ │ │ │ │ -10#include │ │ │ │ │ -11#include │ │ │ │ │ +8#include │ │ │ │ │ +9#include │ │ │ │ │ +10 │ │ │ │ │ +11#include "../common/localkey.hh" │ │ │ │ │ 12 │ │ │ │ │ -13#include │ │ │ │ │ -14#include │ │ │ │ │ -15#include │ │ │ │ │ -16#include │ │ │ │ │ -17 │ │ │ │ │ -18#include │ │ │ │ │ -19#include │ │ │ │ │ -20 │ │ │ │ │ -21#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_v_a_r_i_a_n_t_._h_h> │ │ │ │ │ -22 │ │ │ │ │ -23 │ │ │ │ │ -24namespace _D_u_n_e { │ │ │ │ │ -25 │ │ │ │ │ -26namespace Impl { │ │ │ │ │ -27 │ │ │ │ │ -28 // This class provides the index method of LocalGeometryTypeIndex │ │ │ │ │ -29 // but throws a Dune::RangeError if the dimension does not match. │ │ │ │ │ -30 // This can be helpful to catch errors in a LocalFiniteElementVariantCache │ │ │ │ │ -31 // instance based on dimension specific GeometryType indices. │ │ │ │ │ -32 template │ │ │ │ │ -33 struct FixedDimLocalGeometryTypeIndex { │ │ │ │ │ -34 inline static std::size_t index(const GeometryType >) │ │ │ │ │ -35 { │ │ │ │ │ -36 if (gt.dim() != dim) │ │ │ │ │ -37 DUNE_THROW(Dune::RangeError, "Asking for dim=" << dim << " specific index of │ │ │ │ │ -GeometryType with dimension " << gt.dim()); │ │ │ │ │ -38 return LocalGeometryTypeIndex::index(gt); │ │ │ │ │ +13namespace _D_u_n_e │ │ │ │ │ +14{ │ │ │ │ │ +15 │ │ │ │ │ +23 template │ │ │ │ │ +_2_4 class _M_o_n_o_m_i_a_l_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +25 { │ │ │ │ │ +26 public: │ │ │ │ │ +_2_8 _M_o_n_o_m_i_a_l_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () │ │ │ │ │ +29 : index(static_size, _L_o_c_a_l_K_e_y(0,0,0)) │ │ │ │ │ +30 { │ │ │ │ │ +31 for(int i = 0; i < static_size; ++i) │ │ │ │ │ +32 index[i].index(i); │ │ │ │ │ +33 } │ │ │ │ │ +34 │ │ │ │ │ +_3_6 std::size_t _s_i_z_e () const │ │ │ │ │ +37 { │ │ │ │ │ +38 return static_size; │ │ │ │ │ 39 } │ │ │ │ │ -40 }; │ │ │ │ │ -41 │ │ │ │ │ -42} // end namespace Impl │ │ │ │ │ -43 │ │ │ │ │ -66template │ │ │ │ │ -_6_7class _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e : Base │ │ │ │ │ -68{ │ │ │ │ │ -69 │ │ │ │ │ -70 template │ │ │ │ │ -71 struct GenerateLFEVariant; │ │ │ │ │ -72 │ │ │ │ │ -73 template │ │ │ │ │ -74 struct GenerateLFEVariant...>> │ │ │ │ │ -75 { │ │ │ │ │ -76 using type = UniqueTypes_t()())...>; │ │ │ │ │ -77 }; │ │ │ │ │ -78 │ │ │ │ │ -79 using Base::getImplementations; │ │ │ │ │ -80 using Base::index; │ │ │ │ │ -81 using Implementations = decltype(std::declval().getImplementations()); │ │ │ │ │ -82 │ │ │ │ │ -83public: │ │ │ │ │ -84 │ │ │ │ │ -_9_2 using _F_i_n_i_t_e_E_l_e_m_e_n_t_T_y_p_e = typename GenerateLFEVariant:: │ │ │ │ │ -type; │ │ │ │ │ -93 │ │ │ │ │ -98 template │ │ │ │ │ -_9_9 _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e(Args&&... args) : │ │ │ │ │ -100 Base(std::forward(args)...) │ │ │ │ │ -101 { │ │ │ │ │ -102 Dune::Hybrid::forEach(getImplementations(), [&,this](auto feImpl) { │ │ │ │ │ -103 auto implIndex = feImpl.first; │ │ │ │ │ -104 if (cache_.size() < implIndex+1) │ │ │ │ │ -105 cache_.resize(implIndex+1); │ │ │ │ │ -106 cache_[implIndex] = feImpl.second(); │ │ │ │ │ -107 }); │ │ │ │ │ -108 } │ │ │ │ │ -109 │ │ │ │ │ -_1_1_1 _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e(const _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e& other) │ │ │ │ │ -= default; │ │ │ │ │ -112 │ │ │ │ │ -_1_1_4 _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e(_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e&& other) = │ │ │ │ │ -default; │ │ │ │ │ -115 │ │ │ │ │ -_1_1_7 _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e& _o_p_e_r_a_t_o_r_=_ (const │ │ │ │ │ -_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e& other) = default; │ │ │ │ │ -118 │ │ │ │ │ -_1_2_0 _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e& _o_p_e_r_a_t_o_r_=_ (_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e&& │ │ │ │ │ -other) = default; │ │ │ │ │ -121 │ │ │ │ │ -126 template │ │ │ │ │ -_1_2_7 const auto& _g_e_t(const Key&... key) const │ │ │ │ │ -128 { │ │ │ │ │ -129 auto implIndex = index(key...); │ │ │ │ │ -130 if (implIndex >= cache_.size()) │ │ │ │ │ -131 DUNE_THROW(Dune::RangeError,"There is no LocalFiniteElement of the │ │ │ │ │ -requested type."); │ │ │ │ │ -132 if (not(cache_[implIndex])) │ │ │ │ │ -133 DUNE_THROW(Dune::RangeError,"There is no LocalFiniteElement of the │ │ │ │ │ -requested type."); │ │ │ │ │ -134 return cache_[implIndex]; │ │ │ │ │ -135 } │ │ │ │ │ -136 │ │ │ │ │ -137private: │ │ │ │ │ -138 std::vector cache_; │ │ │ │ │ -139}; │ │ │ │ │ -140 │ │ │ │ │ -141 │ │ │ │ │ -142 │ │ │ │ │ -143} // namespace Dune │ │ │ │ │ -144 │ │ │ │ │ -145 │ │ │ │ │ -146 │ │ │ │ │ -147 │ │ │ │ │ -148#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH │ │ │ │ │ -_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_v_a_r_i_a_n_t_._h_h │ │ │ │ │ +40 │ │ │ │ │ +_4_2 const _L_o_c_a_l_K_e_y& _l_o_c_a_l_K_e_y (std::size_t i) const │ │ │ │ │ +43 { │ │ │ │ │ +44 return index[i]; │ │ │ │ │ +45 } │ │ │ │ │ +46 │ │ │ │ │ +47 private: │ │ │ │ │ +48 std::vector index; │ │ │ │ │ +49 }; │ │ │ │ │ +50 │ │ │ │ │ +51} │ │ │ │ │ +52#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e │ │ │ │ │ -A cache storing a compile time selection of local finite element │ │ │ │ │ -implementations. │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementvariantcache.hh:68 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e_:_:_o_p_e_r_a_t_o_r_= │ │ │ │ │ -LocalFiniteElementVariantCache & operator=(const LocalFiniteElementVariantCache │ │ │ │ │ -&other)=default │ │ │ │ │ -Copy assignment. │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e │ │ │ │ │ -LocalFiniteElementVariantCache(Args &&... args) │ │ │ │ │ -Default constructor. │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementvariantcache.hh:99 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e │ │ │ │ │ -LocalFiniteElementVariantCache(LocalFiniteElementVariantCache &&other)=default │ │ │ │ │ -Move constructor. │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e_:_:_g_e_t │ │ │ │ │ -const auto & get(const Key &... key) const │ │ │ │ │ -Get the LocalFiniteElement for the given key data. │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementvariantcache.hh:127 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e │ │ │ │ │ -LocalFiniteElementVariantCache(const LocalFiniteElementVariantCache │ │ │ │ │ -&other)=default │ │ │ │ │ -Copy constructor. │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_a_r_i_a_n_t_C_a_c_h_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_T_y_p_e │ │ │ │ │ -typename GenerateLFEVariant< Implementations >::type FiniteElementType │ │ │ │ │ -Type of exported LocalFiniteElement's. │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementvariantcache.hh:92 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ +Describe position of one degree of freedom. │ │ │ │ │ +DDeeffiinniittiioonn localkey.hh:24 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalcoefficients.hh:25 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_s_i_z_e │ │ │ │ │ +std::size_t size() const │ │ │ │ │ +number of coefficients │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalcoefficients.hh:36 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +MonomialLocalCoefficients() │ │ │ │ │ +Standard constructor. │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalcoefficients.hh:28 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_l_o_c_a_l_K_e_y │ │ │ │ │ +const LocalKey & localKey(std::size_t i) const │ │ │ │ │ +get i'th index │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalcoefficients.hh:42 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00038.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: localfiniteelementtraits.hh File Reference │ │ │ │ +dune-localfunctions: monomiallocalbasis.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,37 +65,54 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
localfiniteelementtraits.hh File Reference
│ │ │ │ +
monomiallocalbasis.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ +
#include <array>
│ │ │ │ +#include <cassert>
│ │ │ │ +#include <numeric>
│ │ │ │ +#include <dune/common/fmatrix.hh>
│ │ │ │ +#include <dune/common/math.hh>
│ │ │ │ +#include "../common/localbasis.hh"
│ │ │ │ +
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

struct  Dune::LocalFiniteElementTraits< LB, LC, LI >
 traits helper struct More...
class  Dune::MonomImp::EvalAccess< Traits >
 Access output vector of evaluateFunction() and evaluate() More...
 
class  Dune::MonomImp::JacobianAccess< Traits >
 Access output vector of evaluateJacobian() More...
 
struct  Dune::MonomImp::Evaluate< Traits, c >
 
struct  Dune::MonomImp::Evaluate< Traits, 1 >
 
class  Dune::MonomialLocalBasis< D, R, d, p >
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
namespace  Dune::MonomImp
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,19 +1,36 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ - * _c_o_m_m_o_n │ │ │ │ │ + * _m_o_n_o_m_i_a_l │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -localfiniteelementtraits.hh File Reference │ │ │ │ │ +monomiallocalbasis.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include "_._._/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -struct   _D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_<_ _L_B_,_ _L_C_,_ _L_I_ _> │ │ │ │ │ -  traits helper struct _M_o_r_e_._._. │ │ │ │ │ + class   _D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_E_v_a_l_A_c_c_e_s_s_<_ _T_r_a_i_t_s_ _> │ │ │ │ │ +  Access output vector of evaluateFunction() and evaluate() _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ + class   _D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_J_a_c_o_b_i_a_n_A_c_c_e_s_s_<_ _T_r_a_i_t_s_ _> │ │ │ │ │ +  Access output vector of evaluateJacobian() _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ +struct   _D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_E_v_a_l_u_a_t_e_<_ _T_r_a_i_t_s_,_ _c_ _> │ │ │ │ │ +  │ │ │ │ │ +struct   _D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_E_v_a_l_u_a_t_e_<_ _T_r_a_i_t_s_,_ _1_ _> │ │ │ │ │ +  │ │ │ │ │ + class   _D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_B_a_s_i_s_<_ _D_,_ _R_,_ _d_,_ _p_ _> │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ +namespace   _D_u_n_e_:_:_M_o_n_o_m_I_m_p │ │ │ │ │ +  │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00038_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: localfiniteelementtraits.hh Source File │ │ │ │ +dune-localfunctions: monomiallocalbasis.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,50 +70,304 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
localfiniteelementtraits.hh
│ │ │ │ +
monomiallocalbasis.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFINITEELEMENTTRAITS_HH
│ │ │ │ -
6#define DUNE_LOCALFINITEELEMENTTRAITS_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH
│ │ │ │
7
│ │ │ │ -
8namespace Dune {
│ │ │ │ -
9
│ │ │ │ -
11 template<class LB, class LC, class LI>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
13 {
│ │ │ │ -
16 typedef LB LocalBasisType;
│ │ │ │ -
17
│ │ │ │ - │ │ │ │ -
21
│ │ │ │ - │ │ │ │ -
25 };
│ │ │ │ -
│ │ │ │ -
26
│ │ │ │ -
27}
│ │ │ │ +
8#include <array>
│ │ │ │ +
9#include <cassert>
│ │ │ │ +
10#include <numeric>
│ │ │ │ +
11
│ │ │ │ +
12#include <dune/common/fmatrix.hh>
│ │ │ │ +
13#include <dune/common/math.hh>
│ │ │ │ +
14
│ │ │ │ +
15#include "../common/localbasis.hh"
│ │ │ │ +
16
│ │ │ │ +
17namespace Dune
│ │ │ │ +
18{
│ │ │ │ +
│ │ │ │ +
19 namespace MonomImp
│ │ │ │ +
20 {
│ │ │ │ +
22 template <typename Traits>
│ │ │ │ +
│ │ │ │ +
23 class EvalAccess {
│ │ │ │ +
24 std::vector<typename Traits::RangeType> &out;
│ │ │ │ +
25#ifndef NDEBUG
│ │ │ │ +
26 unsigned int first_unused_index;
│ │ │ │ +
27#endif
│ │ │ │
28
│ │ │ │ -
29#endif
│ │ │ │ +
29 public:
│ │ │ │ +
│ │ │ │ +
30 EvalAccess(std::vector<typename Traits::RangeType> &out_)
│ │ │ │ +
31 : out(out_)
│ │ │ │ +
32#ifndef NDEBUG
│ │ │ │ +
33 , first_unused_index(0)
│ │ │ │ +
34#endif
│ │ │ │ +
35 { }
│ │ │ │ +
│ │ │ │ +
36#ifndef NDEBUG
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
38 assert(first_unused_index == out.size());
│ │ │ │ +
39 }
│ │ │ │ +
│ │ │ │ +
40#endif
│ │ │ │ +
│ │ │ │ +
41 typename Traits::RangeFieldType &operator[](unsigned int index)
│ │ │ │ +
42 {
│ │ │ │ +
43 assert(index < out.size());
│ │ │ │ +
44#ifndef NDEBUG
│ │ │ │ +
45 if(first_unused_index <= index)
│ │ │ │ +
46 first_unused_index = index+1;
│ │ │ │ +
47#endif
│ │ │ │ +
48 return out[index][0];
│ │ │ │ +
49 }
│ │ │ │ +
│ │ │ │ +
50 };
│ │ │ │ +
│ │ │ │ +
51
│ │ │ │ +
53 template <typename Traits>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
55 std::vector<typename Traits::JacobianType> &out;
│ │ │ │ +
56 unsigned int row;
│ │ │ │ +
57#ifndef NDEBUG
│ │ │ │ +
58 unsigned int first_unused_index;
│ │ │ │ +
59#endif
│ │ │ │ +
60
│ │ │ │ +
61 public:
│ │ │ │ +
│ │ │ │ +
62 JacobianAccess(std::vector<typename Traits::JacobianType> &out_,
│ │ │ │ +
63 unsigned int row_)
│ │ │ │ +
64 : out(out_), row(row_)
│ │ │ │ +
65#ifndef NDEBUG
│ │ │ │ +
66 , first_unused_index(0)
│ │ │ │ +
67#endif
│ │ │ │ +
68 { }
│ │ │ │ +
│ │ │ │ +
69#ifndef NDEBUG
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
71 assert(first_unused_index == out.size());
│ │ │ │ +
72 }
│ │ │ │ +
│ │ │ │ +
73#endif
│ │ │ │ +
│ │ │ │ +
74 typename Traits::RangeFieldType &operator[](unsigned int index)
│ │ │ │ +
75 {
│ │ │ │ +
76 assert(index < out.size());
│ │ │ │ +
77#ifndef NDEBUG
│ │ │ │ +
78 if(first_unused_index <= index)
│ │ │ │ +
79 first_unused_index = index+1;
│ │ │ │ +
80#endif
│ │ │ │ +
81 return out[index][0][row];
│ │ │ │ +
82 }
│ │ │ │ +
│ │ │ │ +
83 };
│ │ │ │ +
│ │ │ │ +
84
│ │ │ │ +
97 template <typename Traits, int c>
│ │ │ │ +
│ │ │ │ +
98 struct Evaluate
│ │ │ │ +
99 {
│ │ │ │ +
101 constexpr static int d = Traits::dimDomain - c;
│ │ │ │ +
102
│ │ │ │ +
109 template <typename Access>
│ │ │ │ +
│ │ │ │ +
110 static void eval (
│ │ │ │ +
111 const typename Traits::DomainType &in,
│ │ │ │ +
114 const std::array<unsigned int, Traits::dimDomain> &derivatives,
│ │ │ │ +
117 typename Traits::RangeFieldType prod,
│ │ │ │ +
119 int bound,
│ │ │ │ +
121 int& index,
│ │ │ │ +
123 Access &access)
│ │ │ │ +
124 {
│ │ │ │ +
125 // start with the highest exponent for this dimension, then work down
│ │ │ │ +
126 for (int e = bound; e >= 0; --e)
│ │ │ │ +
127 {
│ │ │ │ +
128 // the rest of the available exponents, to be used by the other
│ │ │ │ +
129 // dimensions
│ │ │ │ +
130 int newbound = bound - e;
│ │ │ │ +
131 if(e < (int)derivatives[d])
│ │ │ │ + │ │ │ │ +
133 eval(in, derivatives, 0, newbound, index, access);
│ │ │ │ +
134 else {
│ │ │ │ +
135 int coeff = 1;
│ │ │ │ +
136 for(int i = e - derivatives[d] + 1; i <= e; ++i)
│ │ │ │ +
137 coeff *= i;
│ │ │ │ +
138 // call the evaluator for the next dimension
│ │ │ │ + │ │ │ │ +
140 eval( // pass the coordinate and the derivatives unchanged
│ │ │ │ +
141 in, derivatives,
│ │ │ │ +
142 // also pass the product accumulated so far, but also
│ │ │ │ +
143 // include the current dimension
│ │ │ │ +
144 prod * power(in[d], e-derivatives[d]) * coeff,
│ │ │ │ +
145 // pass the number of remaining exponents to the next
│ │ │ │ +
146 // dimension
│ │ │ │ +
147 newbound,
│ │ │ │ +
148 // pass the next index to fill and the output access
│ │ │ │ +
149 // wrapper
│ │ │ │ +
150 index, access);
│ │ │ │ +
151 }
│ │ │ │ +
152 }
│ │ │ │ +
153 }
│ │ │ │ +
│ │ │ │ +
154 };
│ │ │ │ +
│ │ │ │ +
155
│ │ │ │ +
160 template <typename Traits>
│ │ │ │ +
│ │ │ │ +
161 struct Evaluate<Traits, 1>
│ │ │ │ +
162 {
│ │ │ │ +
163 constexpr static int d = Traits::dimDomain-1;
│ │ │ │ +
165 template <typename Access>
│ │ │ │ +
│ │ │ │ +
166 static void eval (const typename Traits::DomainType &in,
│ │ │ │ +
167 const std::array<unsigned int, Traits::dimDomain> &derivatives,
│ │ │ │ +
168 typename Traits::RangeFieldType prod,
│ │ │ │ +
169 int bound, int& index, Access &access)
│ │ │ │ +
170 {
│ │ │ │ +
171 if(bound < (int)derivatives[d])
│ │ │ │ +
172 prod = 0;
│ │ │ │ +
173 else {
│ │ │ │ +
174 int coeff = 1;
│ │ │ │ +
175 for(int i = bound - derivatives[d] + 1; i <= bound; ++i)
│ │ │ │ +
176 coeff *= i;
│ │ │ │ +
177 prod *= power(in[d], bound-derivatives[d]) * coeff;
│ │ │ │ +
178 }
│ │ │ │ +
179 access[index] = prod;
│ │ │ │ +
180 ++index;
│ │ │ │ +
181 }
│ │ │ │ +
│ │ │ │ +
182 };
│ │ │ │ +
│ │ │ │ +
183
│ │ │ │ +
184 } //namespace MonomImp
│ │ │ │ +
│ │ │ │ +
185
│ │ │ │ +
200 template<class D, class R, unsigned int d, unsigned int p>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
202 {
│ │ │ │ +
203 // Helper: Number of shape functions for a k-th order element in dimension dd
│ │ │ │ +
204 static constexpr unsigned int size (int dd, int k)
│ │ │ │ +
205 {
│ │ │ │ +
206 if (dd==0 || k==0)
│ │ │ │ +
207 return 1;
│ │ │ │ +
208 return size(dd,k-1) + size(dd-1,k);
│ │ │ │ +
209 }
│ │ │ │ +
210
│ │ │ │ +
211 public:
│ │ │ │ +
213 typedef LocalBasisTraits<D,d,Dune::FieldVector<D,d>,R,1,Dune::FieldVector<R,1>,
│ │ │ │ +
214 Dune::FieldMatrix<R,1,d> > Traits;
│ │ │ │ +
215
│ │ │ │ +
│ │ │ │ +
217 static constexpr unsigned int size ()
│ │ │ │ +
218 {
│ │ │ │ +
219 return size(d,p);
│ │ │ │ +
220 }
│ │ │ │ +
│ │ │ │ +
221
│ │ │ │ +
│ │ │ │ +
223 inline void evaluateFunction (const typename Traits::DomainType& in,
│ │ │ │ +
224 std::vector<typename Traits::RangeType>& out) const
│ │ │ │ +
225 {
│ │ │ │ +
226 out.resize(size());
│ │ │ │ +
227 int index = 0;
│ │ │ │ +
228 std::array<unsigned int, d> derivatives;
│ │ │ │ +
229 std::fill(derivatives.begin(), derivatives.end(), 0);
│ │ │ │ + │ │ │ │ +
231 for (unsigned int lp = 0; lp <= p; ++lp)
│ │ │ │ +
232 MonomImp::Evaluate<Traits, d>::eval(in, derivatives, 1, lp, index, access);
│ │ │ │ +
233 }
│ │ │ │ +
│ │ │ │ +
234
│ │ │ │ +
│ │ │ │ +
240 inline void partial(const std::array<unsigned int,d>& order,
│ │ │ │ +
241 const typename Traits::DomainType& in,
│ │ │ │ +
242 std::vector<typename Traits::RangeType>& out) const
│ │ │ │ +
243 {
│ │ │ │ +
244 out.resize(size());
│ │ │ │ +
245 int index = 0;
│ │ │ │ + │ │ │ │ +
247 for (unsigned int lp = 0; lp <= p; ++lp)
│ │ │ │ +
248 MonomImp::Evaluate<Traits, d>::eval(in, order, 1, lp, index, access);
│ │ │ │ +
249 }
│ │ │ │ +
│ │ │ │ +
250
│ │ │ │ +
252 inline void
│ │ │ │ +
│ │ │ │ +
253 evaluateJacobian (const typename Traits::DomainType& in, // position
│ │ │ │ +
254 std::vector<typename Traits::JacobianType>& out) const // return value
│ │ │ │ +
255 {
│ │ │ │ +
256 out.resize(size());
│ │ │ │ +
257 std::array<unsigned int, d> derivatives;
│ │ │ │ +
258 for(unsigned int i = 0; i < d; ++i)
│ │ │ │ +
259 derivatives[i] = 0;
│ │ │ │ +
260 for(unsigned int i = 0; i < d; ++i)
│ │ │ │ +
261 {
│ │ │ │ +
262 derivatives[i] = 1;
│ │ │ │ +
263 int index = 0;
│ │ │ │ + │ │ │ │ +
265 for(unsigned int lp = 0; lp <= p; ++lp)
│ │ │ │ +
266 MonomImp::Evaluate<Traits, d>::eval(in, derivatives, 1, lp, index, access);
│ │ │ │ +
267 derivatives[i] = 0;
│ │ │ │ +
268 }
│ │ │ │ +
269 }
│ │ │ │ +
│ │ │ │ +
270
│ │ │ │ +
│ │ │ │ +
272 unsigned int order () const
│ │ │ │ +
273 {
│ │ │ │ +
274 return p;
│ │ │ │ +
275 }
│ │ │ │ +
│ │ │ │ +
276 };
│ │ │ │ +
│ │ │ │ +
277
│ │ │ │ +
278}
│ │ │ │ +
279
│ │ │ │ +
280#endif // DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
traits helper struct
Definition localfiniteelementtraits.hh:13
│ │ │ │ -
LB LocalBasisType
Definition localfiniteelementtraits.hh:16
│ │ │ │ -
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:20
│ │ │ │ -
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:24
│ │ │ │ +
Type traits for LocalBasisVirtualInterface.
Definition common/localbasis.hh:35
│ │ │ │ +
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │ +
Access output vector of evaluateFunction() and evaluate()
Definition monomiallocalbasis.hh:23
│ │ │ │ +
Traits::RangeFieldType & operator[](unsigned int index)
Definition monomiallocalbasis.hh:41
│ │ │ │ +
~EvalAccess()
Definition monomiallocalbasis.hh:37
│ │ │ │ +
EvalAccess(std::vector< typename Traits::RangeType > &out_)
Definition monomiallocalbasis.hh:30
│ │ │ │ +
Access output vector of evaluateJacobian()
Definition monomiallocalbasis.hh:54
│ │ │ │ +
~JacobianAccess()
Definition monomiallocalbasis.hh:70
│ │ │ │ +
Traits::RangeFieldType & operator[](unsigned int index)
Definition monomiallocalbasis.hh:74
│ │ │ │ +
JacobianAccess(std::vector< typename Traits::JacobianType > &out_, unsigned int row_)
Definition monomiallocalbasis.hh:62
│ │ │ │ +
Definition monomiallocalbasis.hh:99
│ │ │ │ +
static constexpr int d
The next dimension to try for factors.
Definition monomiallocalbasis.hh:101
│ │ │ │ +
static void eval(const typename Traits::DomainType &in, const std::array< unsigned int, Traits::dimDomain > &derivatives, typename Traits::RangeFieldType prod, int bound, int &index, Access &access)
Definition monomiallocalbasis.hh:110
│ │ │ │ +
static void eval(const typename Traits::DomainType &in, const std::array< unsigned int, Traits::dimDomain > &derivatives, typename Traits::RangeFieldType prod, int bound, int &index, Access &access)
Definition monomiallocalbasis.hh:166
│ │ │ │ +
Definition monomiallocalbasis.hh:202
│ │ │ │ +
unsigned int order() const
Polynomial order of the shape functions.
Definition monomiallocalbasis.hh:272
│ │ │ │ +
void partial(const std::array< unsigned int, d > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of any order of all shape functions.
Definition monomiallocalbasis.hh:240
│ │ │ │ +
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition monomiallocalbasis.hh:253
│ │ │ │ +
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition monomiallocalbasis.hh:223
│ │ │ │ +
LocalBasisTraits< D, d, Dune::FieldVector< D, d >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, d > > Traits
export type traits for function signature
Definition monomiallocalbasis.hh:214
│ │ │ │ +
static constexpr unsigned int size()
Number of shape functions.
Definition monomiallocalbasis.hh:217
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,48 +1,317 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ - * _c_o_m_m_o_n │ │ │ │ │ -localfiniteelementtraits.hh │ │ │ │ │ + * _m_o_n_o_m_i_a_l │ │ │ │ │ +monomiallocalbasis.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFINITEELEMENTTRAITS_HH │ │ │ │ │ -6#define DUNE_LOCALFINITEELEMENTTRAITS_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH │ │ │ │ │ 7 │ │ │ │ │ -8namespace _D_u_n_e { │ │ │ │ │ -9 │ │ │ │ │ -11 template │ │ │ │ │ -_1_2 struct _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s │ │ │ │ │ -13 { │ │ │ │ │ -_1_6 typedef LB _L_o_c_a_l_B_a_s_i_s_T_y_p_e; │ │ │ │ │ -17 │ │ │ │ │ -_2_0 typedef LC _L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e; │ │ │ │ │ -21 │ │ │ │ │ -_2_4 typedef LI _L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e; │ │ │ │ │ -25 }; │ │ │ │ │ -26 │ │ │ │ │ -27} │ │ │ │ │ +8#include │ │ │ │ │ +9#include │ │ │ │ │ +10#include │ │ │ │ │ +11 │ │ │ │ │ +12#include │ │ │ │ │ +13#include │ │ │ │ │ +14 │ │ │ │ │ +15#include "../common/localbasis.hh" │ │ │ │ │ +16 │ │ │ │ │ +17namespace _D_u_n_e │ │ │ │ │ +18{ │ │ │ │ │ +_1_9 namespace MonomImp │ │ │ │ │ +20 { │ │ │ │ │ +22 template │ │ │ │ │ +_2_3 class _E_v_a_l_A_c_c_e_s_s { │ │ │ │ │ +24 std::vector &out; │ │ │ │ │ +25#ifndef NDEBUG │ │ │ │ │ +26 unsigned int first_unused_index; │ │ │ │ │ +27#endif │ │ │ │ │ 28 │ │ │ │ │ -29#endif │ │ │ │ │ +29 public: │ │ │ │ │ +_3_0 _E_v_a_l_A_c_c_e_s_s(std::vector &out_) │ │ │ │ │ +31 : out(out_) │ │ │ │ │ +32#ifndef NDEBUG │ │ │ │ │ +33 , first_unused_index(0) │ │ │ │ │ +34#endif │ │ │ │ │ +35 { } │ │ │ │ │ +36#ifndef NDEBUG │ │ │ │ │ +_3_7 _~_E_v_a_l_A_c_c_e_s_s() { │ │ │ │ │ +38 assert(first_unused_index == out.size()); │ │ │ │ │ +39 } │ │ │ │ │ +40#endif │ │ │ │ │ +_4_1 typename Traits::RangeFieldType &_o_p_e_r_a_t_o_r_[_](unsigned int index) │ │ │ │ │ +42 { │ │ │ │ │ +43 assert(index < out.size()); │ │ │ │ │ +44#ifndef NDEBUG │ │ │ │ │ +45 if(first_unused_index <= index) │ │ │ │ │ +46 first_unused_index = index+1; │ │ │ │ │ +47#endif │ │ │ │ │ +48 return out[index][0]; │ │ │ │ │ +49 } │ │ │ │ │ +50 }; │ │ │ │ │ +51 │ │ │ │ │ +53 template │ │ │ │ │ +_5_4 class _J_a_c_o_b_i_a_n_A_c_c_e_s_s { │ │ │ │ │ +55 std::vector &out; │ │ │ │ │ +56 unsigned int row; │ │ │ │ │ +57#ifndef NDEBUG │ │ │ │ │ +58 unsigned int first_unused_index; │ │ │ │ │ +59#endif │ │ │ │ │ +60 │ │ │ │ │ +61 public: │ │ │ │ │ +_6_2 _J_a_c_o_b_i_a_n_A_c_c_e_s_s(std::vector &out_, │ │ │ │ │ +63 unsigned int row_) │ │ │ │ │ +64 : out(out_), row(row_) │ │ │ │ │ +65#ifndef NDEBUG │ │ │ │ │ +66 , first_unused_index(0) │ │ │ │ │ +67#endif │ │ │ │ │ +68 { } │ │ │ │ │ +69#ifndef NDEBUG │ │ │ │ │ +_7_0 _~_J_a_c_o_b_i_a_n_A_c_c_e_s_s() { │ │ │ │ │ +71 assert(first_unused_index == out.size()); │ │ │ │ │ +72 } │ │ │ │ │ +73#endif │ │ │ │ │ +_7_4 typename Traits::RangeFieldType &_o_p_e_r_a_t_o_r_[_](unsigned int index) │ │ │ │ │ +75 { │ │ │ │ │ +76 assert(index < out.size()); │ │ │ │ │ +77#ifndef NDEBUG │ │ │ │ │ +78 if(first_unused_index <= index) │ │ │ │ │ +79 first_unused_index = index+1; │ │ │ │ │ +80#endif │ │ │ │ │ +81 return out[index][0][row]; │ │ │ │ │ +82 } │ │ │ │ │ +83 }; │ │ │ │ │ +84 │ │ │ │ │ +97 template │ │ │ │ │ +_9_8 struct _E_v_a_l_u_a_t_e │ │ │ │ │ +99 { │ │ │ │ │ +_1_0_1 constexpr static int _d = Traits::dimDomain - c; │ │ │ │ │ +102 │ │ │ │ │ +109 template │ │ │ │ │ +_1_1_0 static void _e_v_a_l ( │ │ │ │ │ +111 const typename Traits::DomainType &in, │ │ │ │ │ +114 const std::array &derivatives, │ │ │ │ │ +117 typename Traits::RangeFieldType prod, │ │ │ │ │ +119 int bound, │ │ │ │ │ +121 int& index, │ │ │ │ │ +123 Access &access) │ │ │ │ │ +124 { │ │ │ │ │ +125 // start with the highest exponent for this dimension, then work down │ │ │ │ │ +126 for (int e = bound; e >= 0; --e) │ │ │ │ │ +127 { │ │ │ │ │ +128 // the rest of the available exponents, to be used by the other │ │ │ │ │ +129 // dimensions │ │ │ │ │ +130 int newbound = bound - e; │ │ │ │ │ +131 if(e < (int)derivatives[_d]) │ │ │ │ │ +132 _E_v_a_l_u_a_t_e_<_T_r_a_i_t_s_,_c_-_1_>_:_: │ │ │ │ │ +133_ _e_v_a_l(in, derivatives, 0, newbound, index, access); │ │ │ │ │ +134 else { │ │ │ │ │ +135 int coeff = 1; │ │ │ │ │ +136 for(int i = e - derivatives[_d] + 1; i <= e; ++i) │ │ │ │ │ +137 coeff *= i; │ │ │ │ │ +138 // call the evaluator for the next dimension │ │ │ │ │ +139 _E_v_a_l_u_a_t_e_<_T_r_a_i_t_s_,_c_-_1_>_:_: │ │ │ │ │ +140_ _e_v_a_l( // pass the coordinate and the derivatives unchanged │ │ │ │ │ +141 in, derivatives, │ │ │ │ │ +142 // also pass the product accumulated so far, but also │ │ │ │ │ +143 // include the current dimension │ │ │ │ │ +144 prod * power(in[_d], e-derivatives[_d]) * coeff, │ │ │ │ │ +145 // pass the number of remaining exponents to the next │ │ │ │ │ +146 // dimension │ │ │ │ │ +147 newbound, │ │ │ │ │ +148 // pass the next index to fill and the output access │ │ │ │ │ +149 // wrapper │ │ │ │ │ +150 index, access); │ │ │ │ │ +151 } │ │ │ │ │ +152 } │ │ │ │ │ +153 } │ │ │ │ │ +154 }; │ │ │ │ │ +155 │ │ │ │ │ +160 template │ │ │ │ │ +_1_6_1 struct _E_v_a_l_u_a_t_e │ │ │ │ │ +162 { │ │ │ │ │ +_1_6_3 constexpr static int _d = Traits::dimDomain-1; │ │ │ │ │ +165 template │ │ │ │ │ +_1_6_6 static void _e_v_a_l (const typename Traits::DomainType &in, │ │ │ │ │ +167 const std::array &derivatives, │ │ │ │ │ +168 typename Traits::RangeFieldType prod, │ │ │ │ │ +169 int bound, int& index, Access &access) │ │ │ │ │ +170 { │ │ │ │ │ +171 if(bound < (int)derivatives[_d]) │ │ │ │ │ +172 prod = 0; │ │ │ │ │ +173 else { │ │ │ │ │ +174 int coeff = 1; │ │ │ │ │ +175 for(int i = bound - derivatives[_d] + 1; i <= bound; ++i) │ │ │ │ │ +176 coeff *= i; │ │ │ │ │ +177 prod *= power(in[_d], bound-derivatives[_d]) * coeff; │ │ │ │ │ +178 } │ │ │ │ │ +179 access[index] = prod; │ │ │ │ │ +180 ++index; │ │ │ │ │ +181 } │ │ │ │ │ +182 }; │ │ │ │ │ +183 │ │ │ │ │ +184 } //namespace MonomImp │ │ │ │ │ +185 │ │ │ │ │ +200 template │ │ │ │ │ +_2_0_1 class _M_o_n_o_m_i_a_l_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +202 { │ │ │ │ │ +203 // Helper: Number of shape functions for a k-th order element in dimension │ │ │ │ │ +dd │ │ │ │ │ +204 static constexpr unsigned int _s_i_z_e (int dd, int k) │ │ │ │ │ +205 { │ │ │ │ │ +206 if (dd==0 || k==0) │ │ │ │ │ +207 return 1; │ │ │ │ │ +208 return _s_i_z_e(dd,k-1) + _s_i_z_e(dd-1,k); │ │ │ │ │ +209 } │ │ │ │ │ +210 │ │ │ │ │ +211 public: │ │ │ │ │ +213 typedef _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_<_D_,_d_,_D_u_n_e_:_:_F_i_e_l_d_V_e_c_t_o_r_<_D_,_d_>,R,1,Dune:: │ │ │ │ │ +FieldVector, │ │ │ │ │ +_2_1_4 Dune::FieldMatrix > _T_r_a_i_t_s; │ │ │ │ │ +215 │ │ │ │ │ +_2_1_7 static constexpr unsigned int _s_i_z_e () │ │ │ │ │ +218 { │ │ │ │ │ +219 return _s_i_z_e(d,p); │ │ │ │ │ +220 } │ │ │ │ │ +221 │ │ │ │ │ +_2_2_3 inline void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n (const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ +224 std::vector& out) const │ │ │ │ │ +225 { │ │ │ │ │ +226 out.resize(_s_i_z_e()); │ │ │ │ │ +227 int index = 0; │ │ │ │ │ +228 std::array derivatives; │ │ │ │ │ +229 std::fill(derivatives.begin(), derivatives.end(), 0); │ │ │ │ │ +230 _M_o_n_o_m_I_m_p_:_:_E_v_a_l_A_c_c_e_s_s_<_T_r_a_i_t_s_> access(out); │ │ │ │ │ +231 for (unsigned int lp = 0; lp <= p; ++lp) │ │ │ │ │ +232 _M_o_n_o_m_I_m_p_:_:_E_v_a_l_u_a_t_e_<_T_r_a_i_t_s_,_ _d_>_:_:_e_v_a_l(in, derivatives, 1, lp, index, access); │ │ │ │ │ +233 } │ │ │ │ │ +234 │ │ │ │ │ +_2_4_0 inline void _p_a_r_t_i_a_l(const std::array& _o_r_d_e_r, │ │ │ │ │ +241 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ +242 std::vector& out) const │ │ │ │ │ +243 { │ │ │ │ │ +244 out.resize(_s_i_z_e()); │ │ │ │ │ +245 int index = 0; │ │ │ │ │ +246 _M_o_n_o_m_I_m_p_:_:_E_v_a_l_A_c_c_e_s_s_<_T_r_a_i_t_s_> access(out); │ │ │ │ │ +247 for (unsigned int lp = 0; lp <= p; ++lp) │ │ │ │ │ +248 _M_o_n_o_m_I_m_p_:_:_E_v_a_l_u_a_t_e_<_T_r_a_i_t_s_,_ _d_>_:_:_e_v_a_l(in, _o_r_d_e_r, 1, lp, index, access); │ │ │ │ │ +249 } │ │ │ │ │ +250 │ │ │ │ │ +252 inline void │ │ │ │ │ +_2_5_3 _e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n (const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, // position │ │ │ │ │ +254 std::vector& out) const // return value │ │ │ │ │ +255 { │ │ │ │ │ +256 out.resize(_s_i_z_e()); │ │ │ │ │ +257 std::array derivatives; │ │ │ │ │ +258 for(unsigned int i = 0; i < d; ++i) │ │ │ │ │ +259 derivatives[i] = 0; │ │ │ │ │ +260 for(unsigned int i = 0; i < d; ++i) │ │ │ │ │ +261 { │ │ │ │ │ +262 derivatives[i] = 1; │ │ │ │ │ +263 int index = 0; │ │ │ │ │ +264 _M_o_n_o_m_I_m_p_:_:_J_a_c_o_b_i_a_n_A_c_c_e_s_s_<_T_r_a_i_t_s_> access(out, i); │ │ │ │ │ +265 for(unsigned int lp = 0; lp <= p; ++lp) │ │ │ │ │ +266 _M_o_n_o_m_I_m_p_:_:_E_v_a_l_u_a_t_e_<_T_r_a_i_t_s_,_ _d_>_:_:_e_v_a_l(in, derivatives, 1, lp, index, access); │ │ │ │ │ +267 derivatives[i] = 0; │ │ │ │ │ +268 } │ │ │ │ │ +269 } │ │ │ │ │ +270 │ │ │ │ │ +_2_7_2 unsigned int _o_r_d_e_r () const │ │ │ │ │ +273 { │ │ │ │ │ +274 return p; │ │ │ │ │ +275 } │ │ │ │ │ +276 }; │ │ │ │ │ +277 │ │ │ │ │ +278} │ │ │ │ │ +279 │ │ │ │ │ +280#endif // DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s │ │ │ │ │ -traits helper struct │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:13 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e │ │ │ │ │ -LB LocalBasisType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:16 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e │ │ │ │ │ -LC LocalCoefficientsType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:20 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e │ │ │ │ │ -LI LocalInterpolationType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:24 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s │ │ │ │ │ +Type traits for LocalBasisVirtualInterface. │ │ │ │ │ +DDeeffiinniittiioonn common/localbasis.hh:35 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e │ │ │ │ │ +D DomainType │ │ │ │ │ +domain type │ │ │ │ │ +DDeeffiinniittiioonn common/localbasis.hh:43 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_E_v_a_l_A_c_c_e_s_s │ │ │ │ │ +Access output vector of evaluateFunction() and evaluate() │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:23 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_E_v_a_l_A_c_c_e_s_s_:_:_o_p_e_r_a_t_o_r_[_] │ │ │ │ │ +Traits::RangeFieldType & operator[](unsigned int index) │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:41 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_E_v_a_l_A_c_c_e_s_s_:_:_~_E_v_a_l_A_c_c_e_s_s │ │ │ │ │ +~EvalAccess() │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:37 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_E_v_a_l_A_c_c_e_s_s_:_:_E_v_a_l_A_c_c_e_s_s │ │ │ │ │ +EvalAccess(std::vector< typename Traits::RangeType > &out_) │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:30 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_J_a_c_o_b_i_a_n_A_c_c_e_s_s │ │ │ │ │ +Access output vector of evaluateJacobian() │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:54 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_J_a_c_o_b_i_a_n_A_c_c_e_s_s_:_:_~_J_a_c_o_b_i_a_n_A_c_c_e_s_s │ │ │ │ │ +~JacobianAccess() │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:70 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_J_a_c_o_b_i_a_n_A_c_c_e_s_s_:_:_o_p_e_r_a_t_o_r_[_] │ │ │ │ │ +Traits::RangeFieldType & operator[](unsigned int index) │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:74 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_J_a_c_o_b_i_a_n_A_c_c_e_s_s_:_:_J_a_c_o_b_i_a_n_A_c_c_e_s_s │ │ │ │ │ +JacobianAccess(std::vector< typename Traits::JacobianType > &out_, unsigned int │ │ │ │ │ +row_) │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:62 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_E_v_a_l_u_a_t_e │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:99 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_E_v_a_l_u_a_t_e_:_:_d │ │ │ │ │ +static constexpr int d │ │ │ │ │ +The next dimension to try for factors. │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:101 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_E_v_a_l_u_a_t_e_:_:_e_v_a_l │ │ │ │ │ +static void eval(const typename Traits::DomainType &in, const std::array< │ │ │ │ │ +unsigned int, Traits::dimDomain > &derivatives, typename Traits::RangeFieldType │ │ │ │ │ +prod, int bound, int &index, Access &access) │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:110 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_I_m_p_:_:_E_v_a_l_u_a_t_e_<_ _T_r_a_i_t_s_,_ _1_ _>_:_:_e_v_a_l │ │ │ │ │ +static void eval(const typename Traits::DomainType &in, const std::array< │ │ │ │ │ +unsigned int, Traits::dimDomain > &derivatives, typename Traits::RangeFieldType │ │ │ │ │ +prod, int bound, int &index, Access &access) │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:166 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:202 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_B_a_s_i_s_:_:_o_r_d_e_r │ │ │ │ │ +unsigned int order() const │ │ │ │ │ +Polynomial order of the shape functions. │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:272 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_B_a_s_i_s_:_:_p_a_r_t_i_a_l │ │ │ │ │ +void partial(const std::array< unsigned int, d > &order, const typename │ │ │ │ │ +Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const │ │ │ │ │ +Evaluate partial derivatives of any order of all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:240 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n │ │ │ │ │ +void evaluateJacobian(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ +typename Traits::JacobianType > &out) const │ │ │ │ │ +Evaluate Jacobian of all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:253 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n │ │ │ │ │ +void evaluateFunction(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ +typename Traits::RangeType > &out) const │ │ │ │ │ +Evaluate all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:223 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_B_a_s_i_s_:_:_T_r_a_i_t_s │ │ │ │ │ +LocalBasisTraits< D, d, Dune::FieldVector< D, d >, R, 1, Dune::FieldVector< R, │ │ │ │ │ +1 >, Dune::FieldMatrix< R, 1, d > > Traits │ │ │ │ │ +export type traits for function signature │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:214 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_B_a_s_i_s_:_:_s_i_z_e │ │ │ │ │ +static constexpr unsigned int size() │ │ │ │ │ +Number of shape functions. │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalbasis.hh:217 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00041.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: virtualinterface.hh File Reference │ │ │ │ +dune-localfunctions: monomiallocalinterpolation.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,51 +65,35 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
virtualinterface.hh File Reference
│ │ │ │ +
monomiallocalinterpolation.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <type_traits>
│ │ │ │ -#include <array>
│ │ │ │ -#include <vector>
│ │ │ │ -#include <functional>
│ │ │ │ +
#include <vector>
│ │ │ │ +#include <dune/common/fvector.hh>
│ │ │ │ +#include <dune/common/fmatrix.hh>
│ │ │ │ #include <dune/geometry/type.hh>
│ │ │ │ -#include <dune/localfunctions/common/localbasis.hh>
│ │ │ │ -#include <dune/localfunctions/common/localkey.hh>
│ │ │ │ -#include <dune/localfunctions/common/localfiniteelementtraits.hh>
│ │ │ │ +#include <dune/geometry/quadraturerules.hh>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::LocalBasisVirtualInterface< T >
 virtual base class for a local basis More...
 
class  Dune::LocalInterpolationVirtualInterfaceBase< DomainType, RangeType >
 virtual base class for a local interpolation More...
 
class  Dune::LocalInterpolationVirtualInterface< DomainType, RangeType >
 virtual base class for a local interpolation More...
 
class  Dune::LocalCoefficientsVirtualInterface
 virtual base class for local coefficients More...
 
class  Dune::LocalFiniteElementVirtualInterface< T >
 virtual base class for local finite elements with functions More...
class  Dune::MonomialLocalInterpolation< LB, size >
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,39 +1,23 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ - * _c_o_m_m_o_n │ │ │ │ │ + * _m_o_n_o_m_i_a_l │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -virtualinterface.hh File Reference │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ +monomiallocalinterpolation.hh File Reference │ │ │ │ │ #include │ │ │ │ │ -#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ #include │ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h> │ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h> │ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h> │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_<_ _T_ _> │ │ │ │ │ -  virtual base class for a local basis _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -class   _D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_B_a_s_e_<_ _D_o_m_a_i_n_T_y_p_e_,_ _R_a_n_g_e_T_y_p_e_ _> │ │ │ │ │ -  virtual base class for a local interpolation _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -class   _D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_<_ _D_o_m_a_i_n_T_y_p_e_,_ _R_a_n_g_e_T_y_p_e_ _> │ │ │ │ │ -  virtual base class for a local interpolation _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -class   _D_u_n_e_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -  virtual base class for local coefficients _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -class   _D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_<_ _T_ _> │ │ │ │ │ -  virtual base class for local finite elements with functions _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_ _L_B_,_ _s_i_z_e_ _> │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00041_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: virtualinterface.hh Source File │ │ │ │ +dune-localfunctions: monomiallocalinterpolation.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,244 +70,114 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
virtualinterface.hh
│ │ │ │ +
monomiallocalinterpolation.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH
│ │ │ │
7
│ │ │ │ -
8#include <type_traits>
│ │ │ │ -
9#include <array>
│ │ │ │ -
10#include <vector>
│ │ │ │ -
11#include <functional>
│ │ │ │ +
8#include <vector>
│ │ │ │ +
9
│ │ │ │ +
10#include <dune/common/fvector.hh>
│ │ │ │ +
11#include <dune/common/fmatrix.hh>
│ │ │ │
12
│ │ │ │
13#include <dune/geometry/type.hh>
│ │ │ │ -
14
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ +
14#include <dune/geometry/quadraturerules.hh>
│ │ │ │ +
15
│ │ │ │ +
16namespace Dune
│ │ │ │ +
17{
│ │ │ │
18
│ │ │ │ -
19namespace Dune
│ │ │ │ -
20{
│ │ │ │ -
21
│ │ │ │ -
22 // forward declaration needed by the helper traits
│ │ │ │ -
23 template<class DomainType, class RangeType>
│ │ │ │ -
24 class LocalInterpolationVirtualInterface;
│ │ │ │ -
25
│ │ │ │ -
26
│ │ │ │ -
27
│ │ │ │ -
28 // -----------------------------------------------------------------
│ │ │ │ -
29 // Basis
│ │ │ │ -
30 // -----------------------------------------------------------------
│ │ │ │ -
31
│ │ │ │ -
38 template<class T>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
40 {
│ │ │ │ -
41 public:
│ │ │ │ -
42 using Traits = T;
│ │ │ │ -
43
│ │ │ │ +
22 template<class LB, unsigned int size>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
24 {
│ │ │ │ +
25 typedef typename LB::Traits::DomainType D;
│ │ │ │ +
26 typedef typename LB::Traits::DomainFieldType DF;
│ │ │ │ +
27 static const int dimD=LB::Traits::dimDomain;
│ │ │ │ +
28 typedef typename LB::Traits::RangeType R;
│ │ │ │ +
29 typedef typename LB::Traits::RangeFieldType RF;
│ │ │ │ +
30
│ │ │ │ +
31 typedef QuadratureRule<DF,dimD> QR;
│ │ │ │ +
32 typedef typename QR::iterator QRiterator;
│ │ │ │ +
33
│ │ │ │ +
34 public:
│ │ │ │ +
│ │ │ │ +
35 MonomialLocalInterpolation (const GeometryType &gt_,
│ │ │ │ +
36 const LB &lb_)
│ │ │ │ +
37 : gt(gt_), lb(lb_), Minv(0)
│ │ │ │ +
38 , qr(QuadratureRules<DF,dimD>::rule(gt, 2*lb.order()))
│ │ │ │ +
39 {
│ │ │ │ +
40 // Compute inverse of the mass matrix of the local basis, and store it in Minv
│ │ │ │ +
41 if(size != lb.size())
│ │ │ │ +
42 DUNE_THROW(Exception, "size template parameter does not match size of "
│ │ │ │ +
43 "local basis");
│ │ │ │
44
│ │ │ │ - │ │ │ │ -
46
│ │ │ │ -
48 virtual unsigned int size () const = 0;
│ │ │ │ +
45 const QRiterator qrend = qr.end();
│ │ │ │ +
46 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {
│ │ │ │ +
47 std::vector<R> base;
│ │ │ │ +
48 lb.evaluateFunction(qrit->position(),base);
│ │ │ │
49
│ │ │ │ -
51 virtual unsigned int order () const = 0;
│ │ │ │ -
52
│ │ │ │ -
58 virtual void evaluateFunction (const typename Traits::DomainType& in,
│ │ │ │ -
59 std::vector<typename Traits::RangeType>& out) const = 0;
│ │ │ │ -
60
│ │ │ │ -
69 virtual void evaluateJacobian(const typename Traits::DomainType& in, // position
│ │ │ │ -
70 std::vector<typename Traits::JacobianType>& out) const = 0;
│ │ │ │ -
71
│ │ │ │ -
77 virtual void partial(const std::array<unsigned int,Traits::dimDomain>& order,
│ │ │ │ -
78 const typename Traits::DomainType& in,
│ │ │ │ -
79 std::vector<typename Traits::RangeType>& out) const = 0;
│ │ │ │ -
80 };
│ │ │ │ +
50 for(unsigned int i = 0; i < size; ++i)
│ │ │ │ +
51 for(unsigned int j = 0; j < size; ++j)
│ │ │ │ +
52 Minv[i][j] += qrit->weight() * base[i] * base[j];
│ │ │ │ +
53 }
│ │ │ │ +
54 Minv.invert();
│ │ │ │ +
55 }
│ │ │ │ +
│ │ │ │ +
56
│ │ │ │ +
64 template<typename F, typename C>
│ │ │ │ +
│ │ │ │ +
65 void interpolate (const F& f, std::vector<C>& out) const
│ │ │ │ +
66 {
│ │ │ │ +
67 out.clear();
│ │ │ │ +
68 out.resize(size, 0);
│ │ │ │ +
69
│ │ │ │ +
70 const QRiterator qrend = qr.end();
│ │ │ │ +
71 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {
│ │ │ │ +
72 //TODO: mass matrix
│ │ │ │ +
73 R y = f(qrit->position());
│ │ │ │ +
74
│ │ │ │ +
75 std::vector<R> base;
│ │ │ │ +
76 lb.evaluateFunction(qrit->position(),base);
│ │ │ │ +
77
│ │ │ │ +
78 for(unsigned int i = 0; i < size; ++i)
│ │ │ │ +
79 for(unsigned int j = 0; j < size; ++j)
│ │ │ │ +
80 out[i] += Minv[i][j] * qrit->weight() * y * base[j];
│ │ │ │ +
81 }
│ │ │ │ +
82 }
│ │ │ │
│ │ │ │ -
81
│ │ │ │ -
82
│ │ │ │
83
│ │ │ │ -
84 // -----------------------------------------------------------------
│ │ │ │ -
85 // Interpolation
│ │ │ │ -
86 // -----------------------------------------------------------------
│ │ │ │ -
87
│ │ │ │ -
100 template<class DomainType, class RangeType>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
102 {
│ │ │ │ -
103 public:
│ │ │ │ -
104
│ │ │ │ -
106 using FunctionType = std::function<RangeType(DomainType)>;
│ │ │ │ -
107
│ │ │ │ -
109 typedef typename RangeType::field_type CoefficientType;
│ │ │ │ -
110
│ │ │ │ - │ │ │ │ -
112
│ │ │ │ -
120 virtual void interpolate (const FunctionType& f, std::vector<CoefficientType>& out) const = 0;
│ │ │ │ -
121 };
│ │ │ │ -
│ │ │ │ -
122
│ │ │ │ -
130 template<class DomainType, class RangeType>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
132 : public LocalInterpolationVirtualInterfaceBase<DomainType, RangeType>
│ │ │ │ -
133 {
│ │ │ │ -
134 public:
│ │ │ │ -
135
│ │ │ │ -
137 using FunctionType = std::function<RangeType(DomainType)>;
│ │ │ │ -
138
│ │ │ │ -
140 typedef typename RangeType::field_type CoefficientType;
│ │ │ │ -
141
│ │ │ │ -
142
│ │ │ │ - │ │ │ │ -
144
│ │ │ │ -
145 // This method is only noted again for to make the documentation complete.
│ │ │ │ -
146
│ │ │ │ -
154 virtual void interpolate (const FunctionType& f, std::vector<CoefficientType>& out) const = 0;
│ │ │ │ -
155
│ │ │ │ -
161 template<class F,
│ │ │ │ -
162 std::enable_if_t<not std::is_base_of<FunctionType, F>::value, int> = 0>
│ │ │ │ -
│ │ │ │ -
163 void interpolate (const F& f, std::vector<CoefficientType>& out) const
│ │ │ │ -
164 {
│ │ │ │ - │ │ │ │ -
166 asBase.interpolate(FunctionType(std::cref(f)),out);
│ │ │ │ -
167 }
│ │ │ │ -
│ │ │ │ -
168
│ │ │ │ -
174 template<class F, class C>
│ │ │ │ -
│ │ │ │ -
175 void interpolate (const F& f, std::vector<C>& out) const
│ │ │ │ -
176 {
│ │ │ │ -
177 std::vector<CoefficientType> outDummy;
│ │ │ │ - │ │ │ │ -
179 asBase.interpolate(FunctionType(std::cref(f)),outDummy);
│ │ │ │ -
180 out.resize(outDummy.size());
│ │ │ │ -
181 for(typename std::vector<CoefficientType>::size_type i=0; i<outDummy.size(); ++i)
│ │ │ │ -
182 out[i] = outDummy[i];
│ │ │ │ -
183 }
│ │ │ │ -
│ │ │ │ -
184 };
│ │ │ │ -
│ │ │ │ -
185
│ │ │ │ -
186
│ │ │ │ -
187
│ │ │ │ -
188 // -----------------------------------------------------------------
│ │ │ │ -
189 // Coefficients
│ │ │ │ -
190 // -----------------------------------------------------------------
│ │ │ │ -
191
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
198 {
│ │ │ │ -
199 public:
│ │ │ │ -
200
│ │ │ │ - │ │ │ │ -
202
│ │ │ │ -
204 virtual std::size_t size () const = 0;
│ │ │ │ -
205
│ │ │ │ -
207 const virtual LocalKey& localKey (std::size_t i) const = 0;
│ │ │ │ -
208
│ │ │ │ -
209 };
│ │ │ │ -
│ │ │ │ -
210
│ │ │ │ -
211
│ │ │ │ -
212
│ │ │ │ -
213 // -----------------------------------------------------------------
│ │ │ │ -
214 // Finite Element
│ │ │ │ -
215 // -----------------------------------------------------------------
│ │ │ │ -
216
│ │ │ │ -
217
│ │ │ │ -
223 template<class T>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
225 {
│ │ │ │ -
226 using LocalBasisTraits = T;
│ │ │ │ -
227 public:
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
234
│ │ │ │ - │ │ │ │ -
236
│ │ │ │ -
238 virtual const typename Traits::LocalBasisType& localBasis () const = 0;
│ │ │ │ -
239
│ │ │ │ -
241 virtual const typename Traits::LocalCoefficientsType& localCoefficients () const = 0;
│ │ │ │ -
242
│ │ │ │ -
244 virtual const typename Traits::LocalInterpolationType& localInterpolation () const = 0;
│ │ │ │ -
245
│ │ │ │ -
247 virtual unsigned int size () const = 0;
│ │ │ │ -
248
│ │ │ │ -
250 virtual const GeometryType type () const = 0;
│ │ │ │ -
251
│ │ │ │ - │ │ │ │ -
253 };
│ │ │ │ -
│ │ │ │ -
254}
│ │ │ │ -
255#endif
│ │ │ │ - │ │ │ │ - │ │ │ │ +
84 private:
│ │ │ │ +
85 GeometryType gt;
│ │ │ │ +
86 const LB &lb;
│ │ │ │ +
87 FieldMatrix<RF, size, size> Minv;
│ │ │ │ +
88 const QR &qr;
│ │ │ │ +
89 };
│ │ │ │ +
│ │ │ │ +
90
│ │ │ │ +
91}
│ │ │ │ +
92
│ │ │ │ +
93#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │ -
R RangeType
range type
Definition common/localbasis.hh:52
│ │ │ │ -
traits helper struct
Definition localfiniteelementtraits.hh:13
│ │ │ │ -
LB LocalBasisType
Definition localfiniteelementtraits.hh:16
│ │ │ │ -
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:20
│ │ │ │ -
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:24
│ │ │ │ -
Describe position of one degree of freedom.
Definition localkey.hh:24
│ │ │ │ -
virtual base class for a local interpolation
Definition virtualinterface.hh:133
│ │ │ │ -
virtual ~LocalInterpolationVirtualInterface()
Definition virtualinterface.hh:143
│ │ │ │ -
std::function< RangeType(DomainType)> FunctionType
type of function to interpolate
Definition virtualinterface.hh:137
│ │ │ │ -
void interpolate(const F &f, std::vector< C > &out) const
determine coefficients interpolating a given function
Definition virtualinterface.hh:175
│ │ │ │ -
RangeType::field_type CoefficientType
type of the coefficient vector in the interpolate method
Definition virtualinterface.hh:140
│ │ │ │ -
virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const =0
determine coefficients interpolating a given function
│ │ │ │ -
void interpolate(const F &f, std::vector< CoefficientType > &out) const
determine coefficients interpolating a given function
Definition virtualinterface.hh:163
│ │ │ │ -
virtual base class for a local basis
Definition virtualinterface.hh:40
│ │ │ │ -
virtual unsigned int order() const =0
Polynomial order of the shape functions.
│ │ │ │ -
virtual void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const =0
Evaluate jacobian of all shape functions at given position.
│ │ │ │ -
virtual unsigned int size() const =0
Number of shape functions.
│ │ │ │ -
T Traits
Definition virtualinterface.hh:42
│ │ │ │ -
virtual void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const =0
Evaluate all basis function at given position.
│ │ │ │ -
virtual ~LocalBasisVirtualInterface()
Definition virtualinterface.hh:45
│ │ │ │ -
virtual void partial(const std::array< unsigned int, Traits::dimDomain > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const =0
Evaluate partial derivatives of any order of all shape functions.
│ │ │ │ -
virtual base class for a local interpolation
Definition virtualinterface.hh:102
│ │ │ │ -
std::function< RangeType(DomainType)> FunctionType
type of function to interpolate
Definition virtualinterface.hh:106
│ │ │ │ -
RangeType::field_type CoefficientType
type of the coefficient vector in the interpolate method
Definition virtualinterface.hh:109
│ │ │ │ -
virtual ~LocalInterpolationVirtualInterfaceBase()
Definition virtualinterface.hh:111
│ │ │ │ -
virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const =0
determine coefficients interpolating a given function
│ │ │ │ -
virtual base class for local coefficients
Definition virtualinterface.hh:198
│ │ │ │ -
virtual ~LocalCoefficientsVirtualInterface()
Definition virtualinterface.hh:201
│ │ │ │ -
virtual std::size_t size() const =0
number of coefficients
│ │ │ │ -
virtual const LocalKey & localKey(std::size_t i) const =0
get i'th index
│ │ │ │ -
virtual base class for local finite elements with functions
Definition virtualinterface.hh:225
│ │ │ │ -
virtual LocalFiniteElementVirtualInterface< T > * clone() const =0
│ │ │ │ -
virtual const Traits::LocalInterpolationType & localInterpolation() const =0
│ │ │ │ -
virtual unsigned int size() const =0
│ │ │ │ -
virtual const Traits::LocalBasisType & localBasis() const =0
│ │ │ │ -
virtual const GeometryType type() const =0
│ │ │ │ -
LocalFiniteElementTraits< LocalBasisVirtualInterface< LocalBasisTraits >, LocalCoefficientsVirtualInterface, LocalInterpolationVirtualInterface< typename LocalBasisTraits::DomainType, typename LocalBasisTraits::RangeType > > Traits
Definition virtualinterface.hh:233
│ │ │ │ -
virtual ~LocalFiniteElementVirtualInterface()
Definition virtualinterface.hh:235
│ │ │ │ -
virtual const Traits::LocalCoefficientsType & localCoefficients() const =0
│ │ │ │ - │ │ │ │ +
Definition monomiallocalinterpolation.hh:24
│ │ │ │ +
void interpolate(const F &f, std::vector< C > &out) const
Determine coefficients interpolating a given function.
Definition monomiallocalinterpolation.hh:65
│ │ │ │ +
MonomialLocalInterpolation(const GeometryType &gt_, const LB &lb_)
Definition monomiallocalinterpolation.hh:35
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,322 +1,107 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ - * _c_o_m_m_o_n │ │ │ │ │ -virtualinterface.hh │ │ │ │ │ + * _m_o_n_o_m_i_a_l │ │ │ │ │ +monomiallocalinterpolation.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ -9#include │ │ │ │ │ -10#include │ │ │ │ │ -11#include │ │ │ │ │ +8#include │ │ │ │ │ +9 │ │ │ │ │ +10#include │ │ │ │ │ +11#include │ │ │ │ │ 12 │ │ │ │ │ 13#include │ │ │ │ │ -14 │ │ │ │ │ -15#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h> │ │ │ │ │ -16#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h> │ │ │ │ │ -17#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h> │ │ │ │ │ +14#include │ │ │ │ │ +15 │ │ │ │ │ +16namespace _D_u_n_e │ │ │ │ │ +17{ │ │ │ │ │ 18 │ │ │ │ │ -19namespace _D_u_n_e │ │ │ │ │ -20{ │ │ │ │ │ -21 │ │ │ │ │ -22 // forward declaration needed by the helper traits │ │ │ │ │ -23 template │ │ │ │ │ -24 class LocalInterpolationVirtualInterface; │ │ │ │ │ -25 │ │ │ │ │ -26 │ │ │ │ │ -27 │ │ │ │ │ -28 // ----------------------------------------------------------------- │ │ │ │ │ -29 // Basis │ │ │ │ │ -30 // ----------------------------------------------------------------- │ │ │ │ │ -31 │ │ │ │ │ -38 template │ │ │ │ │ -_3_9 class _L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -40 { │ │ │ │ │ -41 public: │ │ │ │ │ -_4_2 using _T_r_a_i_t_s = T; │ │ │ │ │ -43 │ │ │ │ │ +22 template │ │ │ │ │ +_2_3 class _M_o_n_o_m_i_a_l_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +24 { │ │ │ │ │ +25 typedef typename LB::Traits::DomainType D; │ │ │ │ │ +26 typedef typename LB::Traits::DomainFieldType DF; │ │ │ │ │ +27 static const int dimD=LB::Traits::dimDomain; │ │ │ │ │ +28 typedef typename LB::Traits::RangeType R; │ │ │ │ │ +29 typedef typename LB::Traits::RangeFieldType RF; │ │ │ │ │ +30 │ │ │ │ │ +31 typedef QuadratureRule QR; │ │ │ │ │ +32 typedef typename QR::iterator QRiterator; │ │ │ │ │ +33 │ │ │ │ │ +34 public: │ │ │ │ │ +_3_5 _M_o_n_o_m_i_a_l_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n (const GeometryType >_, │ │ │ │ │ +36 const LB &lb_) │ │ │ │ │ +37 : gt(gt_), lb(lb_), Minv(0) │ │ │ │ │ +38 , qr(QuadratureRules::rule(gt, 2*lb.order())) │ │ │ │ │ +39 { │ │ │ │ │ +40 // Compute inverse of the mass matrix of the local basis, and store it in │ │ │ │ │ +Minv │ │ │ │ │ +41 if(size != lb.size()) │ │ │ │ │ +42 DUNE_THROW(Exception, "size template parameter does not match size of " │ │ │ │ │ +43 "local basis"); │ │ │ │ │ 44 │ │ │ │ │ -_4_5 virtual _~_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e() {} │ │ │ │ │ -46 │ │ │ │ │ -_4_8 virtual unsigned int _s_i_z_e () const = 0; │ │ │ │ │ +45 const QRiterator qrend = qr.end(); │ │ │ │ │ +46 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) { │ │ │ │ │ +47 std::vector base; │ │ │ │ │ +48 lb.evaluateFunction(qrit->position(),base); │ │ │ │ │ 49 │ │ │ │ │ -_5_1 virtual unsigned int _o_r_d_e_r () const = 0; │ │ │ │ │ -52 │ │ │ │ │ -_5_8 virtual void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n (const typename Traits::DomainType& in, │ │ │ │ │ -59 std::vector& out) const = 0; │ │ │ │ │ -60 │ │ │ │ │ -_6_9 virtual void _e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n(const typename Traits::DomainType& in, / │ │ │ │ │ -/ position │ │ │ │ │ -70 std::vector& out) const = 0; │ │ │ │ │ -71 │ │ │ │ │ -_7_7 virtual void _p_a_r_t_i_a_l(const std::array& │ │ │ │ │ -_o_r_d_e_r, │ │ │ │ │ -78 const typename Traits::DomainType& in, │ │ │ │ │ -79 std::vector& out) const = 0; │ │ │ │ │ -80 }; │ │ │ │ │ -81 │ │ │ │ │ -82 │ │ │ │ │ +50 for(unsigned int i = 0; i < size; ++i) │ │ │ │ │ +51 for(unsigned int j = 0; j < size; ++j) │ │ │ │ │ +52 Minv[i][j] += qrit->weight() * base[i] * base[j]; │ │ │ │ │ +53 } │ │ │ │ │ +54 Minv.invert(); │ │ │ │ │ +55 } │ │ │ │ │ +56 │ │ │ │ │ +64 template │ │ │ │ │ +_6_5 void _i_n_t_e_r_p_o_l_a_t_e (const F& f, std::vector& out) const │ │ │ │ │ +66 { │ │ │ │ │ +67 out.clear(); │ │ │ │ │ +68 out.resize(size, 0); │ │ │ │ │ +69 │ │ │ │ │ +70 const QRiterator qrend = qr.end(); │ │ │ │ │ +71 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) { │ │ │ │ │ +72 //TODO: mass matrix │ │ │ │ │ +73 R y = f(qrit->position()); │ │ │ │ │ +74 │ │ │ │ │ +75 std::vector base; │ │ │ │ │ +76 lb.evaluateFunction(qrit->position(),base); │ │ │ │ │ +77 │ │ │ │ │ +78 for(unsigned int i = 0; i < size; ++i) │ │ │ │ │ +79 for(unsigned int j = 0; j < size; ++j) │ │ │ │ │ +80 out[i] += Minv[i][j] * qrit->weight() * y * base[j]; │ │ │ │ │ +81 } │ │ │ │ │ +82 } │ │ │ │ │ 83 │ │ │ │ │ -84 // ----------------------------------------------------------------- │ │ │ │ │ -85 // Interpolation │ │ │ │ │ -86 // ----------------------------------------------------------------- │ │ │ │ │ -87 │ │ │ │ │ -100 template │ │ │ │ │ -_1_0_1 class _L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_B_a_s_e │ │ │ │ │ -102 { │ │ │ │ │ -103 public: │ │ │ │ │ -104 │ │ │ │ │ -_1_0_6 using _F_u_n_c_t_i_o_n_T_y_p_e = std::function; │ │ │ │ │ -107 │ │ │ │ │ -_1_0_9 typedef typename RangeType::field_type _C_o_e_f_f_i_c_i_e_n_t_T_y_p_e; │ │ │ │ │ -110 │ │ │ │ │ -_1_1_1 virtual _~_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_B_a_s_e() {} │ │ │ │ │ -112 │ │ │ │ │ -_1_2_0 virtual void _i_n_t_e_r_p_o_l_a_t_e (const _F_u_n_c_t_i_o_n_T_y_p_e& f, std:: │ │ │ │ │ -vector& out) const = 0; │ │ │ │ │ -121 }; │ │ │ │ │ -122 │ │ │ │ │ -130 template │ │ │ │ │ -_1_3_1 class _L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -132 : public _L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_B_a_s_e │ │ │ │ │ -133 { │ │ │ │ │ -134 public: │ │ │ │ │ -135 │ │ │ │ │ -_1_3_7 using _F_u_n_c_t_i_o_n_T_y_p_e = std::function; │ │ │ │ │ -138 │ │ │ │ │ -_1_4_0 typedef typename RangeType::field_type _C_o_e_f_f_i_c_i_e_n_t_T_y_p_e; │ │ │ │ │ -141 │ │ │ │ │ -142 │ │ │ │ │ -_1_4_3 virtual _~_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e() {} │ │ │ │ │ -144 │ │ │ │ │ -145 // This method is only noted again for to make the documentation complete. │ │ │ │ │ -146 │ │ │ │ │ -_1_5_4 virtual void _i_n_t_e_r_p_o_l_a_t_e (const _F_u_n_c_t_i_o_n_T_y_p_e& f, std:: │ │ │ │ │ -vector& out) const = 0; │ │ │ │ │ -155 │ │ │ │ │ -161 template::value, int> = 0> │ │ │ │ │ -_1_6_3 void _i_n_t_e_r_p_o_l_a_t_e (const F& f, std::vector& out) const │ │ │ │ │ -164 { │ │ │ │ │ -165 const _L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_B_a_s_e_<_D_o_m_a_i_n_T_y_p_e_,_ _R_a_n_g_e_T_y_p_e_>& asBase │ │ │ │ │ -= *this; │ │ │ │ │ -166 asBase._i_n_t_e_r_p_o_l_a_t_e(_F_u_n_c_t_i_o_n_T_y_p_e(std::cref(f)),out); │ │ │ │ │ -167 } │ │ │ │ │ -168 │ │ │ │ │ -174 template │ │ │ │ │ -_1_7_5 void _i_n_t_e_r_p_o_l_a_t_e (const F& f, std::vector& out) const │ │ │ │ │ -176 { │ │ │ │ │ -177 std::vector outDummy; │ │ │ │ │ -178 const _L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_B_a_s_e_<_D_o_m_a_i_n_T_y_p_e_,_ _R_a_n_g_e_T_y_p_e_>& asBase │ │ │ │ │ -= *this; │ │ │ │ │ -179 asBase._i_n_t_e_r_p_o_l_a_t_e(_F_u_n_c_t_i_o_n_T_y_p_e(std::cref(f)),outDummy); │ │ │ │ │ -180 out.resize(outDummy.size()); │ │ │ │ │ -181 for(typename std::vector::size_type i=0; i │ │ │ │ │ -_2_2_4 class _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -225 { │ │ │ │ │ -226 using LocalBasisTraits = T; │ │ │ │ │ -227 public: │ │ │ │ │ -228 typedef _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s< │ │ │ │ │ -229 _L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_<_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_>, │ │ │ │ │ -230 _L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e, │ │ │ │ │ -231 _L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e< │ │ │ │ │ -232 typename _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e, │ │ │ │ │ -_2_3_3 typename _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_R_a_n_g_e_T_y_p_e> > _T_r_a_i_t_s; │ │ │ │ │ -234 │ │ │ │ │ -_2_3_5 virtual _~_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e() {} │ │ │ │ │ -236 │ │ │ │ │ -_2_3_8 virtual const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e& _l_o_c_a_l_B_a_s_i_s () const = 0; │ │ │ │ │ -239 │ │ │ │ │ -_2_4_1 virtual const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e& _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () │ │ │ │ │ -const = 0; │ │ │ │ │ -242 │ │ │ │ │ -_2_4_4 virtual const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e& _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -() const = 0; │ │ │ │ │ -245 │ │ │ │ │ -_2_4_7 virtual unsigned int _s_i_z_e () const = 0; │ │ │ │ │ -248 │ │ │ │ │ -_2_5_0 virtual const GeometryType _t_y_p_e () const = 0; │ │ │ │ │ -251 │ │ │ │ │ -_2_5_2 virtual _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_<_T_>* _c_l_o_n_e() const = 0; │ │ │ │ │ -253 }; │ │ │ │ │ -254} │ │ │ │ │ -255#endif │ │ │ │ │ -_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h │ │ │ │ │ -_l_o_c_a_l_k_e_y_._h_h │ │ │ │ │ +84 private: │ │ │ │ │ +85 GeometryType gt; │ │ │ │ │ +86 const LB &lb; │ │ │ │ │ +87 FieldMatrix Minv; │ │ │ │ │ +88 const QR &qr; │ │ │ │ │ +89 }; │ │ │ │ │ +90 │ │ │ │ │ +91} │ │ │ │ │ +92 │ │ │ │ │ +93#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e │ │ │ │ │ -D DomainType │ │ │ │ │ -domain type │ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:43 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_R_a_n_g_e_T_y_p_e │ │ │ │ │ -R RangeType │ │ │ │ │ -range type │ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:52 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s │ │ │ │ │ -traits helper struct │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:13 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e │ │ │ │ │ -LB LocalBasisType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:16 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e │ │ │ │ │ -LC LocalCoefficientsType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:20 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e │ │ │ │ │ -LI LocalInterpolationType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:24 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ -Describe position of one degree of freedom. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:24 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -virtual base class for a local interpolation │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:133 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_~_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -virtual ~LocalInterpolationVirtualInterface() │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:143 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_F_u_n_c_t_i_o_n_T_y_p_e │ │ │ │ │ -std::function< RangeType(DomainType)> FunctionType │ │ │ │ │ -type of function to interpolate │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:137 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalinterpolation.hh:24 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ void interpolate(const F &f, std::vector< C > &out) const │ │ │ │ │ -determine coefficients interpolating a given function │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:175 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_C_o_e_f_f_i_c_i_e_n_t_T_y_p_e │ │ │ │ │ -RangeType::field_type CoefficientType │ │ │ │ │ -type of the coefficient vector in the interpolate method │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:140 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ -virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > │ │ │ │ │ -&out) const =0 │ │ │ │ │ -determine coefficients interpolating a given function │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ -void interpolate(const F &f, std::vector< CoefficientType > &out) const │ │ │ │ │ -determine coefficients interpolating a given function │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:163 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -virtual base class for a local basis │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:40 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_o_r_d_e_r │ │ │ │ │ -virtual unsigned int order() const =0 │ │ │ │ │ -Polynomial order of the shape functions. │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n │ │ │ │ │ -virtual void evaluateJacobian(const typename Traits::DomainType &in, std:: │ │ │ │ │ -vector< typename Traits::JacobianType > &out) const =0 │ │ │ │ │ -Evaluate jacobian of all shape functions at given position. │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_s_i_z_e │ │ │ │ │ -virtual unsigned int size() const =0 │ │ │ │ │ -Number of shape functions. │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s │ │ │ │ │ -T Traits │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:42 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n │ │ │ │ │ -virtual void evaluateFunction(const typename Traits::DomainType &in, std:: │ │ │ │ │ -vector< typename Traits::RangeType > &out) const =0 │ │ │ │ │ -Evaluate all basis function at given position. │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_~_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -virtual ~LocalBasisVirtualInterface() │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:45 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_p_a_r_t_i_a_l │ │ │ │ │ -virtual void partial(const std::array< unsigned int, Traits::dimDomain > │ │ │ │ │ -&order, const typename Traits::DomainType &in, std::vector< typename Traits:: │ │ │ │ │ -RangeType > &out) const =0 │ │ │ │ │ -Evaluate partial derivatives of any order of all shape functions. │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_B_a_s_e │ │ │ │ │ -virtual base class for a local interpolation │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:102 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_B_a_s_e_:_:_F_u_n_c_t_i_o_n_T_y_p_e │ │ │ │ │ -std::function< RangeType(DomainType)> FunctionType │ │ │ │ │ -type of function to interpolate │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:106 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_B_a_s_e_:_:_C_o_e_f_f_i_c_i_e_n_t_T_y_p_e │ │ │ │ │ -RangeType::field_type CoefficientType │ │ │ │ │ -type of the coefficient vector in the interpolate method │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:109 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_B_a_s_e_:_: │ │ │ │ │ -_~_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_B_a_s_e │ │ │ │ │ -virtual ~LocalInterpolationVirtualInterfaceBase() │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:111 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_B_a_s_e_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ -virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > │ │ │ │ │ -&out) const =0 │ │ │ │ │ -determine coefficients interpolating a given function │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -virtual base class for local coefficients │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:198 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_~_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -virtual ~LocalCoefficientsVirtualInterface() │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:201 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_s_i_z_e │ │ │ │ │ -virtual std::size_t size() const =0 │ │ │ │ │ -number of coefficients │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_l_o_c_a_l_K_e_y │ │ │ │ │ -virtual const LocalKey & localKey(std::size_t i) const =0 │ │ │ │ │ -get i'th index │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -virtual base class for local finite elements with functions │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:225 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_c_l_o_n_e │ │ │ │ │ -virtual LocalFiniteElementVirtualInterface< T > * clone() const =0 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -virtual const Traits::LocalInterpolationType & localInterpolation() const =0 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_s_i_z_e │ │ │ │ │ -virtual unsigned int size() const =0 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_l_o_c_a_l_B_a_s_i_s │ │ │ │ │ -virtual const Traits::LocalBasisType & localBasis() const =0 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_t_y_p_e │ │ │ │ │ -virtual const GeometryType type() const =0 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s │ │ │ │ │ -LocalFiniteElementTraits< LocalBasisVirtualInterface< LocalBasisTraits >, │ │ │ │ │ -LocalCoefficientsVirtualInterface, LocalInterpolationVirtualInterface< typename │ │ │ │ │ -LocalBasisTraits::DomainType, typename LocalBasisTraits::RangeType > > Traits │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:233 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_~_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e │ │ │ │ │ -virtual ~LocalFiniteElementVirtualInterface() │ │ │ │ │ -DDeeffiinniittiioonn virtualinterface.hh:235 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_V_i_r_t_u_a_l_I_n_t_e_r_f_a_c_e_:_:_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -virtual const Traits::LocalCoefficientsType & localCoefficients() const =0 │ │ │ │ │ -_l_o_c_a_l_b_a_s_i_s_._h_h │ │ │ │ │ +Determine coefficients interpolating a given function. │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalinterpolation.hh:65 │ │ │ │ │ +_D_u_n_e_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_M_o_n_o_m_i_a_l_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +MonomialLocalInterpolation(const GeometryType >_, const LB &lb_) │ │ │ │ │ +DDeeffiinniittiioonn monomiallocalinterpolation.hh:35 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00044.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: interfaceswitch.hh File Reference │ │ │ │ +dune-localfunctions: common.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,40 +65,35 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
interfaceswitch.hh File Reference
│ │ │ │ +
common.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include <cstddef>
│ │ │ │ -#include <memory>
│ │ │ │ -#include <vector>
│ │ │ │ -#include <dune/common/fmatrix.hh>
│ │ │ │ -#include <dune/common/typetraits.hh>
│ │ │ │ -#include <dune/common/shared_ptr.hh>
│ │ │ │ +#include <dune/geometry/dimension.hh>
│ │ │ │ +#include <dune/geometry/referenceelements.hh>
│ │ │ │ +#include <dune/geometry/type.hh>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

struct  Dune::FiniteElementInterfaceSwitch< FiniteElement, Dummy >
 Switch for uniform treatment of finite element with either the local or the global interface. More...
 
struct  Dune::BasisInterfaceSwitch< Basis, Dummy >
 Switch for uniform treatment of local and global basis classes. More...
struct  Dune::EdgeS0_5Common< dim, DF >
 Common base class for edge elements. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,30 +1,24 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ - * _c_o_m_m_o_n │ │ │ │ │ + * _w_h_i_t_n_e_y │ │ │ │ │ + * _e_d_g_e_s_0_._5 │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -interfaceswitch.hh File Reference │ │ │ │ │ +common.hh File Reference │ │ │ │ │ #include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -struct   _D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_<_ _F_i_n_i_t_e_E_l_e_m_e_n_t_,_ _D_u_m_m_y_ _> │ │ │ │ │ -  Switch for uniform treatment of finite element with either the local │ │ │ │ │ - or the global interface. _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -struct   _D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_<_ _B_a_s_i_s_,_ _D_u_m_m_y_ _> │ │ │ │ │ -  Switch for uniform treatment of local and global basis classes. │ │ │ │ │ - _M_o_r_e_._._. │ │ │ │ │ +struct   _D_u_n_e_:_:_E_d_g_e_S_0___5_C_o_m_m_o_n_<_ _d_i_m_,_ _D_F_ _> │ │ │ │ │ +  Common base class for edge elements. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00044_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: interfaceswitch.hh Source File │ │ │ │ +dune-localfunctions: common.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,198 +70,60 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
interfaceswitch.hh
│ │ │ │ +
common.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │
5
│ │ │ │ -
6#ifndef DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH
│ │ │ │ -
7#define DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH
│ │ │ │ +
6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH
│ │ │ │ +
7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH
│ │ │ │
8
│ │ │ │
9#include <cstddef>
│ │ │ │ -
10#include <memory>
│ │ │ │ -
11#include <vector>
│ │ │ │ -
12
│ │ │ │ -
13#include <dune/common/fmatrix.hh>
│ │ │ │ -
14#include <dune/common/typetraits.hh>
│ │ │ │ -
15#include <dune/common/shared_ptr.hh>
│ │ │ │ +
10
│ │ │ │ +
11#include <dune/geometry/dimension.hh>
│ │ │ │ +
12#include <dune/geometry/referenceelements.hh>
│ │ │ │ +
13#include <dune/geometry/type.hh>
│ │ │ │ +
14
│ │ │ │ +
15namespace Dune {
│ │ │ │
16
│ │ │ │ -
17namespace Dune {
│ │ │ │ -
18
│ │ │ │ -
21
│ │ │ │ -
29 template<class FiniteElement, class Dummy = void>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
32 typedef typename FiniteElement::Traits::Basis Basis;
│ │ │ │ -
34 typedef typename FiniteElement::Traits::Interpolation Interpolation;
│ │ │ │ -
36 typedef typename FiniteElement::Traits::Coefficients Coefficients;
│ │ │ │ -
37
│ │ │ │ -
│ │ │ │ -
39 static const Basis &basis(const FiniteElement& fe)
│ │ │ │ -
40 { return fe.basis(); }
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
42 static const Interpolation &interpolation(const FiniteElement& fe)
│ │ │ │ -
43 { return fe.interpolation(); }
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
45 static const Coefficients &coefficients(const FiniteElement& fe)
│ │ │ │ -
46 { return fe.coefficients(); }
│ │ │ │ -
│ │ │ │ -
47
│ │ │ │ -
49
│ │ │ │ -
78 typedef std::shared_ptr<const FiniteElement> Store;
│ │ │ │ -
80
│ │ │ │ -
│ │ │ │ -
85 static void setStore(Store& store, const FiniteElement& fe)
│ │ │ │ -
86 { store = std::make_shared<const FiniteElement>(fe); }
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
88 static void setStore(Store& store, FiniteElement&& fe)
│ │ │ │ -
89 { store = std::make_shared<const FiniteElement>(std::move(fe)); }
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
91 static void setStore(Store& store, const Store& fe)
│ │ │ │ -
92 { store = fe; }
│ │ │ │ -
│ │ │ │ -
93 };
│ │ │ │ -
│ │ │ │ -
94
│ │ │ │ -
95#ifndef DOXYGEN
│ │ │ │ -
98 template<class FiniteElement>
│ │ │ │ -
99 struct FiniteElementInterfaceSwitch<
│ │ │ │ -
100 FiniteElement,
│ │ │ │ -
101 typename std::enable_if<AlwaysTrue<typename FiniteElement::Traits::
│ │ │ │ -
102 LocalBasisType>::value>::type
│ │ │ │ -
103 >
│ │ │ │ -
104 {
│ │ │ │ -
106 typedef typename FiniteElement::Traits::LocalBasisType Basis;
│ │ │ │ -
108 typedef typename FiniteElement::Traits::LocalInterpolationType
│ │ │ │ - │ │ │ │ -
111 typedef typename FiniteElement::Traits::LocalCoefficientsType Coefficients;
│ │ │ │ -
112
│ │ │ │ -
114 static const Basis &basis(const FiniteElement& fe)
│ │ │ │ -
115 { return fe.localBasis(); }
│ │ │ │ -
117 static const Interpolation &interpolation(const FiniteElement& fe)
│ │ │ │ -
118 { return fe.localInterpolation(); }
│ │ │ │ -
120 static const Coefficients &coefficients(const FiniteElement& fe)
│ │ │ │ -
121 { return fe.localCoefficients(); }
│ │ │ │ -
122
│ │ │ │ -
124 typedef std::shared_ptr<const FiniteElement> Store;
│ │ │ │ -
126 static void setStore(Store& store, const FiniteElement& fe)
│ │ │ │ -
127 { store = stackobject_to_shared_ptr<const FiniteElement>(fe); }
│ │ │ │ -
129 static void setStore(Store& store, FiniteElement&& fe)
│ │ │ │ -
130 { store = std::make_shared<const FiniteElement>(std::move(fe)); }
│ │ │ │ -
132 static void setStore(Store& store, const Store& fe)
│ │ │ │ -
133 { store = fe; }
│ │ │ │ -
134 };
│ │ │ │ -
135#endif // !DOXYGEN
│ │ │ │ -
136
│ │ │ │ -
138
│ │ │ │ -
153 template<class Basis, class Dummy = void>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
156 typedef typename Basis::Traits::DomainField DomainField;
│ │ │ │ -
158 static const std::size_t dimDomainLocal = Basis::Traits::dimDomainLocal;
│ │ │ │ -
160 typedef typename Basis::Traits::DomainLocal DomainLocal;
│ │ │ │ -
161
│ │ │ │ -
163 typedef typename Basis::Traits::RangeField RangeField;
│ │ │ │ -
165 static const std::size_t dimRange = Basis::Traits::dimRange;
│ │ │ │ -
167 typedef typename Basis::Traits::Range Range;
│ │ │ │ -
168
│ │ │ │ -
170
│ │ │ │ -
180 template<typename Geometry>
│ │ │ │ -
│ │ │ │ -
181 static void gradient(const Basis& basis, const Geometry& geometry,
│ │ │ │ -
182 const DomainLocal& xl,
│ │ │ │ -
183 std::vector<FieldMatrix<RangeField, 1,
│ │ │ │ -
184 Geometry::coorddimension> >& grad)
│ │ │ │ -
185 {
│ │ │ │ -
186 grad.resize(basis.size());
│ │ │ │ -
187 basis.evaluateJacobian(xl, grad);
│ │ │ │ -
188 }
│ │ │ │ -
│ │ │ │ -
189 };
│ │ │ │ -
│ │ │ │ -
190
│ │ │ │ -
191#ifndef DOXYGEN
│ │ │ │ -
193 template<class Basis>
│ │ │ │ -
194 struct BasisInterfaceSwitch<Basis,
│ │ │ │ -
195 typename std::enable_if<
│ │ │ │ -
196 AlwaysTrue<
│ │ │ │ -
197 std::integral_constant<
│ │ │ │ -
198 std::size_t,
│ │ │ │ -
199 Basis::Traits::dimDomain
│ │ │ │ -
200 >
│ │ │ │ -
201 >::value
│ │ │ │ -
202 >::type
│ │ │ │ -
203 >
│ │ │ │ -
204 {
│ │ │ │ -
206 typedef typename Basis::Traits::DomainFieldType DomainField;
│ │ │ │ -
208 static const std::size_t dimDomainLocal = Basis::Traits::dimDomain;
│ │ │ │ -
210 typedef typename Basis::Traits::DomainType DomainLocal;
│ │ │ │ -
211
│ │ │ │ -
213 typedef typename Basis::Traits::RangeFieldType RangeField;
│ │ │ │ -
215 static const std::size_t dimRange = Basis::Traits::dimRange;
│ │ │ │ -
217 typedef typename Basis::Traits::RangeType Range;
│ │ │ │ -
218
│ │ │ │ -
220 template<typename Geometry>
│ │ │ │ -
221 static void gradient(const Basis& basis, const Geometry& geometry,
│ │ │ │ -
222 const DomainLocal& xl,
│ │ │ │ -
223 std::vector<FieldMatrix<RangeField, 1,
│ │ │ │ -
224 Geometry::coorddimension> >& grad)
│ │ │ │ -
225 {
│ │ │ │ -
226 std::vector<typename Basis::Traits::JacobianType> lgrad(basis.size());
│ │ │ │ -
227 basis.evaluateJacobian(xl, lgrad);
│ │ │ │ -
228
│ │ │ │ -
229 const typename Geometry::JacobianInverseTransposed& jac =
│ │ │ │ -
230 geometry.jacobianInverseTransposed(xl);
│ │ │ │ -
231
│ │ │ │ -
232 grad.resize(basis.size());
│ │ │ │ -
233 for(std::size_t i = 0; i < basis.size(); ++i)
│ │ │ │ -
234 jac.mv(lgrad[i][0], grad[i][0]);
│ │ │ │ -
235 }
│ │ │ │ -
236 };
│ │ │ │ -
237#endif // !DOXYGEN
│ │ │ │ -
238
│ │ │ │ -
239} // namespace Dune
│ │ │ │ -
240
│ │ │ │ -
241#endif // DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH
│ │ │ │ +
22 template<std::size_t dim, class DF = double>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
25 using RefElem =
│ │ │ │ +
26 decltype(referenceElement(DF{}, GeometryTypes::simplex(dim),
│ │ │ │ +
27 Dim<dim>{}));
│ │ │ │ +
28
│ │ │ │ +
30 RefElem refelem = referenceElement(DF{}, GeometryTypes::simplex(dim),
│ │ │ │ +
31 Dim<dim>{});
│ │ │ │ +
32
│ │ │ │ +
34
│ │ │ │ +
38 std::size_t s = refelem.size(dim-1);
│ │ │ │ +
39 };
│ │ │ │ +
│ │ │ │ +
40
│ │ │ │ +
41} // namespace Dune
│ │ │ │ +
42
│ │ │ │ +
43#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
Switch for uniform treatment of finite element with either the local or the global interface.
Definition interfaceswitch.hh:30
│ │ │ │ -
static const Coefficients & coefficients(const FiniteElement &fe)
access coefficients
Definition interfaceswitch.hh:45
│ │ │ │ -
static void setStore(Store &store, FiniteElement &&fe)
Store a finite element in the store.
Definition interfaceswitch.hh:88
│ │ │ │ -
FiniteElement::Traits::Coefficients Coefficients
export the type of the coefficients
Definition interfaceswitch.hh:36
│ │ │ │ -
static void setStore(Store &store, const Store &fe)
Store a finite element in the store.
Definition interfaceswitch.hh:91
│ │ │ │ -
static void setStore(Store &store, const FiniteElement &fe)
Store a finite element in the store.
Definition interfaceswitch.hh:85
│ │ │ │ -
FiniteElement::Traits::Interpolation Interpolation
export the type of the interpolation
Definition interfaceswitch.hh:34
│ │ │ │ -
std::shared_ptr< const FiniteElement > Store
Type for storing finite elements.
Definition interfaceswitch.hh:78
│ │ │ │ -
static const Basis & basis(const FiniteElement &fe)
access basis
Definition interfaceswitch.hh:39
│ │ │ │ -
FiniteElement::Traits::Basis Basis
export the type of the basis
Definition interfaceswitch.hh:32
│ │ │ │ -
static const Interpolation & interpolation(const FiniteElement &fe)
access interpolation
Definition interfaceswitch.hh:42
│ │ │ │ -
Switch for uniform treatment of local and global basis classes.
Definition interfaceswitch.hh:154
│ │ │ │ -
static const std::size_t dimRange
export dimension of the values
Definition interfaceswitch.hh:165
│ │ │ │ -
static const std::size_t dimDomainLocal
export dimension of local coordinates
Definition interfaceswitch.hh:158
│ │ │ │ -
Basis::Traits::RangeField RangeField
export field type of the values
Definition interfaceswitch.hh:163
│ │ │ │ -
Basis::Traits::Range Range
export vector type of the values
Definition interfaceswitch.hh:167
│ │ │ │ -
static void gradient(const Basis &basis, const Geometry &geometry, const DomainLocal &xl, std::vector< FieldMatrix< RangeField, 1, Geometry::coorddimension > > &grad)
Compute global gradient for scalar valued bases.
Definition interfaceswitch.hh:181
│ │ │ │ -
Basis::Traits::DomainLocal DomainLocal
export vector type of the local coordinates
Definition interfaceswitch.hh:160
│ │ │ │ -
Basis::Traits::DomainField DomainField
export field types of the coordinates
Definition interfaceswitch.hh:156
│ │ │ │ +
Common base class for edge elements.
Definition common.hh:23
│ │ │ │ +
RefElem refelem
The reference element for this edge element.
Definition common.hh:30
│ │ │ │ +
decltype(referenceElement(DF{}, GeometryTypes::simplex(dim), Dim< dim >{})) RefElem
The type of the referenceElement.
Definition common.hh:27
│ │ │ │ +
std::size_t s
The number of base functions.
Definition common.hh:38
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,230 +1,63 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ - * _c_o_m_m_o_n │ │ │ │ │ -interfaceswitch.hh │ │ │ │ │ + * _w_h_i_t_n_e_y │ │ │ │ │ + * _e_d_g_e_s_0_._5 │ │ │ │ │ +common.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ 5 │ │ │ │ │ -6#ifndef DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH │ │ │ │ │ -7#define DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH │ │ │ │ │ +6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH │ │ │ │ │ +7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH │ │ │ │ │ 8 │ │ │ │ │ 9#include │ │ │ │ │ -10#include │ │ │ │ │ -11#include │ │ │ │ │ -12 │ │ │ │ │ -13#include │ │ │ │ │ -14#include │ │ │ │ │ -15#include │ │ │ │ │ +10 │ │ │ │ │ +11#include │ │ │ │ │ +12#include │ │ │ │ │ +13#include │ │ │ │ │ +14 │ │ │ │ │ +15namespace _D_u_n_e { │ │ │ │ │ 16 │ │ │ │ │ -17namespace _D_u_n_e { │ │ │ │ │ -18 │ │ │ │ │ -21 │ │ │ │ │ -29 template │ │ │ │ │ -_3_0 struct _F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h { │ │ │ │ │ -_3_2 typedef typename FiniteElement::Traits::Basis _B_a_s_i_s; │ │ │ │ │ -_3_4 typedef typename FiniteElement::Traits::Interpolation _I_n_t_e_r_p_o_l_a_t_i_o_n; │ │ │ │ │ -_3_6 typedef typename FiniteElement::Traits::Coefficients _C_o_e_f_f_i_c_i_e_n_t_s; │ │ │ │ │ -37 │ │ │ │ │ -_3_9 static const _B_a_s_i_s &_b_a_s_i_s(const FiniteElement& fe) │ │ │ │ │ -40 { return fe.basis(); } │ │ │ │ │ -_4_2 static const _I_n_t_e_r_p_o_l_a_t_i_o_n &_i_n_t_e_r_p_o_l_a_t_i_o_n(const FiniteElement& fe) │ │ │ │ │ -43 { return fe.interpolation(); } │ │ │ │ │ -_4_5 static const _C_o_e_f_f_i_c_i_e_n_t_s &_c_o_e_f_f_i_c_i_e_n_t_s(const FiniteElement& fe) │ │ │ │ │ -46 { return fe.coefficients(); } │ │ │ │ │ -47 │ │ │ │ │ -49 │ │ │ │ │ -_7_8 typedef std::shared_ptr _S_t_o_r_e; │ │ │ │ │ -80 │ │ │ │ │ -_8_5 static void _s_e_t_S_t_o_r_e(_S_t_o_r_e& store, const FiniteElement& fe) │ │ │ │ │ -86 { store = std::make_shared(fe); } │ │ │ │ │ -_8_8 static void _s_e_t_S_t_o_r_e(_S_t_o_r_e& store, FiniteElement&& fe) │ │ │ │ │ -89 { store = std::make_shared(std::move(fe)); } │ │ │ │ │ -_9_1 static void _s_e_t_S_t_o_r_e(_S_t_o_r_e& store, const _S_t_o_r_e& fe) │ │ │ │ │ -92 { store = fe; } │ │ │ │ │ -93 }; │ │ │ │ │ -94 │ │ │ │ │ -95#ifndef DOXYGEN │ │ │ │ │ -98 template │ │ │ │ │ -99 struct FiniteElementInterfaceSwitch< │ │ │ │ │ -100 FiniteElement, │ │ │ │ │ -101 typename std::enable_if::value>::type │ │ │ │ │ -103 > │ │ │ │ │ -104 { │ │ │ │ │ -106 typedef typename FiniteElement::Traits::LocalBasisType _B_a_s_i_s; │ │ │ │ │ -108 typedef typename FiniteElement::Traits::LocalInterpolationType │ │ │ │ │ -109 _I_n_t_e_r_p_o_l_a_t_i_o_n; │ │ │ │ │ -111 typedef typename FiniteElement::Traits::LocalCoefficientsType _C_o_e_f_f_i_c_i_e_n_t_s; │ │ │ │ │ -112 │ │ │ │ │ -114 static const _B_a_s_i_s &_b_a_s_i_s(const FiniteElement& fe) │ │ │ │ │ -115 { return fe.localBasis(); } │ │ │ │ │ -117 static const _I_n_t_e_r_p_o_l_a_t_i_o_n &_i_n_t_e_r_p_o_l_a_t_i_o_n(const FiniteElement& fe) │ │ │ │ │ -118 { return fe.localInterpolation(); } │ │ │ │ │ -120 static const _C_o_e_f_f_i_c_i_e_n_t_s &_c_o_e_f_f_i_c_i_e_n_t_s(const FiniteElement& fe) │ │ │ │ │ -121 { return fe.localCoefficients(); } │ │ │ │ │ -122 │ │ │ │ │ -124 typedef std::shared_ptr _S_t_o_r_e; │ │ │ │ │ -126 static void _s_e_t_S_t_o_r_e(_S_t_o_r_e& store, const FiniteElement& fe) │ │ │ │ │ -127 { store = stackobject_to_shared_ptr(fe); } │ │ │ │ │ -129 static void _s_e_t_S_t_o_r_e(_S_t_o_r_e& store, FiniteElement&& fe) │ │ │ │ │ -130 { store = std::make_shared(std::move(fe)); } │ │ │ │ │ -132 static void _s_e_t_S_t_o_r_e(_S_t_o_r_e& store, const _S_t_o_r_e& fe) │ │ │ │ │ -133 { store = fe; } │ │ │ │ │ -134 }; │ │ │ │ │ -135#endif // !DOXYGEN │ │ │ │ │ -136 │ │ │ │ │ -138 │ │ │ │ │ -153 template │ │ │ │ │ -_1_5_4 struct _B_a_s_i_s_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h { │ │ │ │ │ -_1_5_6 typedef typename Basis::Traits::DomainField _D_o_m_a_i_n_F_i_e_l_d; │ │ │ │ │ -_1_5_8 static const std::size_t _d_i_m_D_o_m_a_i_n_L_o_c_a_l = Basis::Traits::dimDomainLocal; │ │ │ │ │ -_1_6_0 typedef typename Basis::Traits::DomainLocal _D_o_m_a_i_n_L_o_c_a_l; │ │ │ │ │ -161 │ │ │ │ │ -_1_6_3 typedef typename Basis::Traits::RangeField _R_a_n_g_e_F_i_e_l_d; │ │ │ │ │ -_1_6_5 static const std::size_t _d_i_m_R_a_n_g_e = Basis::Traits::dimRange; │ │ │ │ │ -_1_6_7 typedef typename Basis::Traits::Range _R_a_n_g_e; │ │ │ │ │ -168 │ │ │ │ │ -170 │ │ │ │ │ -180 template │ │ │ │ │ -_1_8_1 static void _g_r_a_d_i_e_n_t(const Basis& basis, const Geometry& geometry, │ │ │ │ │ -182 const _D_o_m_a_i_n_L_o_c_a_l& xl, │ │ │ │ │ -183 std::vector >& grad) │ │ │ │ │ -185 { │ │ │ │ │ -186 grad.resize(basis.size()); │ │ │ │ │ -187 basis.evaluateJacobian(xl, grad); │ │ │ │ │ -188 } │ │ │ │ │ -189 }; │ │ │ │ │ -190 │ │ │ │ │ -191#ifndef DOXYGEN │ │ │ │ │ -193 template │ │ │ │ │ -194 struct BasisInterfaceSwitch │ │ │ │ │ -201 >::value │ │ │ │ │ -202 >::type │ │ │ │ │ -203 > │ │ │ │ │ -204 { │ │ │ │ │ -206 typedef typename Basis::Traits::DomainFieldType _D_o_m_a_i_n_F_i_e_l_d; │ │ │ │ │ -208 static const std::size_t _d_i_m_D_o_m_a_i_n_L_o_c_a_l = Basis::Traits::dimDomain; │ │ │ │ │ -210 typedef typename Basis::Traits::DomainType _D_o_m_a_i_n_L_o_c_a_l; │ │ │ │ │ -211 │ │ │ │ │ -213 typedef typename Basis::Traits::RangeFieldType _R_a_n_g_e_F_i_e_l_d; │ │ │ │ │ -215 static const std::size_t _d_i_m_R_a_n_g_e = Basis::Traits::dimRange; │ │ │ │ │ -217 typedef typename Basis::Traits::RangeType _R_a_n_g_e; │ │ │ │ │ -218 │ │ │ │ │ -220 template │ │ │ │ │ -221 static void _g_r_a_d_i_e_n_t(const Basis& basis, const Geometry& geometry, │ │ │ │ │ -222 const _D_o_m_a_i_n_L_o_c_a_l& xl, │ │ │ │ │ -223 std::vector >& grad) │ │ │ │ │ -225 { │ │ │ │ │ -226 std::vector lgrad(basis.size()); │ │ │ │ │ -227 basis.evaluateJacobian(xl, lgrad); │ │ │ │ │ -228 │ │ │ │ │ -229 const typename Geometry::JacobianInverseTransposed& jac = │ │ │ │ │ -230 geometry.jacobianInverseTransposed(xl); │ │ │ │ │ -231 │ │ │ │ │ -232 grad.resize(basis.size()); │ │ │ │ │ -233 for(std::size_t i = 0; i < basis.size(); ++i) │ │ │ │ │ -234 jac.mv(lgrad[i][0], grad[i][0]); │ │ │ │ │ -235 } │ │ │ │ │ -236 }; │ │ │ │ │ -237#endif // !DOXYGEN │ │ │ │ │ -238 │ │ │ │ │ -239} // namespace Dune │ │ │ │ │ -240 │ │ │ │ │ -241#endif // DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH │ │ │ │ │ +22 template │ │ │ │ │ +_2_3 struct _E_d_g_e_S_0___5_C_o_m_m_o_n { │ │ │ │ │ +_2_5 using _R_e_f_E_l_e_m = │ │ │ │ │ +26 decltype(referenceElement(DF{}, GeometryTypes::simplex(dim), │ │ │ │ │ +27 Dim{})); │ │ │ │ │ +28 │ │ │ │ │ +_3_0 _R_e_f_E_l_e_m _r_e_f_e_l_e_m = referenceElement(DF{}, GeometryTypes::simplex(dim), │ │ │ │ │ +31 Dim{}); │ │ │ │ │ +32 │ │ │ │ │ +34 │ │ │ │ │ +_3_8 std::size_t _s = _r_e_f_e_l_e_m.size(dim-1); │ │ │ │ │ +39 }; │ │ │ │ │ +40 │ │ │ │ │ +41} // namespace Dune │ │ │ │ │ +42 │ │ │ │ │ +43#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h │ │ │ │ │ -Switch for uniform treatment of finite element with either the local or the │ │ │ │ │ -global interface. │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:30 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_c_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -static const Coefficients & coefficients(const FiniteElement &fe) │ │ │ │ │ -access coefficients │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:45 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_s_e_t_S_t_o_r_e │ │ │ │ │ -static void setStore(Store &store, FiniteElement &&fe) │ │ │ │ │ -Store a finite element in the store. │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:88 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -FiniteElement::Traits::Coefficients Coefficients │ │ │ │ │ -export the type of the coefficients │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:36 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_s_e_t_S_t_o_r_e │ │ │ │ │ -static void setStore(Store &store, const Store &fe) │ │ │ │ │ -Store a finite element in the store. │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:91 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_s_e_t_S_t_o_r_e │ │ │ │ │ -static void setStore(Store &store, const FiniteElement &fe) │ │ │ │ │ -Store a finite element in the store. │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:85 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -FiniteElement::Traits::Interpolation Interpolation │ │ │ │ │ -export the type of the interpolation │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:34 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_S_t_o_r_e │ │ │ │ │ -std::shared_ptr< const FiniteElement > Store │ │ │ │ │ -Type for storing finite elements. │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:78 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_b_a_s_i_s │ │ │ │ │ -static const Basis & basis(const FiniteElement &fe) │ │ │ │ │ -access basis │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:39 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_B_a_s_i_s │ │ │ │ │ -FiniteElement::Traits::Basis Basis │ │ │ │ │ -export the type of the basis │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:32 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_i_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -static const Interpolation & interpolation(const FiniteElement &fe) │ │ │ │ │ -access interpolation │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:42 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h │ │ │ │ │ -Switch for uniform treatment of local and global basis classes. │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:154 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_d_i_m_R_a_n_g_e │ │ │ │ │ -static const std::size_t dimRange │ │ │ │ │ -export dimension of the values │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:165 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_d_i_m_D_o_m_a_i_n_L_o_c_a_l │ │ │ │ │ -static const std::size_t dimDomainLocal │ │ │ │ │ -export dimension of local coordinates │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:158 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_R_a_n_g_e_F_i_e_l_d │ │ │ │ │ -Basis::Traits::RangeField RangeField │ │ │ │ │ -export field type of the values │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:163 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_R_a_n_g_e │ │ │ │ │ -Basis::Traits::Range Range │ │ │ │ │ -export vector type of the values │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:167 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_g_r_a_d_i_e_n_t │ │ │ │ │ -static void gradient(const Basis &basis, const Geometry &geometry, const │ │ │ │ │ -DomainLocal &xl, std::vector< FieldMatrix< RangeField, 1, Geometry:: │ │ │ │ │ -coorddimension > > &grad) │ │ │ │ │ -Compute global gradient for scalar valued bases. │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:181 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_D_o_m_a_i_n_L_o_c_a_l │ │ │ │ │ -Basis::Traits::DomainLocal DomainLocal │ │ │ │ │ -export vector type of the local coordinates │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:160 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_S_w_i_t_c_h_:_:_D_o_m_a_i_n_F_i_e_l_d │ │ │ │ │ -Basis::Traits::DomainField DomainField │ │ │ │ │ -export field types of the coordinates │ │ │ │ │ -DDeeffiinniittiioonn interfaceswitch.hh:156 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_C_o_m_m_o_n │ │ │ │ │ +Common base class for edge elements. │ │ │ │ │ +DDeeffiinniittiioonn common.hh:23 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_C_o_m_m_o_n_:_:_r_e_f_e_l_e_m │ │ │ │ │ +RefElem refelem │ │ │ │ │ +The reference element for this edge element. │ │ │ │ │ +DDeeffiinniittiioonn common.hh:30 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_C_o_m_m_o_n_:_:_R_e_f_E_l_e_m │ │ │ │ │ +decltype(referenceElement(DF{}, GeometryTypes::simplex(dim), Dim< dim >{})) │ │ │ │ │ +RefElem │ │ │ │ │ +The type of the referenceElement. │ │ │ │ │ +DDeeffiinniittiioonn common.hh:27 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_C_o_m_m_o_n_:_:_s │ │ │ │ │ +std::size_t s │ │ │ │ │ +The number of base functions. │ │ │ │ │ +DDeeffiinniittiioonn common.hh:38 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00047.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: localkey.hh File Reference │ │ │ │ +dune-localfunctions: edges0.5.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,34 +65,40 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
localkey.hh File Reference
│ │ │ │ +
edges0.5.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <array>
│ │ │ │ -#include <cstddef>
│ │ │ │ -#include <ostream>
│ │ │ │ +
#include <dune/geometry/type.hh>
│ │ │ │ +#include <dune/localfunctions/whitney/edges0.5/basis.hh>
│ │ │ │ +#include <dune/localfunctions/whitney/edges0.5/coefficients.hh>
│ │ │ │ +#include <dune/localfunctions/whitney/edges0.5/interpolation.hh>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::LocalKey
 Describe position of one degree of freedom. More...
class  Dune::EdgeS0_5FiniteElement< Geometry, RF >
 FiniteElement for lowest order edge elements on simplices. More...
 
struct  Dune::EdgeS0_5FiniteElement< Geometry, RF >::Traits
 
struct  Dune::EdgeS0_5FiniteElementFactory< Geometry, RF >
 Factory for EdgeS0_5FiniteElement objects. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,22 +1,28 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ - * _c_o_m_m_o_n │ │ │ │ │ + * _w_h_i_t_n_e_y │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -localkey.hh File Reference │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ +edges0.5.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_w_h_i_t_n_e_y_/_e_d_g_e_s_0_._5_/_b_a_s_i_s_._h_h> │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_w_h_i_t_n_e_y_/_e_d_g_e_s_0_._5_/_c_o_e_f_f_i_c_i_e_n_t_s_._h_h> │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_w_h_i_t_n_e_y_/_e_d_g_e_s_0_._5_/_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h> │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ -  Describe position of one degree of freedom. _M_o_r_e_._._. │ │ │ │ │ + class   _D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _G_e_o_m_e_t_r_y_,_ _R_F_ _> │ │ │ │ │ +  FiniteElement for lowest order edge elements on simplices. _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ +struct   _D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _G_e_o_m_e_t_r_y_,_ _R_F_ _>_:_:_T_r_a_i_t_s │ │ │ │ │ +  │ │ │ │ │ +struct   _D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_<_ _G_e_o_m_e_t_r_y_,_ _R_F_ _> │ │ │ │ │ +  Factory for _E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t objects. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00047_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: localkey.hh Source File │ │ │ │ +dune-localfunctions: edges0.5.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,124 +70,132 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
localkey.hh
│ │ │ │ +
edges0.5.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALKEY_HH
│ │ │ │ -
6#define DUNE_LOCALKEY_HH
│ │ │ │ -
7
│ │ │ │ -
8#include <array>
│ │ │ │ -
9#include <cstddef>
│ │ │ │ -
10#include <ostream>
│ │ │ │ -
11
│ │ │ │ -
12namespace Dune
│ │ │ │ -
13{
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
24 {
│ │ │ │ -
25 public:
│ │ │ │ -
26
│ │ │ │ -
28 enum {
│ │ │ │ - │ │ │ │ -
38 };
│ │ │ │ -
39
│ │ │ │ -
│ │ │ │ -
41 constexpr LocalKey () noexcept
│ │ │ │ -
42 : values_{}
│ │ │ │ -
43 {}
│ │ │ │ -
│ │ │ │ -
44
│ │ │ │ -
│ │ │ │ -
50 constexpr LocalKey (unsigned int s, unsigned int c, unsigned int i) noexcept
│ │ │ │ -
51 : values_{s,c,i}
│ │ │ │ -
52 {}
│ │ │ │ +
5
│ │ │ │ +
6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH
│ │ │ │ +
7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH
│ │ │ │ +
8
│ │ │ │ +
9#include <dune/geometry/type.hh>
│ │ │ │ +
10
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
14
│ │ │ │ +
15namespace Dune {
│ │ │ │ +
16
│ │ │ │ +
18 //
│ │ │ │ +
19 // FiniteElement
│ │ │ │ +
20 //
│ │ │ │ +
21
│ │ │ │ +
23
│ │ │ │ +
41 template<class Geometry, class RF>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
43 public:
│ │ │ │ +
│ │ │ │ +
47 struct Traits {
│ │ │ │ + │ │ │ │ +
49 typedef EdgeS0_5Interpolation<Geometry,
│ │ │ │ + │ │ │ │ + │ │ │ │ +
52 };
│ │ │ │
│ │ │ │
53
│ │ │ │ -
55 [[nodiscard]]
│ │ │ │ -
│ │ │ │ -
56 constexpr unsigned int subEntity () const noexcept
│ │ │ │ -
57 {
│ │ │ │ -
58 return values_[0];
│ │ │ │ -
59 }
│ │ │ │ -
│ │ │ │ -
60
│ │ │ │ -
62 [[nodiscard]]
│ │ │ │ -
│ │ │ │ -
63 constexpr unsigned int codim () const noexcept
│ │ │ │ -
64 {
│ │ │ │ -
65 return values_[1];
│ │ │ │ -
66 }
│ │ │ │ -
│ │ │ │ -
67
│ │ │ │ -
69 [[nodiscard]]
│ │ │ │ -
│ │ │ │ -
70 constexpr unsigned int index () const noexcept
│ │ │ │ -
71 {
│ │ │ │ -
72 return values_[2];
│ │ │ │ -
73 }
│ │ │ │ +
54 private:
│ │ │ │ +
55 typename Traits::Basis basis_;
│ │ │ │ +
56 typename Traits::Interpolation interpolation_;
│ │ │ │ +
57 static const typename Traits::Coefficients& coefficients_;
│ │ │ │ +
58
│ │ │ │ +
59 public:
│ │ │ │ +
61
│ │ │ │ +
64 template<class VertexOrder>
│ │ │ │ +
│ │ │ │ +
65 EdgeS0_5FiniteElement(const Geometry& geo,
│ │ │ │ +
66 const VertexOrder& vertexOrder) :
│ │ │ │ +
67 basis_(geo, vertexOrder), interpolation_(geo, vertexOrder)
│ │ │ │ +
68 { }
│ │ │ │ +
│ │ │ │ +
69
│ │ │ │ +
71 const typename Traits::Basis& basis() const { return basis_; }
│ │ │ │ +
│ │ │ │ +
73 const typename Traits::Interpolation& interpolation() const
│ │ │ │ +
74 { return interpolation_; }
│ │ │ │
│ │ │ │ -
74
│ │ │ │
│ │ │ │ -
76 constexpr void index (unsigned int i) noexcept
│ │ │ │ -
77 {
│ │ │ │ -
78 values_[2] = i;
│ │ │ │ -
79 }
│ │ │ │ -
│ │ │ │ -
80
│ │ │ │ -
82 [[nodiscard]]
│ │ │ │ -
│ │ │ │ -
83 bool operator< (const LocalKey& other) const noexcept
│ │ │ │ -
84 {
│ │ │ │ -
85 return values_ < other.values_;
│ │ │ │ -
86 }
│ │ │ │ -
│ │ │ │ -
87
│ │ │ │ -
│ │ │ │ -
89 friend std::ostream& operator<< (std::ostream& s, const LocalKey& localKey)
│ │ │ │ -
90 {
│ │ │ │ -
91 return s << "[ subEntity: " << localKey.subEntity()
│ │ │ │ -
92 << ", codim: " << localKey.codim()
│ │ │ │ -
93 << ", index: " << localKey.index() << " ]";
│ │ │ │ -
94 }
│ │ │ │ -
│ │ │ │ -
95
│ │ │ │ -
96 private:
│ │ │ │ -
97
│ │ │ │ -
98 // We use an array to store the values in order to be able to use the array::operator< implementation
│ │ │ │ -
99 std::array<unsigned int,3> values_;
│ │ │ │ -
100
│ │ │ │ -
101 };
│ │ │ │ -
│ │ │ │ -
102
│ │ │ │ -
103}
│ │ │ │ -
104#endif
│ │ │ │ +
76 const typename Traits::Coefficients& coefficients() const
│ │ │ │ +
77 { return coefficients_; }
│ │ │ │ +
│ │ │ │ +
79 static constexpr GeometryType type() { return GeometryTypes::simplex(Geometry::mydimension); }
│ │ │ │ +
80 };
│ │ │ │ +
│ │ │ │ +
81
│ │ │ │ +
82 template<class Geometry, class RF>
│ │ │ │ + │ │ │ │ +
84 EdgeS0_5FiniteElement<Geometry, RF>::coefficients_ =
│ │ │ │ +
85 typename Traits::Coefficients();
│ │ │ │ +
86
│ │ │ │ +
88 //
│ │ │ │ +
89 // Factory
│ │ │ │ +
90 //
│ │ │ │ +
91
│ │ │ │ +
93
│ │ │ │ +
102 template<class Geometry, class RF>
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ +
105
│ │ │ │ +
107
│ │ │ │ +
121 template<class VertexOrder>
│ │ │ │ +
│ │ │ │ +
122 const FiniteElement make(const Geometry& geometry,
│ │ │ │ +
123 const VertexOrder& vertexOrder)
│ │ │ │ +
124 { return FiniteElement(geometry, vertexOrder); }
│ │ │ │ +
│ │ │ │ +
125 };
│ │ │ │ +
│ │ │ │ +
126
│ │ │ │ +
127} // namespace Dune
│ │ │ │ +
128
│ │ │ │ +
129#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
Describe position of one degree of freedom.
Definition localkey.hh:24
│ │ │ │ -
bool operator<(const LocalKey &other) const noexcept
Less-than operator so we can use this class as a key type in stl containers.
Definition localkey.hh:83
│ │ │ │ -
constexpr void index(unsigned int i) noexcept
Set index component.
Definition localkey.hh:76
│ │ │ │ -
constexpr unsigned int index() const noexcept
Return offset within subentity.
Definition localkey.hh:70
│ │ │ │ -
constexpr LocalKey(unsigned int s, unsigned int c, unsigned int i) noexcept
Initialize all components.
Definition localkey.hh:50
│ │ │ │ -
@ intersectionCodim
Codimension returned by LocalKey::codim() for degrees of freedom attached to an intersection.
Definition localkey.hh:37
│ │ │ │ -
constexpr unsigned int codim() const noexcept
Return codim of associated entity.
Definition localkey.hh:63
│ │ │ │ -
friend std::ostream & operator<<(std::ostream &s, const LocalKey &localKey)
Write LocalKey object to output stream.
Definition localkey.hh:89
│ │ │ │ -
constexpr LocalKey() noexcept
Standard constructor for uninitialized local index.
Definition localkey.hh:41
│ │ │ │ -
constexpr unsigned int subEntity() const noexcept
Return number of associated subentity.
Definition localkey.hh:56
│ │ │ │ +
FiniteElement for lowest order edge elements on simplices.
Definition edges0.5.hh:42
│ │ │ │ +
EdgeS0_5FiniteElement(const Geometry &geo, const VertexOrder &vertexOrder)
Constructor.
Definition edges0.5.hh:65
│ │ │ │ +
static constexpr GeometryType type()
return geometry type of this element
Definition edges0.5.hh:79
│ │ │ │ +
const Traits::Basis & basis() const
return reference to the basis object
Definition edges0.5.hh:71
│ │ │ │ +
const Traits::Interpolation & interpolation() const
return reference to the interpolation object
Definition edges0.5.hh:73
│ │ │ │ +
const Traits::Coefficients & coefficients() const
return reference to the coefficients object
Definition edges0.5.hh:76
│ │ │ │ +
Definition edges0.5.hh:47
│ │ │ │ +
EdgeS0_5Coefficients< Geometry::mydimension > Coefficients
Definition edges0.5.hh:51
│ │ │ │ +
EdgeS0_5Interpolation< Geometry, typename Basis::Traits > Interpolation
Definition edges0.5.hh:50
│ │ │ │ +
EdgeS0_5Basis< Geometry, RF > Basis
Definition edges0.5.hh:48
│ │ │ │ +
Factory for EdgeS0_5FiniteElement objects.
Definition edges0.5.hh:103
│ │ │ │ +
const FiniteElement make(const Geometry &geometry, const VertexOrder &vertexOrder)
construct the factory
Definition edges0.5.hh:122
│ │ │ │ +
EdgeS0_5FiniteElement< Geometry, RF > FiniteElement
Definition edges0.5.hh:104
│ │ │ │ +
Basis for order 0.5 (lowest order) edge elements on simplices.
Definition whitney/edges0.5/basis.hh:38
│ │ │ │ +
export type traits for function signature
Definition whitney/edges0.5/basis.hh:41
│ │ │ │ +
Coefficients for lowest order edge elements on simplices.
Definition whitney/edges0.5/coefficients.hh:31
│ │ │ │ +
Interpolation for lowest order edge elements on simplices.
Definition whitney/edges0.5/interpolation.hh:33
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,129 +1,151 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ - * _c_o_m_m_o_n │ │ │ │ │ -localkey.hh │ │ │ │ │ + * _w_h_i_t_n_e_y │ │ │ │ │ +edges0.5.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALKEY_HH │ │ │ │ │ -6#define DUNE_LOCALKEY_HH │ │ │ │ │ -7 │ │ │ │ │ -8#include │ │ │ │ │ -9#include │ │ │ │ │ -10#include │ │ │ │ │ -11 │ │ │ │ │ -12namespace _D_u_n_e │ │ │ │ │ -13{ │ │ │ │ │ -_2_3 class _L_o_c_a_l_K_e_y │ │ │ │ │ -24 { │ │ │ │ │ -25 public: │ │ │ │ │ -26 │ │ │ │ │ -28 enum { │ │ │ │ │ -37 _i_n_t_e_r_s_e_c_t_i_o_n_C_o_d_i_m=666 │ │ │ │ │ -_3_8 }; │ │ │ │ │ -39 │ │ │ │ │ -_4_1 constexpr _L_o_c_a_l_K_e_y () noexcept │ │ │ │ │ -42 : values_{} │ │ │ │ │ -43 {} │ │ │ │ │ -44 │ │ │ │ │ -_5_0 constexpr _L_o_c_a_l_K_e_y (unsigned int s, unsigned int c, unsigned int i) noexcept │ │ │ │ │ -51 : values_{s,c,i} │ │ │ │ │ -52 {} │ │ │ │ │ +5 │ │ │ │ │ +6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH │ │ │ │ │ +7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH │ │ │ │ │ +8 │ │ │ │ │ +9#include │ │ │ │ │ +10 │ │ │ │ │ +11#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_w_h_i_t_n_e_y_/_e_d_g_e_s_0_._5_/_b_a_s_i_s_._h_h> │ │ │ │ │ +12#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_w_h_i_t_n_e_y_/_e_d_g_e_s_0_._5_/_c_o_e_f_f_i_c_i_e_n_t_s_._h_h> │ │ │ │ │ +13#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_w_h_i_t_n_e_y_/_e_d_g_e_s_0_._5_/_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h> │ │ │ │ │ +14 │ │ │ │ │ +15namespace _D_u_n_e { │ │ │ │ │ +16 │ │ │ │ │ +18 // │ │ │ │ │ +19 // FiniteElement │ │ │ │ │ +20 // │ │ │ │ │ +21 │ │ │ │ │ +23 │ │ │ │ │ +41 template │ │ │ │ │ +_4_2 class _E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t { │ │ │ │ │ +43 public: │ │ │ │ │ +_4_7 struct _T_r_a_i_t_s { │ │ │ │ │ +_4_8 typedef _E_d_g_e_S_0___5_B_a_s_i_s_<_G_e_o_m_e_t_r_y_,_ _R_F_> _B_a_s_i_s; │ │ │ │ │ +49 typedef _E_d_g_e_S_0___5_I_n_t_e_r_p_o_l_a_t_i_o_n _I_n_t_e_r_p_o_l_a_t_i_o_n; │ │ │ │ │ +_5_1 typedef _E_d_g_e_S_0___5_C_o_e_f_f_i_c_i_e_n_t_s_<_G_e_o_m_e_t_r_y_:_:_m_y_d_i_m_e_n_s_i_o_n_> _C_o_e_f_f_i_c_i_e_n_t_s; │ │ │ │ │ +52 }; │ │ │ │ │ 53 │ │ │ │ │ -55 [[nodiscard]] │ │ │ │ │ -_5_6 constexpr unsigned int _s_u_b_E_n_t_i_t_y () const noexcept │ │ │ │ │ -57 { │ │ │ │ │ -58 return values_[0]; │ │ │ │ │ -59 } │ │ │ │ │ -60 │ │ │ │ │ -62 [[nodiscard]] │ │ │ │ │ -_6_3 constexpr unsigned int _c_o_d_i_m () const noexcept │ │ │ │ │ -64 { │ │ │ │ │ -65 return values_[1]; │ │ │ │ │ -66 } │ │ │ │ │ -67 │ │ │ │ │ -69 [[nodiscard]] │ │ │ │ │ -_7_0 constexpr unsigned int _i_n_d_e_x () const noexcept │ │ │ │ │ -71 { │ │ │ │ │ -72 return values_[2]; │ │ │ │ │ -73 } │ │ │ │ │ -74 │ │ │ │ │ -_7_6 constexpr void _i_n_d_e_x (unsigned int i) noexcept │ │ │ │ │ -77 { │ │ │ │ │ -78 values_[2] = i; │ │ │ │ │ -79 } │ │ │ │ │ -80 │ │ │ │ │ -82 [[nodiscard]] │ │ │ │ │ -_8_3 bool _o_p_e_r_a_t_o_r_<_ (const _L_o_c_a_l_K_e_y& other) const noexcept │ │ │ │ │ -84 { │ │ │ │ │ -85 return values_ < other.values_; │ │ │ │ │ -86 } │ │ │ │ │ -87 │ │ │ │ │ -_8_9 friend std::ostream& _o_p_e_r_a_t_o_r_<_<_ (std::ostream& s, const _L_o_c_a_l_K_e_y& localKey) │ │ │ │ │ -90 { │ │ │ │ │ -91 return s << "[ subEntity: " << localKey._s_u_b_E_n_t_i_t_y() │ │ │ │ │ -92 << ", codim: " << localKey._c_o_d_i_m() │ │ │ │ │ -93 << ", index: " << localKey._i_n_d_e_x() << " ]"; │ │ │ │ │ -94 } │ │ │ │ │ -95 │ │ │ │ │ -96 private: │ │ │ │ │ -97 │ │ │ │ │ -98 // We use an array to store the values in order to be able to use the │ │ │ │ │ -array::operator< implementation │ │ │ │ │ -99 std::array values_; │ │ │ │ │ -100 │ │ │ │ │ -101 }; │ │ │ │ │ -102 │ │ │ │ │ -103} │ │ │ │ │ -104#endif │ │ │ │ │ +54 private: │ │ │ │ │ +55 typename _T_r_a_i_t_s_:_:_B_a_s_i_s basis_; │ │ │ │ │ +56 typename _T_r_a_i_t_s_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n interpolation_; │ │ │ │ │ +57 static const typename _T_r_a_i_t_s_:_:_C_o_e_f_f_i_c_i_e_n_t_s& coefficients_; │ │ │ │ │ +58 │ │ │ │ │ +59 public: │ │ │ │ │ +61 │ │ │ │ │ +64 template │ │ │ │ │ +_6_5 _E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t(const Geometry& geo, │ │ │ │ │ +66 const VertexOrder& vertexOrder) : │ │ │ │ │ +67 basis_(geo, vertexOrder), interpolation_(geo, vertexOrder) │ │ │ │ │ +68 { } │ │ │ │ │ +69 │ │ │ │ │ +_7_1 const typename _T_r_a_i_t_s_:_:_B_a_s_i_s& _b_a_s_i_s() const { return basis_; } │ │ │ │ │ +_7_3 const typename _T_r_a_i_t_s_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n& _i_n_t_e_r_p_o_l_a_t_i_o_n() const │ │ │ │ │ +74 { return interpolation_; } │ │ │ │ │ +_7_6 const typename _T_r_a_i_t_s_:_:_C_o_e_f_f_i_c_i_e_n_t_s& _c_o_e_f_f_i_c_i_e_n_t_s() const │ │ │ │ │ +77 { return coefficients_; } │ │ │ │ │ +_7_9 static constexpr GeometryType _t_y_p_e() { return GeometryTypes::simplex │ │ │ │ │ +(Geometry::mydimension); } │ │ │ │ │ +80 }; │ │ │ │ │ +81 │ │ │ │ │ +82 template │ │ │ │ │ +83 const typename _E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_<_G_e_o_m_e_t_r_y_,_ _R_F_>_:_:_T_r_a_i_t_s_:_:_C_o_e_f_f_i_c_i_e_n_t_s& │ │ │ │ │ +84 EdgeS0_5FiniteElement::coefficients_ = │ │ │ │ │ +85 typename Traits::Coefficients(); │ │ │ │ │ +86 │ │ │ │ │ +88 // │ │ │ │ │ +89 // Factory │ │ │ │ │ +90 // │ │ │ │ │ +91 │ │ │ │ │ +93 │ │ │ │ │ +102 template │ │ │ │ │ +_1_0_3 struct _E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y { │ │ │ │ │ +_1_0_4 typedef _E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_<_G_e_o_m_e_t_r_y_,_ _R_F_> _F_i_n_i_t_e_E_l_e_m_e_n_t; │ │ │ │ │ +105 │ │ │ │ │ +107 │ │ │ │ │ +121 template │ │ │ │ │ +_1_2_2 const _F_i_n_i_t_e_E_l_e_m_e_n_t _m_a_k_e(const Geometry& geometry, │ │ │ │ │ +123 const VertexOrder& vertexOrder) │ │ │ │ │ +124 { return _F_i_n_i_t_e_E_l_e_m_e_n_t(geometry, vertexOrder); } │ │ │ │ │ +125 }; │ │ │ │ │ +126 │ │ │ │ │ +127} // namespace Dune │ │ │ │ │ +128 │ │ │ │ │ +129#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ -Describe position of one degree of freedom. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:24 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y_:_:_o_p_e_r_a_t_o_r_< │ │ │ │ │ -bool operator<(const LocalKey &other) const noexcept │ │ │ │ │ -Less-than operator so we can use this class as a key type in stl containers. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:83 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y_:_:_i_n_d_e_x │ │ │ │ │ -constexpr void index(unsigned int i) noexcept │ │ │ │ │ -Set index component. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:76 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y_:_:_i_n_d_e_x │ │ │ │ │ -constexpr unsigned int index() const noexcept │ │ │ │ │ -Return offset within subentity. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:70 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ -constexpr LocalKey(unsigned int s, unsigned int c, unsigned int i) noexcept │ │ │ │ │ -Initialize all components. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:50 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y_:_:_i_n_t_e_r_s_e_c_t_i_o_n_C_o_d_i_m │ │ │ │ │ -@ intersectionCodim │ │ │ │ │ -Codimension returned by LocalKey::codim() for degrees of freedom attached to an │ │ │ │ │ -intersection. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:37 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y_:_:_c_o_d_i_m │ │ │ │ │ -constexpr unsigned int codim() const noexcept │ │ │ │ │ -Return codim of associated entity. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:63 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y_:_:_o_p_e_r_a_t_o_r_<_< │ │ │ │ │ -friend std::ostream & operator<<(std::ostream &s, const LocalKey &localKey) │ │ │ │ │ -Write LocalKey object to output stream. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:89 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ -constexpr LocalKey() noexcept │ │ │ │ │ -Standard constructor for uninitialized local index. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:41 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y_:_:_s_u_b_E_n_t_i_t_y │ │ │ │ │ -constexpr unsigned int subEntity() const noexcept │ │ │ │ │ -Return number of associated subentity. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:56 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +FiniteElement for lowest order edge elements on simplices. │ │ │ │ │ +DDeeffiinniittiioonn edges0.5.hh:42 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +EdgeS0_5FiniteElement(const Geometry &geo, const VertexOrder &vertexOrder) │ │ │ │ │ +Constructor. │ │ │ │ │ +DDeeffiinniittiioonn edges0.5.hh:65 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_t_y_p_e │ │ │ │ │ +static constexpr GeometryType type() │ │ │ │ │ +return geometry type of this element │ │ │ │ │ +DDeeffiinniittiioonn edges0.5.hh:79 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_b_a_s_i_s │ │ │ │ │ +const Traits::Basis & basis() const │ │ │ │ │ +return reference to the basis object │ │ │ │ │ +DDeeffiinniittiioonn edges0.5.hh:71 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_i_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +const Traits::Interpolation & interpolation() const │ │ │ │ │ +return reference to the interpolation object │ │ │ │ │ +DDeeffiinniittiioonn edges0.5.hh:73 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_c_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +const Traits::Coefficients & coefficients() const │ │ │ │ │ +return reference to the coefficients object │ │ │ │ │ +DDeeffiinniittiioonn edges0.5.hh:76 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s │ │ │ │ │ +DDeeffiinniittiioonn edges0.5.hh:47 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s_:_:_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +EdgeS0_5Coefficients< Geometry::mydimension > Coefficients │ │ │ │ │ +DDeeffiinniittiioonn edges0.5.hh:51 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +EdgeS0_5Interpolation< Geometry, typename Basis::Traits > Interpolation │ │ │ │ │ +DDeeffiinniittiioonn edges0.5.hh:50 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s_:_:_B_a_s_i_s │ │ │ │ │ +EdgeS0_5Basis< Geometry, RF > Basis │ │ │ │ │ +DDeeffiinniittiioonn edges0.5.hh:48 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y │ │ │ │ │ +Factory for EdgeS0_5FiniteElement objects. │ │ │ │ │ +DDeeffiinniittiioonn edges0.5.hh:103 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_:_:_m_a_k_e │ │ │ │ │ +const FiniteElement make(const Geometry &geometry, const VertexOrder │ │ │ │ │ +&vertexOrder) │ │ │ │ │ +construct the factory │ │ │ │ │ +DDeeffiinniittiioonn edges0.5.hh:122 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +EdgeS0_5FiniteElement< Geometry, RF > FiniteElement │ │ │ │ │ +DDeeffiinniittiioonn edges0.5.hh:104 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_B_a_s_i_s │ │ │ │ │ +Basis for order 0.5 (lowest order) edge elements on simplices. │ │ │ │ │ +DDeeffiinniittiioonn whitney/edges0.5/basis.hh:38 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_B_a_s_i_s_:_:_T_r_a_i_t_s │ │ │ │ │ +export type traits for function signature │ │ │ │ │ +DDeeffiinniittiioonn whitney/edges0.5/basis.hh:41 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +Coefficients for lowest order edge elements on simplices. │ │ │ │ │ +DDeeffiinniittiioonn whitney/edges0.5/coefficients.hh:31 │ │ │ │ │ +_D_u_n_e_:_:_E_d_g_e_S_0___5_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +Interpolation for lowest order edge elements on simplices. │ │ │ │ │ +DDeeffiinniittiioonn whitney/edges0.5/interpolation.hh:33 │ │ │ │ │ +_b_a_s_i_s_._h_h │ │ │ │ │ +_c_o_e_f_f_i_c_i_e_n_t_s_._h_h │ │ │ │ │ +_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00050.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: interface.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarinicube.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,54 +65,40 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
interface.hh File Reference
│ │ │ │ +
brezzidouglasmarinicube.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <array>
│ │ │ │ -#include <cstddef>
│ │ │ │ -#include <vector>
│ │ │ │ -#include <dune/geometry/type.hh>
│ │ │ │ -#include <dune/localfunctions/common/localkey.hh>
│ │ │ │ + │ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::FiniteElementInterface
 Interface for global-valued finite elements. More...
class  Dune::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 2, 1 >
 Brezzi-Douglas-Marini local finite elements for cubes with dimension 2 and order 1. More...
 
struct  Dune::FiniteElementInterface::Traits
 types of component objects More...
class  Dune::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 2, 2 >
 Brezzi-Douglas-Marini local finite elements for cubes with dimension 2 and order 2. More...
 
class  Dune::FiniteElementFactoryInterface< Geometry, VertexOrder >
 Factory interface for global-valued finite elements. More...
 
class  Dune::BasisInterface
 Interface for global-valued shape functions. More...
 
struct  Dune::BasisInterface::Traits
 types of domain and range More...
 
struct  Dune::InterpolationInterface
 Interface for global-valued interpolation. More...
 
struct  Dune::CoefficientsInterface
 Interface for global-valued coefficients. More...
class  Dune::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 3, 1 >
 Brezzi-Douglas-Marini local finite elements for cubes with dimension 3 and order 1. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,42 +1,34 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ - * _c_o_m_m_o_n │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -interface.hh File Reference │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h> │ │ │ │ │ +brezzidouglasmarinicube.hh File Reference │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_._h_h> │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_._h_h> │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_._h_h> │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ - class   _D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e │ │ │ │ │ -  Interface for global-valued finite elements. _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -struct   _D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s │ │ │ │ │ -  types of component objects _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ - class   _D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_I_n_t_e_r_f_a_c_e_<_ _G_e_o_m_e_t_r_y_,_ _V_e_r_t_e_x_O_r_d_e_r_ _> │ │ │ │ │ -  Factory interface for global-valued finite elements. _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ - class   _D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e │ │ │ │ │ -  Interface for global-valued shape functions. _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -struct   _D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s │ │ │ │ │ -  types of domain and range _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -struct   _D_u_n_e_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n_I_n_t_e_r_f_a_c_e │ │ │ │ │ -  Interface for global-valued interpolation. _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -struct   _D_u_n_e_:_:_C_o_e_f_f_i_c_i_e_n_t_s_I_n_t_e_r_f_a_c_e │ │ │ │ │ -  Interface for global-valued coefficients. _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _1_ _> │ │ │ │ │ +  Brezzi-Douglas-Marini local finite elements for cubes with dimension 2 │ │ │ │ │ + and order 1. _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ +class   _D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _2_ _> │ │ │ │ │ +  Brezzi-Douglas-Marini local finite elements for cubes with dimension 2 │ │ │ │ │ + and order 2. _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ +class   _D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _3_,_ _1_ _> │ │ │ │ │ +  Brezzi-Douglas-Marini local finite elements for cubes with dimension 3 │ │ │ │ │ + and order 1. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00050_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: interface.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarinicube.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,215 +70,112 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
interface.hh
│ │ │ │ +
brezzidouglasmarinicube.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5
│ │ │ │ -
6#ifndef DUNE_LOCALFUNCTIONS_INTERFACE_HH
│ │ │ │ -
7#define DUNE_LOCALFUNCTIONS_INTERFACE_HH
│ │ │ │ -
8
│ │ │ │ -
9#ifndef HEADERCHECK
│ │ │ │ -
10#error This header exists for documentation purposes only and should never be included directly.
│ │ │ │ -
11#endif
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
│ │ │ │ +
7
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
11
│ │ │ │
12
│ │ │ │ -
13#include <array>
│ │ │ │ -
14#include <cstddef>
│ │ │ │ -
15#include <vector>
│ │ │ │ -
16
│ │ │ │ -
17
│ │ │ │ -
18#include <dune/geometry/type.hh>
│ │ │ │ -
19
│ │ │ │ - │ │ │ │ -
21
│ │ │ │ -
22namespace Dune {
│ │ │ │ -
23
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
26 {
│ │ │ │ -
27 struct ImplementationDefined;
│ │ │ │ -
28
│ │ │ │ -
29 public:
│ │ │ │ -
31
│ │ │ │ -
│ │ │ │ -
34 struct Traits
│ │ │ │ -
35 {
│ │ │ │ +
13namespace Dune
│ │ │ │ +
14{
│ │ │ │ +
23 template<class D, class R, unsigned int dim, unsigned int order>
│ │ │ │ + │ │ │ │ +
25
│ │ │ │ +
29 template<class D, class R>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
31 : public BDM1Cube2DLocalFiniteElement<D, R>
│ │ │ │ +
32 {
│ │ │ │ +
33 public:
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
36 {}
│ │ │ │ +
│ │ │ │
37
│ │ │ │ -
42 typedef ImplementationDefined Basis;
│ │ │ │ -
44
│ │ │ │ -
49 typedef ImplementationDefined Coefficients;
│ │ │ │ -
51
│ │ │ │ -
56 typedef ImplementationDefined Interpolation;
│ │ │ │ -
57 };
│ │ │ │ -
│ │ │ │ -
58
│ │ │ │ -
60
│ │ │ │ - │ │ │ │ - │ │ │ │ -
70
│ │ │ │ -
72
│ │ │ │ -
76 const Traits::Basis& basis() const;
│ │ │ │ -
78
│ │ │ │ - │ │ │ │ -
84
│ │ │ │ - │ │ │ │ -
90 GeometryType type() const;
│ │ │ │ -
91 };
│ │ │ │ -
│ │ │ │ -
92
│ │ │ │ -
94
│ │ │ │ -
114 template<class Geometry, class VertexOrder>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
116 {
│ │ │ │ -
117 struct ImplementationDefined;
│ │ │ │ -
118
│ │ │ │ -
119 public:
│ │ │ │ -
121
│ │ │ │ -
126 typedef ImplementationDefined FiniteElement;
│ │ │ │ -
127
│ │ │ │ -
129
│ │ │ │ - │ │ │ │ -
133
│ │ │ │ -
154
│ │ │ │ -
156 const FiniteElement make(const Geometry&, const VertexOrder&, ...);
│ │ │ │ -
158 const FiniteElement make(const Geometry&, ...);
│ │ │ │ -
160 const FiniteElement make(const VertexOrder&, ...);
│ │ │ │ -
162
│ │ │ │ -
166 const FiniteElement make(const GeometryType&, ...);
│ │ │ │ -
168 const FiniteElement make(...);
│ │ │ │ -
169
│ │ │ │ -
171
│ │ │ │ -
172 };
│ │ │ │ -
│ │ │ │ -
173
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
176 {
│ │ │ │ -
177 struct ImplementationDefined;
│ │ │ │ -
178 constexpr static int implementationDefined = 42;
│ │ │ │ -
179
│ │ │ │ -
180 public:
│ │ │ │ -
182
│ │ │ │ -
│ │ │ │ -
187 struct Traits
│ │ │ │ -
188 {
│ │ │ │ -
191
│ │ │ │ -
193 typedef ImplementationDefined DomainFieldType;
│ │ │ │ -
194
│ │ │ │ -
196 constexpr static int dimDomain = implementationDefined;
│ │ │ │ -
197
│ │ │ │ -
199 typedef ImplementationDefined DomainType;
│ │ │ │ -
200
│ │ │ │ -
202
│ │ │ │ -
205
│ │ │ │ -
207 typedef ImplementationDefined RangeFieldType;
│ │ │ │ -
208
│ │ │ │ -
210 constexpr static int dimRange = implementationDefined;
│ │ │ │ -
211
│ │ │ │ -
213 typedef ImplementationDefined RangeType;
│ │ │ │ -
214
│ │ │ │ -
216
│ │ │ │ -
218
│ │ │ │ -
222 typedef ImplementationDefined Jacobian;
│ │ │ │ -
223 };
│ │ │ │ -
│ │ │ │ -
224
│ │ │ │ -
226 std::size_t size () const;
│ │ │ │ -
228 std::size_t order () const;
│ │ │ │ -
229
│ │ │ │ - │ │ │ │ -
232 std::vector<Traits::RangeType>& out) const;
│ │ │ │ -
233
│ │ │ │ - │ │ │ │ -
236 std::vector<Traits::Jacobian>& out) const;
│ │ │ │ -
237
│ │ │ │ -
243 void partial(const std::array<unsigned int,Traits::dimDomain>& order,
│ │ │ │ -
244 const typename Traits::DomainType& in,
│ │ │ │ -
245 std::vector<typename Traits::RangeType>& out) const;
│ │ │ │ -
246 };
│ │ │ │ -
│ │ │ │ -
247
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
250 {
│ │ │ │ -
252
│ │ │ │ - │ │ │ │ -
256
│ │ │ │ -
258
│ │ │ │ -
267 template<typename F, typename C>
│ │ │ │ -
268 void interpolate (const F& f, std::vector<C>& out) const;
│ │ │ │ -
269 };
│ │ │ │ -
│ │ │ │ -
270
│ │ │ │ -
272
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
278 {
│ │ │ │ -
280 std::size_t size() const;
│ │ │ │ -
281
│ │ │ │ -
283 const LocalKey& localKey(std::size_t i) const;
│ │ │ │ -
284 };
│ │ │ │ -
│ │ │ │ -
285}
│ │ │ │ -
286#endif // DUNE_LOCALFUNCTIONS_INTERFACE_HH
│ │ │ │ - │ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ +
45 {}
│ │ │ │ +
│ │ │ │ +
46 };
│ │ │ │ +
│ │ │ │ +
47
│ │ │ │ +
51 template<class D, class R>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
53 : public BDM2Cube2DLocalFiniteElement<D, R>
│ │ │ │ +
54 {
│ │ │ │ +
55 public:
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
58 {}
│ │ │ │ +
│ │ │ │ +
59
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ +
67 {}
│ │ │ │ +
│ │ │ │ +
68 };
│ │ │ │ +
│ │ │ │ +
69
│ │ │ │ +
73 template<class D, class R>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
75 : public BDM1Cube3DLocalFiniteElement<D, R>
│ │ │ │ +
76 {
│ │ │ │ +
77 public:
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
80 {}
│ │ │ │ +
│ │ │ │ +
81
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ +
89 {}
│ │ │ │ +
│ │ │ │ +
90 };
│ │ │ │ +
│ │ │ │ +
91
│ │ │ │ +
92} // namespace Dune
│ │ │ │ +
93
│ │ │ │ +
94#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
Interface for global-valued finite elements.
Definition interface.hh:26
│ │ │ │ -
GeometryType type() const
Extract geometry type of this finite element.
│ │ │ │ -
const Traits::Basis & basis() const
Extract basis of this finite element.
│ │ │ │ -
const Traits::Coefficients & coefficients() const
Extract coefficients of this finite element.
│ │ │ │ -
const Traits::Interpolation & interpolation() const
Extract interpolation of this finite element.
│ │ │ │ -
FiniteElementInterface(const FiniteElementInterface &)
Finite elements are CopyConstructible.
│ │ │ │ -
FiniteElementInterface(...)
Construct a finite element.
│ │ │ │ -
types of component objects
Definition interface.hh:35
│ │ │ │ -
ImplementationDefined Basis
type of the Basis
Definition interface.hh:42
│ │ │ │ -
ImplementationDefined Coefficients
type of the Coefficients
Definition interface.hh:49
│ │ │ │ -
ImplementationDefined Interpolation
type of the Interpolation
Definition interface.hh:56
│ │ │ │ -
Factory interface for global-valued finite elements.
Definition interface.hh:116
│ │ │ │ -
const FiniteElement make(const VertexOrder &,...)
create a finite element from a vertex ordering
│ │ │ │ -
const FiniteElement make(...)
create a finite element
│ │ │ │ -
const FiniteElement make(const GeometryType &,...)
create a finite element from a geometry type
│ │ │ │ -
FiniteElementFactoryInterface(...)
Construct a finite element factory.
│ │ │ │ -
ImplementationDefined FiniteElement
Type of the finite element.
Definition interface.hh:126
│ │ │ │ -
const FiniteElement make(const Geometry &, const VertexOrder &,...)
create a finite element from a geometry and a vertex ordering
│ │ │ │ -
const FiniteElement make(const Geometry &,...)
create a finite element from a geometry
│ │ │ │ -
Interface for global-valued shape functions.
Definition interface.hh:176
│ │ │ │ -
void partial(const std::array< unsigned int, Traits::dimDomain > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of any order of all shape functions.
│ │ │ │ -
void evaluateFunction(const Traits::DomainType &in, std::vector< Traits::RangeType > &out) const
Evaluate all shape functions at given position.
│ │ │ │ -
std::size_t order() const
Polynomial order of the shape functions for quadrature.
│ │ │ │ -
void evaluateJacobian(const Traits::DomainType &in, std::vector< Traits::Jacobian > &out) const
Evaluate Jacobian of all shape functions at given position.
│ │ │ │ -
std::size_t size() const
Number of shape functions.
│ │ │ │ -
types of domain and range
Definition interface.hh:188
│ │ │ │ -
static constexpr int dimRange
dimension of the range
Definition interface.hh:210
│ │ │ │ -
ImplementationDefined Jacobian
Jacobian properties.
Definition interface.hh:222
│ │ │ │ -
ImplementationDefined DomainType
Type used for coordinate vectors in the domain.
Definition interface.hh:199
│ │ │ │ -
ImplementationDefined RangeFieldType
Field type of the range.
Definition interface.hh:207
│ │ │ │ -
ImplementationDefined DomainFieldType
Field type of the domain.
Definition interface.hh:193
│ │ │ │ -
ImplementationDefined RangeType
Type used for range values.
Definition interface.hh:213
│ │ │ │ -
static constexpr int dimDomain
dimension of the domain
Definition interface.hh:196
│ │ │ │ -
Interface for global-valued interpolation.
Definition interface.hh:250
│ │ │ │ -
BasisInterface::Traits Traits
Export basis traits.
Definition interface.hh:255
│ │ │ │ -
void interpolate(const F &f, std::vector< C > &out) const
Determine coefficients interpolating a given function.
│ │ │ │ -
Interface for global-valued coefficients.
Definition interface.hh:278
│ │ │ │ -
const LocalKey & localKey(std::size_t i) const
get i'th index
│ │ │ │ -
std::size_t size() const
number of coefficients
│ │ │ │ -
Describe position of one degree of freedom.
Definition localkey.hh:24
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini1cube2d.hh:27
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on hexahedron.
Definition brezzidouglasmarini1cube3d.hh:27
│ │ │ │ +
Second order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini2cube2d.hh:27
│ │ │ │ +
Brezzi-Douglas-Marini local finite element for cubes.
Definition brezzidouglasmarinicube.hh:24
│ │ │ │ +
BrezziDouglasMariniCubeLocalFiniteElement(int s)
Constructor with a set of edge orientations.
Definition brezzidouglasmarinicube.hh:43
│ │ │ │ +
BrezziDouglasMariniCubeLocalFiniteElement()
Default constructor.
Definition brezzidouglasmarinicube.hh:35
│ │ │ │ +
BrezziDouglasMariniCubeLocalFiniteElement()
Default constructor.
Definition brezzidouglasmarinicube.hh:57
│ │ │ │ +
BrezziDouglasMariniCubeLocalFiniteElement(int s)
Constructor with a set of edge orientations.
Definition brezzidouglasmarinicube.hh:65
│ │ │ │ +
BrezziDouglasMariniCubeLocalFiniteElement()
Default constructor.
Definition brezzidouglasmarinicube.hh:79
│ │ │ │ +
BrezziDouglasMariniCubeLocalFiniteElement(int s)
Constructor with a set of edge orientations.
Definition brezzidouglasmarinicube.hh:87
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,290 +1,122 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ - * _c_o_m_m_o_n │ │ │ │ │ -interface.hh │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ +brezzidouglasmarinicube.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5 │ │ │ │ │ -6#ifndef DUNE_LOCALFUNCTIONS_INTERFACE_HH │ │ │ │ │ -7#define DUNE_LOCALFUNCTIONS_INTERFACE_HH │ │ │ │ │ -8 │ │ │ │ │ -9#ifndef HEADERCHECK │ │ │ │ │ -10#error This header exists for documentation purposes only and should never be │ │ │ │ │ -included directly. │ │ │ │ │ -11#endif │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH │ │ │ │ │ +7 │ │ │ │ │ +8#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_._h_h> │ │ │ │ │ +9#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_._h_h> │ │ │ │ │ +10#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_._h_h> │ │ │ │ │ +11 │ │ │ │ │ 12 │ │ │ │ │ -13#include │ │ │ │ │ -14#include │ │ │ │ │ -15#include │ │ │ │ │ -16 │ │ │ │ │ -17 │ │ │ │ │ -18#include │ │ │ │ │ -19 │ │ │ │ │ -20#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h> │ │ │ │ │ -21 │ │ │ │ │ -22namespace _D_u_n_e { │ │ │ │ │ -23 │ │ │ │ │ -_2_5 class _F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e │ │ │ │ │ -26 { │ │ │ │ │ -27 struct ImplementationDefined; │ │ │ │ │ -28 │ │ │ │ │ -29 public: │ │ │ │ │ -31 │ │ │ │ │ -_3_4 struct _T_r_a_i_t_s │ │ │ │ │ -35 { │ │ │ │ │ +13namespace _D_u_n_e │ │ │ │ │ +14{ │ │ │ │ │ +23 template │ │ │ │ │ +_2_4 class _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t; │ │ │ │ │ +25 │ │ │ │ │ +29 template │ │ │ │ │ +_3_0 class _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +31 : public _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +32 { │ │ │ │ │ +33 public: │ │ │ │ │ +_3_5 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t() │ │ │ │ │ +36 {} │ │ │ │ │ 37 │ │ │ │ │ -_4_2 typedef ImplementationDefined _B_a_s_i_s; │ │ │ │ │ -44 │ │ │ │ │ -_4_9 typedef ImplementationDefined _C_o_e_f_f_i_c_i_e_n_t_s; │ │ │ │ │ -51 │ │ │ │ │ -_5_6 typedef ImplementationDefined _I_n_t_e_r_p_o_l_a_t_i_o_n; │ │ │ │ │ -57 }; │ │ │ │ │ -58 │ │ │ │ │ -60 │ │ │ │ │ -_6_7 _F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e(...); │ │ │ │ │ -_6_9 _F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e(const _F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e&); │ │ │ │ │ -70 │ │ │ │ │ -72 │ │ │ │ │ -_7_6 const _T_r_a_i_t_s_:_:_B_a_s_i_s& _b_a_s_i_s() const; │ │ │ │ │ -78 │ │ │ │ │ -_8_2 const _T_r_a_i_t_s_:_:_C_o_e_f_f_i_c_i_e_n_t_s& _c_o_e_f_f_i_c_i_e_n_t_s() const; │ │ │ │ │ -84 │ │ │ │ │ -_8_8 const _T_r_a_i_t_s_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n& _i_n_t_e_r_p_o_l_a_t_i_o_n() const; │ │ │ │ │ -_9_0 GeometryType _t_y_p_e() const; │ │ │ │ │ -91 }; │ │ │ │ │ -92 │ │ │ │ │ -94 │ │ │ │ │ -114 template │ │ │ │ │ -_1_1_5 class _F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_I_n_t_e_r_f_a_c_e │ │ │ │ │ -116 { │ │ │ │ │ -117 struct ImplementationDefined; │ │ │ │ │ -118 │ │ │ │ │ -119 public: │ │ │ │ │ -121 │ │ │ │ │ -_1_2_6 typedef ImplementationDefined _F_i_n_i_t_e_E_l_e_m_e_n_t; │ │ │ │ │ -127 │ │ │ │ │ -129 │ │ │ │ │ -_1_3_2 _F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_I_n_t_e_r_f_a_c_e(...); │ │ │ │ │ -133 │ │ │ │ │ -154 │ │ │ │ │ -_1_5_6 const _F_i_n_i_t_e_E_l_e_m_e_n_t _m_a_k_e(const Geometry&, const VertexOrder&, ...); │ │ │ │ │ -_1_5_8 const _F_i_n_i_t_e_E_l_e_m_e_n_t _m_a_k_e(const Geometry&, ...); │ │ │ │ │ -_1_6_0 const _F_i_n_i_t_e_E_l_e_m_e_n_t _m_a_k_e(const VertexOrder&, ...); │ │ │ │ │ -162 │ │ │ │ │ -_1_6_6 const _F_i_n_i_t_e_E_l_e_m_e_n_t _m_a_k_e(const GeometryType&, ...); │ │ │ │ │ -_1_6_8 const _F_i_n_i_t_e_E_l_e_m_e_n_t _m_a_k_e(...); │ │ │ │ │ -169 │ │ │ │ │ -171 │ │ │ │ │ -172 }; │ │ │ │ │ -173 │ │ │ │ │ -_1_7_5 class _B_a_s_i_s_I_n_t_e_r_f_a_c_e │ │ │ │ │ -176 { │ │ │ │ │ -177 struct ImplementationDefined; │ │ │ │ │ -178 constexpr static int implementationDefined = 42; │ │ │ │ │ -179 │ │ │ │ │ -180 public: │ │ │ │ │ -182 │ │ │ │ │ -_1_8_7 struct _T_r_a_i_t_s │ │ │ │ │ -188 { │ │ │ │ │ -191 │ │ │ │ │ -_1_9_3 typedef ImplementationDefined _D_o_m_a_i_n_F_i_e_l_d_T_y_p_e; │ │ │ │ │ -194 │ │ │ │ │ -_1_9_6 constexpr static int _d_i_m_D_o_m_a_i_n = implementationDefined; │ │ │ │ │ -197 │ │ │ │ │ -_1_9_9 typedef ImplementationDefined _D_o_m_a_i_n_T_y_p_e; │ │ │ │ │ -200 │ │ │ │ │ -202 │ │ │ │ │ -205 │ │ │ │ │ -_2_0_7 typedef ImplementationDefined _R_a_n_g_e_F_i_e_l_d_T_y_p_e; │ │ │ │ │ -208 │ │ │ │ │ -_2_1_0 constexpr static int _d_i_m_R_a_n_g_e = implementationDefined; │ │ │ │ │ -211 │ │ │ │ │ -_2_1_3 typedef ImplementationDefined _R_a_n_g_e_T_y_p_e; │ │ │ │ │ -214 │ │ │ │ │ -216 │ │ │ │ │ -218 │ │ │ │ │ -_2_2_2 typedef ImplementationDefined _J_a_c_o_b_i_a_n; │ │ │ │ │ -223 }; │ │ │ │ │ -224 │ │ │ │ │ -_2_2_6 std::size_t _s_i_z_e () const; │ │ │ │ │ -_2_2_8 std::size_t _o_r_d_e_r () const; │ │ │ │ │ -229 │ │ │ │ │ -_2_3_1 void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(const _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ -232 std::vector& out) const; │ │ │ │ │ -233 │ │ │ │ │ -_2_3_5 void _e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n(const _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ -236 std::vector& out) const; │ │ │ │ │ -237 │ │ │ │ │ -_2_4_3 void _p_a_r_t_i_a_l(const std::array& _o_r_d_e_r, │ │ │ │ │ -244 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ -245 std::vector& out) const; │ │ │ │ │ -246 }; │ │ │ │ │ -247 │ │ │ │ │ -_2_4_9 struct _I_n_t_e_r_p_o_l_a_t_i_o_n_I_n_t_e_r_f_a_c_e │ │ │ │ │ -250 { │ │ │ │ │ -252 │ │ │ │ │ -_2_5_5 typedef _B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s _T_r_a_i_t_s; │ │ │ │ │ -256 │ │ │ │ │ -258 │ │ │ │ │ -267 template │ │ │ │ │ -_2_6_8 void _i_n_t_e_r_p_o_l_a_t_e (const F& f, std::vector& out) const; │ │ │ │ │ -269 }; │ │ │ │ │ -270 │ │ │ │ │ -272 │ │ │ │ │ -_2_7_7 struct _C_o_e_f_f_i_c_i_e_n_t_s_I_n_t_e_r_f_a_c_e │ │ │ │ │ -278 { │ │ │ │ │ -_2_8_0 std::size_t _s_i_z_e() const; │ │ │ │ │ -281 │ │ │ │ │ -_2_8_3 const _L_o_c_a_l_K_e_y& _l_o_c_a_l_K_e_y(std::size_t i) const; │ │ │ │ │ -284 }; │ │ │ │ │ -285} │ │ │ │ │ -286#endif // DUNE_LOCALFUNCTIONS_INTERFACE_HH │ │ │ │ │ -_l_o_c_a_l_k_e_y_._h_h │ │ │ │ │ +_4_3 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(int s) │ │ │ │ │ +44 : _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t::_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(s) │ │ │ │ │ +45 {} │ │ │ │ │ +46 }; │ │ │ │ │ +47 │ │ │ │ │ +51 template │ │ │ │ │ +_5_2 class _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +53 : public _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +54 { │ │ │ │ │ +55 public: │ │ │ │ │ +_5_7 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t() │ │ │ │ │ +58 {} │ │ │ │ │ +59 │ │ │ │ │ +_6_5 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(int s) │ │ │ │ │ +66 : _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t::_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(s) │ │ │ │ │ +67 {} │ │ │ │ │ +68 }; │ │ │ │ │ +69 │ │ │ │ │ +73 template │ │ │ │ │ +_7_4 class _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +75 : public _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +76 { │ │ │ │ │ +77 public: │ │ │ │ │ +_7_9 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t() │ │ │ │ │ +80 {} │ │ │ │ │ +81 │ │ │ │ │ +_8_7 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(int s) │ │ │ │ │ +88 : _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t::_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(s) │ │ │ │ │ +89 {} │ │ │ │ │ +90 }; │ │ │ │ │ +91 │ │ │ │ │ +92} // namespace Dune │ │ │ │ │ +93 │ │ │ │ │ +94#endif // #ifndef │ │ │ │ │ +DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_._h_h │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_._h_h │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_._h_h │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e │ │ │ │ │ -Interface for global-valued finite elements. │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:26 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_:_:_t_y_p_e │ │ │ │ │ -GeometryType type() const │ │ │ │ │ -Extract geometry type of this finite element. │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_:_:_b_a_s_i_s │ │ │ │ │ -const Traits::Basis & basis() const │ │ │ │ │ -Extract basis of this finite element. │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_:_:_c_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -const Traits::Coefficients & coefficients() const │ │ │ │ │ -Extract coefficients of this finite element. │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_:_:_i_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -const Traits::Interpolation & interpolation() const │ │ │ │ │ -Extract interpolation of this finite element. │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e │ │ │ │ │ -FiniteElementInterface(const FiniteElementInterface &) │ │ │ │ │ -Finite elements are CopyConstructible. │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e │ │ │ │ │ -FiniteElementInterface(...) │ │ │ │ │ -Construct a finite element. │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s │ │ │ │ │ -types of component objects │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:35 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s_:_:_B_a_s_i_s │ │ │ │ │ -ImplementationDefined Basis │ │ │ │ │ -type of the Basis │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:42 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s_:_:_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -ImplementationDefined Coefficients │ │ │ │ │ -type of the Coefficients │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:49 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -ImplementationDefined Interpolation │ │ │ │ │ -type of the Interpolation │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:56 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_I_n_t_e_r_f_a_c_e │ │ │ │ │ -Factory interface for global-valued finite elements. │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:116 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_I_n_t_e_r_f_a_c_e_:_:_m_a_k_e │ │ │ │ │ -const FiniteElement make(const VertexOrder &,...) │ │ │ │ │ -create a finite element from a vertex ordering │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_I_n_t_e_r_f_a_c_e_:_:_m_a_k_e │ │ │ │ │ -const FiniteElement make(...) │ │ │ │ │ -create a finite element │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_I_n_t_e_r_f_a_c_e_:_:_m_a_k_e │ │ │ │ │ -const FiniteElement make(const GeometryType &,...) │ │ │ │ │ -create a finite element from a geometry type │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_I_n_t_e_r_f_a_c_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_I_n_t_e_r_f_a_c_e │ │ │ │ │ -FiniteElementFactoryInterface(...) │ │ │ │ │ -Construct a finite element factory. │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_I_n_t_e_r_f_a_c_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -ImplementationDefined FiniteElement │ │ │ │ │ -Type of the finite element. │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:126 │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_I_n_t_e_r_f_a_c_e_:_:_m_a_k_e │ │ │ │ │ -const FiniteElement make(const Geometry &, const VertexOrder &,...) │ │ │ │ │ -create a finite element from a geometry and a vertex ordering │ │ │ │ │ -_D_u_n_e_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_I_n_t_e_r_f_a_c_e_:_:_m_a_k_e │ │ │ │ │ -const FiniteElement make(const Geometry &,...) │ │ │ │ │ -create a finite element from a geometry │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e │ │ │ │ │ -Interface for global-valued shape functions. │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:176 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_p_a_r_t_i_a_l │ │ │ │ │ -void partial(const std::array< unsigned int, Traits::dimDomain > &order, const │ │ │ │ │ -typename Traits::DomainType &in, std::vector< typename Traits::RangeType > │ │ │ │ │ -&out) const │ │ │ │ │ -Evaluate partial derivatives of any order of all shape functions. │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n │ │ │ │ │ -void evaluateFunction(const Traits::DomainType &in, std::vector< Traits:: │ │ │ │ │ -RangeType > &out) const │ │ │ │ │ -Evaluate all shape functions at given position. │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_o_r_d_e_r │ │ │ │ │ -std::size_t order() const │ │ │ │ │ -Polynomial order of the shape functions for quadrature. │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n │ │ │ │ │ -void evaluateJacobian(const Traits::DomainType &in, std::vector< Traits:: │ │ │ │ │ -Jacobian > &out) const │ │ │ │ │ -Evaluate Jacobian of all shape functions at given position. │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_s_i_z_e │ │ │ │ │ -std::size_t size() const │ │ │ │ │ -Number of shape functions. │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s │ │ │ │ │ -types of domain and range │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:188 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s_:_:_d_i_m_R_a_n_g_e │ │ │ │ │ -static constexpr int dimRange │ │ │ │ │ -dimension of the range │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:210 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s_:_:_J_a_c_o_b_i_a_n │ │ │ │ │ -ImplementationDefined Jacobian │ │ │ │ │ -Jacobian properties. │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:222 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e │ │ │ │ │ -ImplementationDefined DomainType │ │ │ │ │ -Type used for coordinate vectors in the domain. │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:199 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s_:_:_R_a_n_g_e_F_i_e_l_d_T_y_p_e │ │ │ │ │ -ImplementationDefined RangeFieldType │ │ │ │ │ -Field type of the range. │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:207 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s_:_:_D_o_m_a_i_n_F_i_e_l_d_T_y_p_e │ │ │ │ │ -ImplementationDefined DomainFieldType │ │ │ │ │ -Field type of the domain. │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:193 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s_:_:_R_a_n_g_e_T_y_p_e │ │ │ │ │ -ImplementationDefined RangeType │ │ │ │ │ -Type used for range values. │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:213 │ │ │ │ │ -_D_u_n_e_:_:_B_a_s_i_s_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s_:_:_d_i_m_D_o_m_a_i_n │ │ │ │ │ -static constexpr int dimDomain │ │ │ │ │ -dimension of the domain │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:196 │ │ │ │ │ -_D_u_n_e_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n_I_n_t_e_r_f_a_c_e │ │ │ │ │ -Interface for global-valued interpolation. │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:250 │ │ │ │ │ -_D_u_n_e_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n_I_n_t_e_r_f_a_c_e_:_:_T_r_a_i_t_s │ │ │ │ │ -BasisInterface::Traits Traits │ │ │ │ │ -Export basis traits. │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:255 │ │ │ │ │ -_D_u_n_e_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n_I_n_t_e_r_f_a_c_e_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ -void interpolate(const F &f, std::vector< C > &out) const │ │ │ │ │ -Determine coefficients interpolating a given function. │ │ │ │ │ -_D_u_n_e_:_:_C_o_e_f_f_i_c_i_e_n_t_s_I_n_t_e_r_f_a_c_e │ │ │ │ │ -Interface for global-valued coefficients. │ │ │ │ │ -DDeeffiinniittiioonn interface.hh:278 │ │ │ │ │ -_D_u_n_e_:_:_C_o_e_f_f_i_c_i_e_n_t_s_I_n_t_e_r_f_a_c_e_:_:_l_o_c_a_l_K_e_y │ │ │ │ │ -const LocalKey & localKey(std::size_t i) const │ │ │ │ │ -get i'th index │ │ │ │ │ -_D_u_n_e_:_:_C_o_e_f_f_i_c_i_e_n_t_s_I_n_t_e_r_f_a_c_e_:_:_s_i_z_e │ │ │ │ │ -std::size_t size() const │ │ │ │ │ -number of coefficients │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ -Describe position of one degree of freedom. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:24 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:27 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on hexahedron. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3d.hh:27 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +Second order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2d.hh:27 │ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +Brezzi-Douglas-Marini local finite element for cubes. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinicube.hh:24 │ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _1_ _>_:_: │ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BrezziDouglasMariniCubeLocalFiniteElement(int s) │ │ │ │ │ +Constructor with a set of edge orientations. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinicube.hh:43 │ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _1_ _>_:_: │ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BrezziDouglasMariniCubeLocalFiniteElement() │ │ │ │ │ +Default constructor. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinicube.hh:35 │ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _2_ _>_:_: │ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BrezziDouglasMariniCubeLocalFiniteElement() │ │ │ │ │ +Default constructor. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinicube.hh:57 │ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _2_ _>_:_: │ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BrezziDouglasMariniCubeLocalFiniteElement(int s) │ │ │ │ │ +Constructor with a set of edge orientations. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinicube.hh:65 │ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _3_,_ _1_ _>_:_: │ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BrezziDouglasMariniCubeLocalFiniteElement() │ │ │ │ │ +Default constructor. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinicube.hh:79 │ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _3_,_ _1_ _>_:_: │ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BrezziDouglasMariniCubeLocalFiniteElement(int s) │ │ │ │ │ +Constructor with a set of edge orientations. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinicube.hh:87 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2cube2dlocalinterpolation.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -72,26 +72,27 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini2cube2dlocalinterpolation.hh File Reference
│ │ │ │ +
brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <vector>
│ │ │ │ -#include <dune/geometry/quadraturerules.hh>
│ │ │ │ +
#include <cstddef>
│ │ │ │ +#include <vector>
│ │ │ │ +#include "../../common/localkey.hh"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM2Cube2DLocalInterpolation< LB >
 First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
class  Dune::BDM2Cube2DLocalCoefficients
 Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,21 +3,22 @@ │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini2cube2dlocalinterpolation.hh File Reference │ │ │ │ │ +brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ #include │ │ │ │ │ -#include │ │ │ │ │ +#include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_ _L_B_ _> │ │ │ │ │ -  First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +  Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals. │ │ │ │ │ _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2cube2dlocalinterpolation.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini2cube2dlocalcoefficients.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,149 +74,77 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
brezzidouglasmarini2cube2dlocalinterpolation.hh
│ │ │ │ +
brezzidouglasmarini2cube2dlocalcoefficients.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH
│ │ │ │
7
│ │ │ │ -
8#include <vector>
│ │ │ │ -
9
│ │ │ │ -
10#include <dune/geometry/quadraturerules.hh>
│ │ │ │ -
11
│ │ │ │ -
12namespace Dune
│ │ │ │ -
13{
│ │ │ │ -
14
│ │ │ │ -
23 template<class LB>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
25 {
│ │ │ │ -
26
│ │ │ │ -
27 public:
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
30 {
│ │ │ │ -
31 sign0 = sign1 = sign2 = sign3 = 1.0;
│ │ │ │ -
32 }
│ │ │ │ -
│ │ │ │ -
33
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
40 {
│ │ │ │ -
41 sign0 = sign1 = sign2 = sign3 = 1.0;
│ │ │ │ -
42 if (s & 1)
│ │ │ │ -
43 {
│ │ │ │ -
44 sign0 = -1.0;
│ │ │ │ -
45 }
│ │ │ │ -
46 if (s & 2)
│ │ │ │ -
47 {
│ │ │ │ -
48 sign1 = -1.0;
│ │ │ │ -
49 }
│ │ │ │ -
50 if (s & 4)
│ │ │ │ -
51 {
│ │ │ │ -
52 sign2 = -1.0;
│ │ │ │ -
53 }
│ │ │ │ -
54 if (s & 8)
│ │ │ │ -
55 {
│ │ │ │ -
56 sign3 = -1.0;
│ │ │ │ -
57 }
│ │ │ │ -
58
│ │ │ │ -
59 n0[0] = -1.0;
│ │ │ │ -
60 n0[1] = 0.0;
│ │ │ │ -
61 n1[0] = 1.0;
│ │ │ │ -
62 n1[1] = 0.0;
│ │ │ │ -
63 n2[0] = 0.0;
│ │ │ │ -
64 n2[1] = -1.0;
│ │ │ │ -
65 n3[0] = 0.0;
│ │ │ │ -
66 n3[1] = 1.0;
│ │ │ │ -
67 }
│ │ │ │ -
│ │ │ │ -
68
│ │ │ │ -
77 template<typename F, typename C>
│ │ │ │ -
│ │ │ │ -
78 void interpolate(const F& f, std::vector<C>& out) const
│ │ │ │ -
79 {
│ │ │ │ -
80 // f gives v*outer normal at a point on the edge!
│ │ │ │ -
81 typedef typename LB::Traits::RangeFieldType Scalar;
│ │ │ │ -
82 typedef typename LB::Traits::DomainFieldType Vector;
│ │ │ │ -
83
│ │ │ │ -
84 out.resize(14);
│ │ │ │ -
85 fill(out.begin(), out.end(), 0.0);
│ │ │ │ -
86
│ │ │ │ -
87 const int qOrder = 4;
│ │ │ │ -
88 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
│ │ │ │ -
89
│ │ │ │ -
90 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
│ │ │ │ -
91 it != rule.end(); ++it)
│ │ │ │ -
92 {
│ │ │ │ -
93 Scalar qPos = it->position();
│ │ │ │ -
94
│ │ │ │ -
95 typename LB::Traits::DomainType localPos;
│ │ │ │ -
96
│ │ │ │ -
97 localPos[0] = 0.0;
│ │ │ │ -
98 localPos[1] = qPos;
│ │ │ │ -
99 auto y = f(localPos);
│ │ │ │ -
100 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
│ │ │ │ -
101 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
│ │ │ │ -
102 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign0;
│ │ │ │ -
103
│ │ │ │ -
104 localPos[0] = 1.0;
│ │ │ │ -
105 localPos[1] = qPos;
│ │ │ │ -
106 y = f(localPos);
│ │ │ │ -
107 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1;
│ │ │ │ -
108 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
│ │ │ │ -
109 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign1;
│ │ │ │ -
110
│ │ │ │ -
111 localPos[0] = qPos;
│ │ │ │ -
112 localPos[1] = 0.0;
│ │ │ │ -
113 y = f(localPos);
│ │ │ │ -
114 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
│ │ │ │ -
115 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
│ │ │ │ -
116 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign2;
│ │ │ │ -
117
│ │ │ │ -
118 localPos[0] = qPos;
│ │ │ │ -
119 localPos[1] = 1.0;
│ │ │ │ -
120 y = f(localPos);
│ │ │ │ -
121 out[9] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
│ │ │ │ -
122 out[10] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
│ │ │ │ -
123 out[11] += (y[0]*n3[0] + y[1]*n3[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign3;
│ │ │ │ -
124 }
│ │ │ │ -
125
│ │ │ │ -
126 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
│ │ │ │ -
127
│ │ │ │ -
128 for (typename QuadratureRule<Vector,2>::const_iterator it=rule2.begin(); it!=rule2.end(); ++it)
│ │ │ │ -
129 {
│ │ │ │ -
130 auto y = f(it->position());
│ │ │ │ -
131 out[12] += y[0]*it->weight();
│ │ │ │ -
132 out[13] += y[1]*it->weight();
│ │ │ │ -
133 }
│ │ │ │ -
134 }
│ │ │ │ -
│ │ │ │ -
135
│ │ │ │ -
136 private:
│ │ │ │ -
137 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
│ │ │ │ -
138 typename LB::Traits::DomainType n0, n1, n2, n3;
│ │ │ │ -
139 };
│ │ │ │ +
8#include <cstddef>
│ │ │ │ +
9#include <vector>
│ │ │ │ +
10
│ │ │ │ +
11#include "../../common/localkey.hh"
│ │ │ │ +
12
│ │ │ │ +
13namespace Dune
│ │ │ │ +
14{
│ │ │ │ +
15
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
24 {
│ │ │ │ +
25
│ │ │ │ +
26 public:
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
29 {
│ │ │ │ +
30 for (std::size_t i = 0; i < 4; ++i)
│ │ │ │ +
31 {
│ │ │ │ +
32 li[3 * i] = LocalKey(i,1,0);
│ │ │ │ +
33 li[3 * i + 1] = LocalKey(i,1,1);
│ │ │ │ +
34 li[3 * i + 2] = LocalKey(i,1,2);
│ │ │ │ +
35 }
│ │ │ │ +
36 li[12] = LocalKey(0,0,0);
│ │ │ │ +
37 li[13] = LocalKey(0,0,1);
│ │ │ │ +
38 }
│ │ │ │ +
│ │ │ │ +
39
│ │ │ │ +
│ │ │ │ +
41 std::size_t size() const
│ │ │ │ +
42 {
│ │ │ │ +
43 return 14;
│ │ │ │ +
44 }
│ │ │ │ +
│ │ │ │ +
45
│ │ │ │ +
│ │ │ │ +
47 const LocalKey& localKey(std::size_t i) const
│ │ │ │ +
48 {
│ │ │ │ +
49 return li[i];
│ │ │ │ +
50 }
│ │ │ │ +
│ │ │ │ +
51
│ │ │ │ +
52 private:
│ │ │ │ +
53 std::vector<LocalKey> li;
│ │ │ │ +
54 };
│ │ │ │
│ │ │ │ -
140} // end namespace Dune
│ │ │ │ -
141#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
│ │ │ │ +
55} // end namespace Dune
│ │ │ │ +
56#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:25
│ │ │ │ -
BDM2Cube2DLocalInterpolation(unsigned int s)
Make set number s, where 0 <= s < 16.
Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:39
│ │ │ │ -
BDM2Cube2DLocalInterpolation()
Standard constructor.
Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:29
│ │ │ │ -
void interpolate(const F &f, std::vector< C > &out) const
Interpolate a given function with shape functions.
Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:78
│ │ │ │ +
Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals.
Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:24
│ │ │ │ +
BDM2Cube2DLocalCoefficients()
Standard constructor.
Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:28
│ │ │ │ +
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:47
│ │ │ │ +
std::size_t size() const
number of coefficients
Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:41
│ │ │ │ +
Describe position of one degree of freedom.
Definition localkey.hh:24
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -2,156 +2,79 @@ │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d │ │ │ │ │ -brezzidouglasmarini2cube2dlocalinterpolation.hh │ │ │ │ │ +brezzidouglasmarini2cube2dlocalcoefficients.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ -9 │ │ │ │ │ -10#include │ │ │ │ │ -11 │ │ │ │ │ -12namespace _D_u_n_e │ │ │ │ │ -13{ │ │ │ │ │ -14 │ │ │ │ │ -23 template │ │ │ │ │ -_2_4 class _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -25 { │ │ │ │ │ -26 │ │ │ │ │ -27 public: │ │ │ │ │ -_2_9 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n() │ │ │ │ │ -30 { │ │ │ │ │ -31 sign0 = sign1 = sign2 = sign3 = 1.0; │ │ │ │ │ -32 } │ │ │ │ │ -33 │ │ │ │ │ -_3_9 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n(unsigned int s) │ │ │ │ │ -40 { │ │ │ │ │ -41 sign0 = sign1 = sign2 = sign3 = 1.0; │ │ │ │ │ -42 if (s & 1) │ │ │ │ │ -43 { │ │ │ │ │ -44 sign0 = -1.0; │ │ │ │ │ -45 } │ │ │ │ │ -46 if (s & 2) │ │ │ │ │ -47 { │ │ │ │ │ -48 sign1 = -1.0; │ │ │ │ │ -49 } │ │ │ │ │ -50 if (s & 4) │ │ │ │ │ -51 { │ │ │ │ │ -52 sign2 = -1.0; │ │ │ │ │ -53 } │ │ │ │ │ -54 if (s & 8) │ │ │ │ │ -55 { │ │ │ │ │ -56 sign3 = -1.0; │ │ │ │ │ -57 } │ │ │ │ │ -58 │ │ │ │ │ -59 n0[0] = -1.0; │ │ │ │ │ -60 n0[1] = 0.0; │ │ │ │ │ -61 n1[0] = 1.0; │ │ │ │ │ -62 n1[1] = 0.0; │ │ │ │ │ -63 n2[0] = 0.0; │ │ │ │ │ -64 n2[1] = -1.0; │ │ │ │ │ -65 n3[0] = 0.0; │ │ │ │ │ -66 n3[1] = 1.0; │ │ │ │ │ -67 } │ │ │ │ │ -68 │ │ │ │ │ -77 template │ │ │ │ │ -_7_8 void _i_n_t_e_r_p_o_l_a_t_e(const F& f, std::vector& out) const │ │ │ │ │ -79 { │ │ │ │ │ -80 // f gives v*outer normal at a point on the edge! │ │ │ │ │ -81 typedef typename LB::Traits::RangeFieldType Scalar; │ │ │ │ │ -82 typedef typename LB::Traits::DomainFieldType Vector; │ │ │ │ │ -83 │ │ │ │ │ -84 out.resize(14); │ │ │ │ │ -85 fill(out.begin(), out.end(), 0.0); │ │ │ │ │ -86 │ │ │ │ │ -87 const int qOrder = 4; │ │ │ │ │ -88 const QuadratureRule& rule = QuadratureRules::rule │ │ │ │ │ -(GeometryTypes::cube(1), qOrder); │ │ │ │ │ -89 │ │ │ │ │ -90 for (typename QuadratureRule::const_iterator it = rule.begin(); │ │ │ │ │ -91 it != rule.end(); ++it) │ │ │ │ │ -92 { │ │ │ │ │ -93 Scalar qPos = it->position(); │ │ │ │ │ -94 │ │ │ │ │ -95 typename LB::Traits::DomainType localPos; │ │ │ │ │ -96 │ │ │ │ │ -97 localPos[0] = 0.0; │ │ │ │ │ -98 localPos[1] = qPos; │ │ │ │ │ -99 auto y = f(localPos); │ │ │ │ │ -100 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0; │ │ │ │ │ -101 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight(); │ │ │ │ │ -102 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it- │ │ │ │ │ ->weight()*sign0; │ │ │ │ │ -103 │ │ │ │ │ -104 localPos[0] = 1.0; │ │ │ │ │ -105 localPos[1] = qPos; │ │ │ │ │ -106 y = f(localPos); │ │ │ │ │ -107 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1; │ │ │ │ │ -108 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight(); │ │ │ │ │ -109 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it- │ │ │ │ │ ->weight()*sign1; │ │ │ │ │ -110 │ │ │ │ │ -111 localPos[0] = qPos; │ │ │ │ │ -112 localPos[1] = 0.0; │ │ │ │ │ -113 y = f(localPos); │ │ │ │ │ -114 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2; │ │ │ │ │ -115 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight(); │ │ │ │ │ -116 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it- │ │ │ │ │ ->weight()*sign2; │ │ │ │ │ -117 │ │ │ │ │ -118 localPos[0] = qPos; │ │ │ │ │ -119 localPos[1] = 1.0; │ │ │ │ │ -120 y = f(localPos); │ │ │ │ │ -121 out[9] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3; │ │ │ │ │ -122 out[10] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight(); │ │ │ │ │ -123 out[11] += (y[0]*n3[0] + y[1]*n3[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it- │ │ │ │ │ ->weight()*sign3; │ │ │ │ │ -124 } │ │ │ │ │ -125 │ │ │ │ │ -126 const QuadratureRule& rule2 = QuadratureRules::rule │ │ │ │ │ -(GeometryTypes::cube(2), qOrder); │ │ │ │ │ -127 │ │ │ │ │ -128 for (typename QuadratureRule::const_iterator it=rule2.begin(); │ │ │ │ │ -it!=rule2.end(); ++it) │ │ │ │ │ -129 { │ │ │ │ │ -130 auto y = f(it->position()); │ │ │ │ │ -131 out[12] += y[0]*it->weight(); │ │ │ │ │ -132 out[13] += y[1]*it->weight(); │ │ │ │ │ -133 } │ │ │ │ │ -134 } │ │ │ │ │ -135 │ │ │ │ │ -136 private: │ │ │ │ │ -137 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3; │ │ │ │ │ -138 typename LB::Traits::DomainType n0, n1, n2, n3; │ │ │ │ │ -139 }; │ │ │ │ │ -140} // end namespace Dune │ │ │ │ │ -141#endif / │ │ │ │ │ -/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH │ │ │ │ │ +8#include │ │ │ │ │ +9#include │ │ │ │ │ +10 │ │ │ │ │ +11#include "../../common/localkey.hh" │ │ │ │ │ +12 │ │ │ │ │ +13namespace _D_u_n_e │ │ │ │ │ +14{ │ │ │ │ │ +15 │ │ │ │ │ +_2_3 class _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +24 { │ │ │ │ │ +25 │ │ │ │ │ +26 public: │ │ │ │ │ +_2_8 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s() : li(14) │ │ │ │ │ +29 { │ │ │ │ │ +30 for (std::size_t i = 0; i < 4; ++i) │ │ │ │ │ +31 { │ │ │ │ │ +32 li[3 * i] = _L_o_c_a_l_K_e_y(i,1,0); │ │ │ │ │ +33 li[3 * i + 1] = _L_o_c_a_l_K_e_y(i,1,1); │ │ │ │ │ +34 li[3 * i + 2] = _L_o_c_a_l_K_e_y(i,1,2); │ │ │ │ │ +35 } │ │ │ │ │ +36 li[12] = _L_o_c_a_l_K_e_y(0,0,0); │ │ │ │ │ +37 li[13] = _L_o_c_a_l_K_e_y(0,0,1); │ │ │ │ │ +38 } │ │ │ │ │ +39 │ │ │ │ │ +_4_1 std::size_t _s_i_z_e() const │ │ │ │ │ +42 { │ │ │ │ │ +43 return 14; │ │ │ │ │ +44 } │ │ │ │ │ +45 │ │ │ │ │ +_4_7 const _L_o_c_a_l_K_e_y& _l_o_c_a_l_K_e_y(std::size_t i) const │ │ │ │ │ +48 { │ │ │ │ │ +49 return li[i]; │ │ │ │ │ +50 } │ │ │ │ │ +51 │ │ │ │ │ +52 private: │ │ │ │ │ +53 std::vector li; │ │ │ │ │ +54 }; │ │ │ │ │ +55} // end namespace Dune │ │ │ │ │ +56#endif / │ │ │ │ │ +/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalinterpolation.hh:25 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -BDM2Cube2DLocalInterpolation(unsigned int s) │ │ │ │ │ -Make set number s, where 0 <= s < 16. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalinterpolation.hh:39 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -BDM2Cube2DLocalInterpolation() │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalcoefficients.hh:24 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +BDM2Cube2DLocalCoefficients() │ │ │ │ │ Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalinterpolation.hh:29 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ -void interpolate(const F &f, std::vector< C > &out) const │ │ │ │ │ -Interpolate a given function with shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalinterpolation.hh:78 │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalcoefficients.hh:28 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_l_o_c_a_l_K_e_y │ │ │ │ │ +const LocalKey & localKey(std::size_t i) const │ │ │ │ │ +get i'th index │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalcoefficients.hh:47 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_s_i_z_e │ │ │ │ │ +std::size_t size() const │ │ │ │ │ +number of coefficients │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalcoefficients.hh:41 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ +Describe position of one degree of freedom. │ │ │ │ │ +DDeeffiinniittiioonn localkey.hh:24 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2cube2dlocalbasis.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini2cube2dlocalinterpolation.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -72,30 +72,26 @@ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini2cube2dlocalbasis.hh File Reference
│ │ │ │ +
brezzidouglasmarini2cube2dlocalinterpolation.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <array>
│ │ │ │ -#include <bitset>
│ │ │ │ -#include <numeric>
│ │ │ │ -#include <vector>
│ │ │ │ -#include <dune/common/fmatrix.hh>
│ │ │ │ -#include "../../common/localbasis.hh"
│ │ │ │ +
#include <vector>
│ │ │ │ +#include <dune/geometry/quadraturerules.hh>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM2Cube2DLocalBasis< D, R >
 First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
class  Dune::BDM2Cube2DLocalInterpolation< LB >
 First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,24 +3,20 @@ │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini2cube2dlocalbasis.hh File Reference │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ +brezzidouglasmarini2cube2dlocalinterpolation.hh File Reference │ │ │ │ │ #include │ │ │ │ │ -#include │ │ │ │ │ -#include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_ _D_,_ _R_ _> │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_ _L_B_ _> │ │ │ │ │   First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2cube2dlocalbasis.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini2cube2dlocalinterpolation.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,316 +74,149 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
brezzidouglasmarini2cube2dlocalbasis.hh
│ │ │ │ +
brezzidouglasmarini2cube2dlocalinterpolation.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
│ │ │ │
7
│ │ │ │ -
8#include <array>
│ │ │ │ -
9#include <bitset>
│ │ │ │ -
10#include <numeric>
│ │ │ │ -
11#include <vector>
│ │ │ │ -
12
│ │ │ │ -
13#include <dune/common/fmatrix.hh>
│ │ │ │ +
8#include <vector>
│ │ │ │ +
9
│ │ │ │ +
10#include <dune/geometry/quadraturerules.hh>
│ │ │ │ +
11
│ │ │ │ +
12namespace Dune
│ │ │ │ +
13{
│ │ │ │
14
│ │ │ │ -
15#include "../../common/localbasis.hh"
│ │ │ │ -
16
│ │ │ │ -
17namespace Dune
│ │ │ │ -
18{
│ │ │ │ -
28 template<class D, class R>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
30 {
│ │ │ │ -
31
│ │ │ │ -
32 public:
│ │ │ │ - │ │ │ │ -
34 R,2,Dune::FieldVector<R,2>,
│ │ │ │ -
35 Dune::FieldMatrix<R,2,2> > Traits;
│ │ │ │ -
36
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
39 {
│ │ │ │ -
40 for (size_t i=0; i<4; i++)
│ │ │ │ -
41 sign_[i] = 1.0;
│ │ │ │ -
42 }
│ │ │ │ -
│ │ │ │ -
43
│ │ │ │ -
│ │ │ │ -
49 BDM2Cube2DLocalBasis(std::bitset<4> s)
│ │ │ │ -
50 {
│ │ │ │ -
51 for (size_t i=0; i<4; i++)
│ │ │ │ -
52 sign_[i] = s[i] ? -1.0 : 1.0;
│ │ │ │ -
53 }
│ │ │ │ -
│ │ │ │ -
54
│ │ │ │ -
│ │ │ │ -
56 unsigned int size() const
│ │ │ │ -
57 {
│ │ │ │ -
58 return 14;
│ │ │ │ -
59 }
│ │ │ │ -
│ │ │ │ -
60
│ │ │ │ -
│ │ │ │ -
67 inline void evaluateFunction(const typename Traits::DomainType& in,
│ │ │ │ -
68 std::vector<typename Traits::RangeType>& out) const
│ │ │ │ -
69 {
│ │ │ │ -
70 out.resize(size());
│ │ │ │ -
71
│ │ │ │ -
72 out[0][0] = sign_[0]*(-2.25 + 5.25*in[0] + 7.5*in[1] - 7.5*in[0]*in[1] - 3.0*in[0]*in[0] - 7.5*in[1]*in[1] + 7.5*in[0]*in[1]*in[1]);
│ │ │ │ -
73 out[0][1] = sign_[0]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in[1]);
│ │ │ │ -
74 out[1][0] = 3.0 - 3.0*in[0]-6.0*in[1] + 6.0*in[0]*in[1];
│ │ │ │ -
75 out[1][1] = 0.0;
│ │ │ │ -
76 out[2][0] = sign_[0]*(-3.75 + 3.75*in[0] + 22.5*in[1] - 22.5*in[0]*in[1] - 22.5*in[1]*in[1] + 22.5*in[0]*in[1]*in[1]);
│ │ │ │ -
77 out[2][1] = sign_[0]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in[1]);
│ │ │ │ -
78 out[3][0] = sign_[1]*(-0.75*in[0] - 7.5*in[0]*in[1] + 3.0*in[0]*in[0] + 7.5*in[0]*in[1]*in[1]);
│ │ │ │ -
79 out[3][1] = sign_[1]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in[1]);
│ │ │ │ -
80 out[4][0] = 3.0*in[0] - 6.0*in[0]*in[1];
│ │ │ │ -
81 out[4][1] = 0.0;
│ │ │ │ -
82 out[5][0] = sign_[1]*(+3.75*in[0] - 22.5*in[0]*in[1] + 22.5*in[0]*in[1]*in[1]);
│ │ │ │ -
83 out[5][1] = sign_[1]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in[1]);
│ │ │ │ -
84 out[6][0] = sign_[2]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in[0]);
│ │ │ │ -
85 out[6][1] = sign_[2]*(-2.25 + 7.5*in[0] + 5.25*in[1] - 7.5*in[0]*in[1] - 7.5*in[0]*in[0] - 3.0*in[1]*in[1] + 7.5*in[0]*in[0]*in[1]);
│ │ │ │ -
86 out[7][0] = 0.0;
│ │ │ │ -
87 out[7][1] = -3.0 + 6.0*in[0] + 3.0*in[1] - 6.0*in[0]*in[1];
│ │ │ │ -
88 out[8][0] = sign_[2]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in[0]);
│ │ │ │ -
89 out[8][1] = sign_[2]*(-3.75 + 22.5*in[0] + 3.75*in[1] - 22.5*in[0]*in[1] - 22.5*in[0]*in[0] + 22.5*in[0]*in[0]*in[1]);
│ │ │ │ -
90 out[9][0] = sign_[3]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in[0]);
│ │ │ │ -
91 out[9][1] = sign_[3]*(-0.75*in[1] - 7.5*in[0]*in[1] + 3.0*in[1]*in[1] + 7.5*in[0]*in[0]*in[1]);
│ │ │ │ -
92 out[10][0] = 0.0;
│ │ │ │ -
93 out[10][1] = -3.0*in[1] + 6.0*in[0]*in[1];
│ │ │ │ -
94 out[11][0] = sign_[3]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in[0]);
│ │ │ │ -
95 out[11][1] = sign_[3]*(3.75*in[1] - 22.5*in[0]*in[1] + 22.5*in[0]*in[0]*in[1]);
│ │ │ │ -
96 out[12][0] = 6.0*in[0] - 6.0*in[0]*in[0];
│ │ │ │ -
97 out[12][1] = 0.0;
│ │ │ │ -
98 out[13][0] = 0.0;
│ │ │ │ -
99 out[13][1] = 6.0*in[1] - 6.0*in[1]*in[1];
│ │ │ │ -
100 }
│ │ │ │ -
│ │ │ │ -
101
│ │ │ │ -
│ │ │ │ -
108 inline void evaluateJacobian(const typename Traits::DomainType& in,
│ │ │ │ -
109 std::vector<typename Traits::JacobianType>& out) const
│ │ │ │ -
110 {
│ │ │ │ -
111 out.resize(size());
│ │ │ │ -
112
│ │ │ │ -
113 out[0][0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]);
│ │ │ │ -
114 out[0][0][1] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]);
│ │ │ │ -
115 out[0][1][0] = 0.0;
│ │ │ │ -
116 out[0][1][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
│ │ │ │ +
23 template<class LB>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
25 {
│ │ │ │ +
26
│ │ │ │ +
27 public:
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
30 {
│ │ │ │ +
31 sign0 = sign1 = sign2 = sign3 = 1.0;
│ │ │ │ +
32 }
│ │ │ │ +
│ │ │ │ +
33
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
40 {
│ │ │ │ +
41 sign0 = sign1 = sign2 = sign3 = 1.0;
│ │ │ │ +
42 if (s & 1)
│ │ │ │ +
43 {
│ │ │ │ +
44 sign0 = -1.0;
│ │ │ │ +
45 }
│ │ │ │ +
46 if (s & 2)
│ │ │ │ +
47 {
│ │ │ │ +
48 sign1 = -1.0;
│ │ │ │ +
49 }
│ │ │ │ +
50 if (s & 4)
│ │ │ │ +
51 {
│ │ │ │ +
52 sign2 = -1.0;
│ │ │ │ +
53 }
│ │ │ │ +
54 if (s & 8)
│ │ │ │ +
55 {
│ │ │ │ +
56 sign3 = -1.0;
│ │ │ │ +
57 }
│ │ │ │ +
58
│ │ │ │ +
59 n0[0] = -1.0;
│ │ │ │ +
60 n0[1] = 0.0;
│ │ │ │ +
61 n1[0] = 1.0;
│ │ │ │ +
62 n1[1] = 0.0;
│ │ │ │ +
63 n2[0] = 0.0;
│ │ │ │ +
64 n2[1] = -1.0;
│ │ │ │ +
65 n3[0] = 0.0;
│ │ │ │ +
66 n3[1] = 1.0;
│ │ │ │ +
67 }
│ │ │ │ +
│ │ │ │ +
68
│ │ │ │ +
77 template<typename F, typename C>
│ │ │ │ +
│ │ │ │ +
78 void interpolate(const F& f, std::vector<C>& out) const
│ │ │ │ +
79 {
│ │ │ │ +
80 // f gives v*outer normal at a point on the edge!
│ │ │ │ +
81 typedef typename LB::Traits::RangeFieldType Scalar;
│ │ │ │ +
82 typedef typename LB::Traits::DomainFieldType Vector;
│ │ │ │ +
83
│ │ │ │ +
84 out.resize(14);
│ │ │ │ +
85 fill(out.begin(), out.end(), 0.0);
│ │ │ │ +
86
│ │ │ │ +
87 const int qOrder = 4;
│ │ │ │ +
88 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
│ │ │ │ +
89
│ │ │ │ +
90 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
│ │ │ │ +
91 it != rule.end(); ++it)
│ │ │ │ +
92 {
│ │ │ │ +
93 Scalar qPos = it->position();
│ │ │ │ +
94
│ │ │ │ +
95 typename LB::Traits::DomainType localPos;
│ │ │ │ +
96
│ │ │ │ +
97 localPos[0] = 0.0;
│ │ │ │ +
98 localPos[1] = qPos;
│ │ │ │ +
99 auto y = f(localPos);
│ │ │ │ +
100 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
│ │ │ │ +
101 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
│ │ │ │ +
102 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign0;
│ │ │ │ +
103
│ │ │ │ +
104 localPos[0] = 1.0;
│ │ │ │ +
105 localPos[1] = qPos;
│ │ │ │ +
106 y = f(localPos);
│ │ │ │ +
107 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1;
│ │ │ │ +
108 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
│ │ │ │ +
109 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign1;
│ │ │ │ +
110
│ │ │ │ +
111 localPos[0] = qPos;
│ │ │ │ +
112 localPos[1] = 0.0;
│ │ │ │ +
113 y = f(localPos);
│ │ │ │ +
114 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
│ │ │ │ +
115 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
│ │ │ │ +
116 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign2;
│ │ │ │
117
│ │ │ │ -
118 out[1][0][0] = -3.0 + 6.0*in[1];
│ │ │ │ -
119 out[1][0][1] = -6.0 + 6.0*in[0];
│ │ │ │ -
120 out[1][1][0] = 0.0;
│ │ │ │ -
121 out[1][1][1] = 0.0;
│ │ │ │ -
122
│ │ │ │ -
123 out[2][0][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
│ │ │ │ -
124 out[2][0][1] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in[1]);
│ │ │ │ -
125 out[2][1][0] = 0.0;
│ │ │ │ -
126 out[2][1][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
│ │ │ │ +
118 localPos[0] = qPos;
│ │ │ │ +
119 localPos[1] = 1.0;
│ │ │ │ +
120 y = f(localPos);
│ │ │ │ +
121 out[9] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
│ │ │ │ +
122 out[10] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
│ │ │ │ +
123 out[11] += (y[0]*n3[0] + y[1]*n3[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign3;
│ │ │ │ +
124 }
│ │ │ │ +
125
│ │ │ │ +
126 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
│ │ │ │
127
│ │ │ │ -
128 out[3][0][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]);
│ │ │ │ -
129 out[3][0][1] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]);
│ │ │ │ -
130 out[3][1][0] = 0.0;
│ │ │ │ -
131 out[3][1][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
│ │ │ │ -
132
│ │ │ │ -
133 out[4][0][0] = 3.0 - 6.0*in[1];
│ │ │ │ -
134 out[4][0][1] = -6.0*in[0];
│ │ │ │ -
135 out[4][1][0] = 0.0;
│ │ │ │ -
136 out[4][1][1] = 0.0;
│ │ │ │ -
137
│ │ │ │ -
138 out[5][0][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
│ │ │ │ -
139 out[5][0][1] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]);
│ │ │ │ -
140 out[5][1][0] = 0.0;
│ │ │ │ -
141 out[5][1][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
│ │ │ │ -
142
│ │ │ │ -
143 out[6][0][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
│ │ │ │ -
144 out[6][0][1] = 0.0;
│ │ │ │ -
145 out[6][1][0] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]);
│ │ │ │ -
146 out[6][1][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]);
│ │ │ │ -
147
│ │ │ │ -
148 out[7][0][0] = 0.0;
│ │ │ │ -
149 out[7][0][1] = 0.0;
│ │ │ │ -
150 out[7][1][0] = 6.0 - 6.0*in[1];
│ │ │ │ -
151 out[7][1][1] = 3.0 - 6.0*in[0];
│ │ │ │ -
152
│ │ │ │ -
153 out[8][0][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
│ │ │ │ -
154 out[8][0][1] = 0.0;
│ │ │ │ -
155 out[8][1][0] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in[1]);
│ │ │ │ -
156 out[8][1][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
│ │ │ │ -
157
│ │ │ │ -
158 out[9][0][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
│ │ │ │ -
159 out[9][0][1] = 0.0;
│ │ │ │ -
160 out[9][1][0] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]);
│ │ │ │ -
161 out[9][1][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]);
│ │ │ │ -
162
│ │ │ │ -
163 out[10][0][0] = 0.0;
│ │ │ │ -
164 out[10][0][1] = 0.0;
│ │ │ │ -
165 out[10][1][0] = 6.0*in[1];
│ │ │ │ -
166 out[10][1][1] = -3.0 + 6.0*in[0];
│ │ │ │ -
167
│ │ │ │ -
168 out[11][0][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
│ │ │ │ -
169 out[11][0][1] = 0.0;
│ │ │ │ -
170 out[11][1][0] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]);
│ │ │ │ -
171 out[11][1][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
│ │ │ │ -
172
│ │ │ │ -
173 out[12][0][0] = 6.0 - 12.0*in[0];
│ │ │ │ -
174 out[12][0][1] = 0.0;
│ │ │ │ -
175 out[12][1][0] = 0.0;
│ │ │ │ -
176 out[12][1][1] = 0.0;
│ │ │ │ -
177
│ │ │ │ -
178 out[13][0][0] = 0.0;
│ │ │ │ -
179 out[13][0][1] = 0.0;
│ │ │ │ -
180 out[13][1][0] = 0.0;
│ │ │ │ -
181 out[13][1][1] = 6.0 - 12.0*in[1];
│ │ │ │ -
182 }
│ │ │ │ -
│ │ │ │ -
183
│ │ │ │ -
│ │ │ │ -
185 void partial (const std::array<unsigned int, 2>& order,
│ │ │ │ -
186 const typename Traits::DomainType& in, // position
│ │ │ │ -
187 std::vector<typename Traits::RangeType>& out) const // return value
│ │ │ │ -
188 {
│ │ │ │ -
189 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
│ │ │ │ -
190 if (totalOrder == 0) {
│ │ │ │ -
191 evaluateFunction(in, out);
│ │ │ │ -
192 } else if (totalOrder == 1) {
│ │ │ │ -
193 out.resize(size());
│ │ │ │ -
194 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
│ │ │ │ -
195
│ │ │ │ -
196 switch (direction) {
│ │ │ │ -
197 case 0:
│ │ │ │ -
198 out[0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]);
│ │ │ │ -
199 out[0][1] = 0.0;
│ │ │ │ -
200
│ │ │ │ -
201 out[1][0] = -3.0 + 6.0*in[1];
│ │ │ │ -
202 out[1][1] = 0.0;
│ │ │ │ -
203
│ │ │ │ -
204 out[2][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
│ │ │ │ -
205 out[2][1] = 0.0;
│ │ │ │ -
206
│ │ │ │ -
207 out[3][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]);
│ │ │ │ -
208 out[3][1] = 0.0;
│ │ │ │ -
209
│ │ │ │ -
210 out[4][0] = 3.0 - 6.0*in[1];
│ │ │ │ -
211 out[4][1] = 0.0;
│ │ │ │ -
212
│ │ │ │ -
213 out[5][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
│ │ │ │ -
214 out[5][1] = 0.0;
│ │ │ │ -
215
│ │ │ │ -
216 out[6][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
│ │ │ │ -
217 out[6][1] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]);
│ │ │ │ -
218
│ │ │ │ -
219 out[7][0] = 0.0;
│ │ │ │ -
220 out[7][1] = 6.0 - 6.0*in[1];
│ │ │ │ -
221
│ │ │ │ -
222 out[8][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
│ │ │ │ -
223 out[8][1] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in[1]);
│ │ │ │ -
224
│ │ │ │ -
225 out[9][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
│ │ │ │ -
226 out[9][1] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]);
│ │ │ │ -
227
│ │ │ │ -
228 out[10][0] = 0.0;
│ │ │ │ -
229 out[10][1] = 6.0*in[1];
│ │ │ │ -
230
│ │ │ │ -
231 out[11][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
│ │ │ │ -
232 out[11][1] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]);
│ │ │ │ -
233
│ │ │ │ -
234 out[12][0] = 6.0 - 12.0*in[0];
│ │ │ │ -
235 out[12][1] = 0.0;
│ │ │ │ -
236
│ │ │ │ -
237 out[13][0] = 0.0;
│ │ │ │ -
238 out[13][1] = 0.0;
│ │ │ │ -
239 break;
│ │ │ │ -
240 case 1:
│ │ │ │ -
241 out[0][0] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]);
│ │ │ │ -
242 out[0][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
│ │ │ │ -
243
│ │ │ │ -
244 out[1][0] = -6.0 + 6.0*in[0];
│ │ │ │ -
245 out[1][1] = 0.0;
│ │ │ │ -
246
│ │ │ │ -
247 out[2][0] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in[1]);
│ │ │ │ -
248 out[2][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
│ │ │ │ -
249
│ │ │ │ -
250 out[3][0] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]);
│ │ │ │ -
251 out[3][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
│ │ │ │ -
252
│ │ │ │ -
253 out[4][0] = -6.0*in[0];
│ │ │ │ -
254 out[4][1] = 0.0;
│ │ │ │ -
255
│ │ │ │ -
256 out[5][0] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]);
│ │ │ │ -
257 out[5][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
│ │ │ │ -
258
│ │ │ │ -
259 out[6][0] = 0.0;
│ │ │ │ -
260 out[6][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]);
│ │ │ │ -
261
│ │ │ │ -
262 out[7][0] = 0.0;
│ │ │ │ -
263 out[7][1] = 3.0 - 6.0*in[0];
│ │ │ │ -
264
│ │ │ │ -
265 out[8][0] = 0.0;
│ │ │ │ -
266 out[8][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
│ │ │ │ -
267
│ │ │ │ -
268 out[9][0] = 0.0;
│ │ │ │ -
269 out[9][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]);
│ │ │ │ -
270
│ │ │ │ -
271 out[10][0] = 0.0;
│ │ │ │ -
272 out[10][1] = -3.0 + 6.0*in[0];
│ │ │ │ -
273
│ │ │ │ -
274 out[11][0] = 0.0;
│ │ │ │ -
275 out[11][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
│ │ │ │ -
276
│ │ │ │ -
277 out[12][0] = 0.0;
│ │ │ │ -
278 out[12][1] = 0.0;
│ │ │ │ -
279
│ │ │ │ -
280 out[13][0] = 0.0;
│ │ │ │ -
281 out[13][1] = 6.0 - 12.0*in[1];
│ │ │ │ -
282 break;
│ │ │ │ -
283 default:
│ │ │ │ -
284 DUNE_THROW(RangeError, "Component out of range.");
│ │ │ │ -
285 }
│ │ │ │ -
286 } else {
│ │ │ │ -
287 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
│ │ │ │ -
288 }
│ │ │ │ -
289 }
│ │ │ │ -
│ │ │ │ -
290
│ │ │ │ -
│ │ │ │ -
292 unsigned int order() const
│ │ │ │ -
293 {
│ │ │ │ -
294 return 3;
│ │ │ │ -
295 }
│ │ │ │ -
│ │ │ │ -
296
│ │ │ │ -
297 private:
│ │ │ │ -
298 std::array<R,4> sign_;
│ │ │ │ -
299 };
│ │ │ │ +
128 for (typename QuadratureRule<Vector,2>::const_iterator it=rule2.begin(); it!=rule2.end(); ++it)
│ │ │ │ +
129 {
│ │ │ │ +
130 auto y = f(it->position());
│ │ │ │ +
131 out[12] += y[0]*it->weight();
│ │ │ │ +
132 out[13] += y[1]*it->weight();
│ │ │ │ +
133 }
│ │ │ │ +
134 }
│ │ │ │ +
│ │ │ │ +
135
│ │ │ │ +
136 private:
│ │ │ │ +
137 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
│ │ │ │ +
138 typename LB::Traits::DomainType n0, n1, n2, n3;
│ │ │ │ +
139 };
│ │ │ │
│ │ │ │ -
300} // end namespace Dune
│ │ │ │ -
301#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
│ │ │ │ +
140} // end namespace Dune
│ │ │ │ +
141#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:30
│ │ │ │ -
void partial(const std::array< unsigned int, 2 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of all shape functions.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:185
│ │ │ │ -
unsigned int order() const
Polynomial order of the shape functions.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:292
│ │ │ │ -
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:67
│ │ │ │ -
BDM2Cube2DLocalBasis()
Standard constructor.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:38
│ │ │ │ -
BDM2Cube2DLocalBasis(std::bitset< 4 > s)
Make set number s, where 0 <= s < 16.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:49
│ │ │ │ -
LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
Definition brezzidouglasmarini2cube2dlocalbasis.hh:35
│ │ │ │ -
unsigned int size() const
number of shape functions
Definition brezzidouglasmarini2cube2dlocalbasis.hh:56
│ │ │ │ -
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:108
│ │ │ │ -
Type traits for LocalBasisVirtualInterface.
Definition common/localbasis.hh:35
│ │ │ │ -
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:25
│ │ │ │ +
BDM2Cube2DLocalInterpolation(unsigned int s)
Make set number s, where 0 <= s < 16.
Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:39
│ │ │ │ +
BDM2Cube2DLocalInterpolation()
Standard constructor.
Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:29
│ │ │ │ +
void interpolate(const F &f, std::vector< C > &out) const
Interpolate a given function with shape functions.
Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:78
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -2,349 +2,156 @@ │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d │ │ │ │ │ -brezzidouglasmarini2cube2dlocalbasis.hh │ │ │ │ │ +brezzidouglasmarini2cube2dlocalinterpolation.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ -9#include │ │ │ │ │ -10#include │ │ │ │ │ -11#include │ │ │ │ │ -12 │ │ │ │ │ -13#include │ │ │ │ │ +8#include │ │ │ │ │ +9 │ │ │ │ │ +10#include │ │ │ │ │ +11 │ │ │ │ │ +12namespace _D_u_n_e │ │ │ │ │ +13{ │ │ │ │ │ 14 │ │ │ │ │ -15#include "../../common/localbasis.hh" │ │ │ │ │ -16 │ │ │ │ │ -17namespace _D_u_n_e │ │ │ │ │ -18{ │ │ │ │ │ -28 template │ │ │ │ │ -_2_9 class _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +23 template │ │ │ │ │ +_2_4 class _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +25 { │ │ │ │ │ +26 │ │ │ │ │ +27 public: │ │ │ │ │ +_2_9 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n() │ │ │ │ │ 30 { │ │ │ │ │ -31 │ │ │ │ │ -32 public: │ │ │ │ │ -33 typedef _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_<_D_,_2_,_D_u_n_e_:_:_F_i_e_l_d_V_e_c_t_o_r_<_D_,_2_>, │ │ │ │ │ -34 R,2,Dune::FieldVector, │ │ │ │ │ -_3_5 Dune::FieldMatrix > _T_r_a_i_t_s; │ │ │ │ │ -36 │ │ │ │ │ -_3_8 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s() │ │ │ │ │ -39 { │ │ │ │ │ -40 for (size_t i=0; i<4; i++) │ │ │ │ │ -41 sign_[i] = 1.0; │ │ │ │ │ -42 } │ │ │ │ │ -43 │ │ │ │ │ -_4_9 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s(std::bitset<4> s) │ │ │ │ │ -50 { │ │ │ │ │ -51 for (size_t i=0; i<4; i++) │ │ │ │ │ -52 sign_[i] = s[i] ? -1.0 : 1.0; │ │ │ │ │ +31 sign0 = sign1 = sign2 = sign3 = 1.0; │ │ │ │ │ +32 } │ │ │ │ │ +33 │ │ │ │ │ +_3_9 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n(unsigned int s) │ │ │ │ │ +40 { │ │ │ │ │ +41 sign0 = sign1 = sign2 = sign3 = 1.0; │ │ │ │ │ +42 if (s & 1) │ │ │ │ │ +43 { │ │ │ │ │ +44 sign0 = -1.0; │ │ │ │ │ +45 } │ │ │ │ │ +46 if (s & 2) │ │ │ │ │ +47 { │ │ │ │ │ +48 sign1 = -1.0; │ │ │ │ │ +49 } │ │ │ │ │ +50 if (s & 4) │ │ │ │ │ +51 { │ │ │ │ │ +52 sign2 = -1.0; │ │ │ │ │ 53 } │ │ │ │ │ -54 │ │ │ │ │ -_5_6 unsigned int _s_i_z_e() const │ │ │ │ │ -57 { │ │ │ │ │ -58 return 14; │ │ │ │ │ -59 } │ │ │ │ │ -60 │ │ │ │ │ -_6_7 inline void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ -68 std::vector& out) const │ │ │ │ │ -69 { │ │ │ │ │ -70 out.resize(_s_i_z_e()); │ │ │ │ │ -71 │ │ │ │ │ -72 out[0][0] = sign_[0]*(-2.25 + 5.25*in[0] + 7.5*in[1] - 7.5*in[0]*in[1] - │ │ │ │ │ -3.0*in[0]*in[0] - 7.5*in[1]*in[1] + 7.5*in[0]*in[1]*in[1]); │ │ │ │ │ -73 out[0][1] = sign_[0]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in │ │ │ │ │ -[1]); │ │ │ │ │ -74 out[1][0] = 3.0 - 3.0*in[0]-6.0*in[1] + 6.0*in[0]*in[1]; │ │ │ │ │ -75 out[1][1] = 0.0; │ │ │ │ │ -76 out[2][0] = sign_[0]*(-3.75 + 3.75*in[0] + 22.5*in[1] - 22.5*in[0]*in[1] - │ │ │ │ │ -22.5*in[1]*in[1] + 22.5*in[0]*in[1]*in[1]); │ │ │ │ │ -77 out[2][1] = sign_[0]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in │ │ │ │ │ -[1]); │ │ │ │ │ -78 out[3][0] = sign_[1]*(-0.75*in[0] - 7.5*in[0]*in[1] + 3.0*in[0]*in[0] + │ │ │ │ │ -7.5*in[0]*in[1]*in[1]); │ │ │ │ │ -79 out[3][1] = sign_[1]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in │ │ │ │ │ -[1]); │ │ │ │ │ -80 out[4][0] = 3.0*in[0] - 6.0*in[0]*in[1]; │ │ │ │ │ -81 out[4][1] = 0.0; │ │ │ │ │ -82 out[5][0] = sign_[1]*(+3.75*in[0] - 22.5*in[0]*in[1] + 22.5*in[0]*in[1]*in │ │ │ │ │ -[1]); │ │ │ │ │ -83 out[5][1] = sign_[1]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in │ │ │ │ │ -[1]); │ │ │ │ │ -84 out[6][0] = sign_[2]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in │ │ │ │ │ -[0]); │ │ │ │ │ -85 out[6][1] = sign_[2]*(-2.25 + 7.5*in[0] + 5.25*in[1] - 7.5*in[0]*in[1] - │ │ │ │ │ -7.5*in[0]*in[0] - 3.0*in[1]*in[1] + 7.5*in[0]*in[0]*in[1]); │ │ │ │ │ -86 out[7][0] = 0.0; │ │ │ │ │ -87 out[7][1] = -3.0 + 6.0*in[0] + 3.0*in[1] - 6.0*in[0]*in[1]; │ │ │ │ │ -88 out[8][0] = sign_[2]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in │ │ │ │ │ -[0]); │ │ │ │ │ -89 out[8][1] = sign_[2]*(-3.75 + 22.5*in[0] + 3.75*in[1] - 22.5*in[0]*in[1] - │ │ │ │ │ -22.5*in[0]*in[0] + 22.5*in[0]*in[0]*in[1]); │ │ │ │ │ -90 out[9][0] = sign_[3]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in │ │ │ │ │ -[0]); │ │ │ │ │ -91 out[9][1] = sign_[3]*(-0.75*in[1] - 7.5*in[0]*in[1] + 3.0*in[1]*in[1] + │ │ │ │ │ -7.5*in[0]*in[0]*in[1]); │ │ │ │ │ -92 out[10][0] = 0.0; │ │ │ │ │ -93 out[10][1] = -3.0*in[1] + 6.0*in[0]*in[1]; │ │ │ │ │ -94 out[11][0] = sign_[3]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in │ │ │ │ │ -[0]); │ │ │ │ │ -95 out[11][1] = sign_[3]*(3.75*in[1] - 22.5*in[0]*in[1] + 22.5*in[0]*in[0]*in │ │ │ │ │ -[1]); │ │ │ │ │ -96 out[12][0] = 6.0*in[0] - 6.0*in[0]*in[0]; │ │ │ │ │ -97 out[12][1] = 0.0; │ │ │ │ │ -98 out[13][0] = 0.0; │ │ │ │ │ -99 out[13][1] = 6.0*in[1] - 6.0*in[1]*in[1]; │ │ │ │ │ -100 } │ │ │ │ │ -101 │ │ │ │ │ -_1_0_8 inline void _e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n(const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ -109 std::vector& out) const │ │ │ │ │ -110 { │ │ │ │ │ -111 out.resize(_s_i_z_e()); │ │ │ │ │ -112 │ │ │ │ │ -113 out[0][0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]); │ │ │ │ │ -114 out[0][0][1] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]); │ │ │ │ │ -115 out[0][1][0] = 0.0; │ │ │ │ │ -116 out[0][1][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]); │ │ │ │ │ +54 if (s & 8) │ │ │ │ │ +55 { │ │ │ │ │ +56 sign3 = -1.0; │ │ │ │ │ +57 } │ │ │ │ │ +58 │ │ │ │ │ +59 n0[0] = -1.0; │ │ │ │ │ +60 n0[1] = 0.0; │ │ │ │ │ +61 n1[0] = 1.0; │ │ │ │ │ +62 n1[1] = 0.0; │ │ │ │ │ +63 n2[0] = 0.0; │ │ │ │ │ +64 n2[1] = -1.0; │ │ │ │ │ +65 n3[0] = 0.0; │ │ │ │ │ +66 n3[1] = 1.0; │ │ │ │ │ +67 } │ │ │ │ │ +68 │ │ │ │ │ +77 template │ │ │ │ │ +_7_8 void _i_n_t_e_r_p_o_l_a_t_e(const F& f, std::vector& out) const │ │ │ │ │ +79 { │ │ │ │ │ +80 // f gives v*outer normal at a point on the edge! │ │ │ │ │ +81 typedef typename LB::Traits::RangeFieldType Scalar; │ │ │ │ │ +82 typedef typename LB::Traits::DomainFieldType Vector; │ │ │ │ │ +83 │ │ │ │ │ +84 out.resize(14); │ │ │ │ │ +85 fill(out.begin(), out.end(), 0.0); │ │ │ │ │ +86 │ │ │ │ │ +87 const int qOrder = 4; │ │ │ │ │ +88 const QuadratureRule& rule = QuadratureRules::rule │ │ │ │ │ +(GeometryTypes::cube(1), qOrder); │ │ │ │ │ +89 │ │ │ │ │ +90 for (typename QuadratureRule::const_iterator it = rule.begin(); │ │ │ │ │ +91 it != rule.end(); ++it) │ │ │ │ │ +92 { │ │ │ │ │ +93 Scalar qPos = it->position(); │ │ │ │ │ +94 │ │ │ │ │ +95 typename LB::Traits::DomainType localPos; │ │ │ │ │ +96 │ │ │ │ │ +97 localPos[0] = 0.0; │ │ │ │ │ +98 localPos[1] = qPos; │ │ │ │ │ +99 auto y = f(localPos); │ │ │ │ │ +100 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0; │ │ │ │ │ +101 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight(); │ │ │ │ │ +102 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it- │ │ │ │ │ +>weight()*sign0; │ │ │ │ │ +103 │ │ │ │ │ +104 localPos[0] = 1.0; │ │ │ │ │ +105 localPos[1] = qPos; │ │ │ │ │ +106 y = f(localPos); │ │ │ │ │ +107 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1; │ │ │ │ │ +108 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight(); │ │ │ │ │ +109 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it- │ │ │ │ │ +>weight()*sign1; │ │ │ │ │ +110 │ │ │ │ │ +111 localPos[0] = qPos; │ │ │ │ │ +112 localPos[1] = 0.0; │ │ │ │ │ +113 y = f(localPos); │ │ │ │ │ +114 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2; │ │ │ │ │ +115 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight(); │ │ │ │ │ +116 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it- │ │ │ │ │ +>weight()*sign2; │ │ │ │ │ 117 │ │ │ │ │ -118 out[1][0][0] = -3.0 + 6.0*in[1]; │ │ │ │ │ -119 out[1][0][1] = -6.0 + 6.0*in[0]; │ │ │ │ │ -120 out[1][1][0] = 0.0; │ │ │ │ │ -121 out[1][1][1] = 0.0; │ │ │ │ │ -122 │ │ │ │ │ -123 out[2][0][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]); │ │ │ │ │ -124 out[2][0][1] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in │ │ │ │ │ -[1]); │ │ │ │ │ -125 out[2][1][0] = 0.0; │ │ │ │ │ -126 out[2][1][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]); │ │ │ │ │ +118 localPos[0] = qPos; │ │ │ │ │ +119 localPos[1] = 1.0; │ │ │ │ │ +120 y = f(localPos); │ │ │ │ │ +121 out[9] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3; │ │ │ │ │ +122 out[10] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight(); │ │ │ │ │ +123 out[11] += (y[0]*n3[0] + y[1]*n3[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it- │ │ │ │ │ +>weight()*sign3; │ │ │ │ │ +124 } │ │ │ │ │ +125 │ │ │ │ │ +126 const QuadratureRule& rule2 = QuadratureRules::rule │ │ │ │ │ +(GeometryTypes::cube(2), qOrder); │ │ │ │ │ 127 │ │ │ │ │ -128 out[3][0][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]); │ │ │ │ │ -129 out[3][0][1] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]); │ │ │ │ │ -130 out[3][1][0] = 0.0; │ │ │ │ │ -131 out[3][1][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]); │ │ │ │ │ -132 │ │ │ │ │ -133 out[4][0][0] = 3.0 - 6.0*in[1]; │ │ │ │ │ -134 out[4][0][1] = -6.0*in[0]; │ │ │ │ │ -135 out[4][1][0] = 0.0; │ │ │ │ │ -136 out[4][1][1] = 0.0; │ │ │ │ │ -137 │ │ │ │ │ -138 out[5][0][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]); │ │ │ │ │ -139 out[5][0][1] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]); │ │ │ │ │ -140 out[5][1][0] = 0.0; │ │ │ │ │ -141 out[5][1][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]); │ │ │ │ │ -142 │ │ │ │ │ -143 out[6][0][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]); │ │ │ │ │ -144 out[6][0][1] = 0.0; │ │ │ │ │ -145 out[6][1][0] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]); │ │ │ │ │ -146 out[6][1][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]); │ │ │ │ │ -147 │ │ │ │ │ -148 out[7][0][0] = 0.0; │ │ │ │ │ -149 out[7][0][1] = 0.0; │ │ │ │ │ -150 out[7][1][0] = 6.0 - 6.0*in[1]; │ │ │ │ │ -151 out[7][1][1] = 3.0 - 6.0*in[0]; │ │ │ │ │ -152 │ │ │ │ │ -153 out[8][0][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]); │ │ │ │ │ -154 out[8][0][1] = 0.0; │ │ │ │ │ -155 out[8][1][0] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in │ │ │ │ │ -[1]); │ │ │ │ │ -156 out[8][1][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]); │ │ │ │ │ -157 │ │ │ │ │ -158 out[9][0][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]); │ │ │ │ │ -159 out[9][0][1] = 0.0; │ │ │ │ │ -160 out[9][1][0] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]); │ │ │ │ │ -161 out[9][1][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]); │ │ │ │ │ -162 │ │ │ │ │ -163 out[10][0][0] = 0.0; │ │ │ │ │ -164 out[10][0][1] = 0.0; │ │ │ │ │ -165 out[10][1][0] = 6.0*in[1]; │ │ │ │ │ -166 out[10][1][1] = -3.0 + 6.0*in[0]; │ │ │ │ │ -167 │ │ │ │ │ -168 out[11][0][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]); │ │ │ │ │ -169 out[11][0][1] = 0.0; │ │ │ │ │ -170 out[11][1][0] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]); │ │ │ │ │ -171 out[11][1][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]); │ │ │ │ │ -172 │ │ │ │ │ -173 out[12][0][0] = 6.0 - 12.0*in[0]; │ │ │ │ │ -174 out[12][0][1] = 0.0; │ │ │ │ │ -175 out[12][1][0] = 0.0; │ │ │ │ │ -176 out[12][1][1] = 0.0; │ │ │ │ │ -177 │ │ │ │ │ -178 out[13][0][0] = 0.0; │ │ │ │ │ -179 out[13][0][1] = 0.0; │ │ │ │ │ -180 out[13][1][0] = 0.0; │ │ │ │ │ -181 out[13][1][1] = 6.0 - 12.0*in[1]; │ │ │ │ │ -182 } │ │ │ │ │ -183 │ │ │ │ │ -_1_8_5 void _p_a_r_t_i_a_l (const std::array& _o_r_d_e_r, │ │ │ │ │ -186 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, // position │ │ │ │ │ -187 std::vector& out) const // return value │ │ │ │ │ -188 { │ │ │ │ │ -189 auto totalOrder = std::accumulate(_o_r_d_e_r.begin(), _o_r_d_e_r.end(), 0); │ │ │ │ │ -190 if (totalOrder == 0) { │ │ │ │ │ -191 _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(in, out); │ │ │ │ │ -192 } else if (totalOrder == 1) { │ │ │ │ │ -193 out.resize(_s_i_z_e()); │ │ │ │ │ -194 auto const direction = std::distance(_o_r_d_e_r.begin(), std::find(_o_r_d_e_r.begin │ │ │ │ │ -(), _o_r_d_e_r.end(), 1)); │ │ │ │ │ -195 │ │ │ │ │ -196 switch (direction) { │ │ │ │ │ -197 case 0: │ │ │ │ │ -198 out[0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]); │ │ │ │ │ -199 out[0][1] = 0.0; │ │ │ │ │ -200 │ │ │ │ │ -201 out[1][0] = -3.0 + 6.0*in[1]; │ │ │ │ │ -202 out[1][1] = 0.0; │ │ │ │ │ -203 │ │ │ │ │ -204 out[2][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]); │ │ │ │ │ -205 out[2][1] = 0.0; │ │ │ │ │ -206 │ │ │ │ │ -207 out[3][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]); │ │ │ │ │ -208 out[3][1] = 0.0; │ │ │ │ │ -209 │ │ │ │ │ -210 out[4][0] = 3.0 - 6.0*in[1]; │ │ │ │ │ -211 out[4][1] = 0.0; │ │ │ │ │ -212 │ │ │ │ │ -213 out[5][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]); │ │ │ │ │ -214 out[5][1] = 0.0; │ │ │ │ │ -215 │ │ │ │ │ -216 out[6][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]); │ │ │ │ │ -217 out[6][1] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]); │ │ │ │ │ -218 │ │ │ │ │ -219 out[7][0] = 0.0; │ │ │ │ │ -220 out[7][1] = 6.0 - 6.0*in[1]; │ │ │ │ │ -221 │ │ │ │ │ -222 out[8][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]); │ │ │ │ │ -223 out[8][1] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in[1]); │ │ │ │ │ -224 │ │ │ │ │ -225 out[9][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]); │ │ │ │ │ -226 out[9][1] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]); │ │ │ │ │ -227 │ │ │ │ │ -228 out[10][0] = 0.0; │ │ │ │ │ -229 out[10][1] = 6.0*in[1]; │ │ │ │ │ -230 │ │ │ │ │ -231 out[11][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]); │ │ │ │ │ -232 out[11][1] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]); │ │ │ │ │ -233 │ │ │ │ │ -234 out[12][0] = 6.0 - 12.0*in[0]; │ │ │ │ │ -235 out[12][1] = 0.0; │ │ │ │ │ -236 │ │ │ │ │ -237 out[13][0] = 0.0; │ │ │ │ │ -238 out[13][1] = 0.0; │ │ │ │ │ -239 break; │ │ │ │ │ -240 case 1: │ │ │ │ │ -241 out[0][0] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]); │ │ │ │ │ -242 out[0][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]); │ │ │ │ │ -243 │ │ │ │ │ -244 out[1][0] = -6.0 + 6.0*in[0]; │ │ │ │ │ -245 out[1][1] = 0.0; │ │ │ │ │ -246 │ │ │ │ │ -247 out[2][0] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in[1]); │ │ │ │ │ -248 out[2][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]); │ │ │ │ │ -249 │ │ │ │ │ -250 out[3][0] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]); │ │ │ │ │ -251 out[3][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]); │ │ │ │ │ -252 │ │ │ │ │ -253 out[4][0] = -6.0*in[0]; │ │ │ │ │ -254 out[4][1] = 0.0; │ │ │ │ │ -255 │ │ │ │ │ -256 out[5][0] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]); │ │ │ │ │ -257 out[5][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]); │ │ │ │ │ -258 │ │ │ │ │ -259 out[6][0] = 0.0; │ │ │ │ │ -260 out[6][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]); │ │ │ │ │ -261 │ │ │ │ │ -262 out[7][0] = 0.0; │ │ │ │ │ -263 out[7][1] = 3.0 - 6.0*in[0]; │ │ │ │ │ -264 │ │ │ │ │ -265 out[8][0] = 0.0; │ │ │ │ │ -266 out[8][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]); │ │ │ │ │ -267 │ │ │ │ │ -268 out[9][0] = 0.0; │ │ │ │ │ -269 out[9][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]); │ │ │ │ │ -270 │ │ │ │ │ -271 out[10][0] = 0.0; │ │ │ │ │ -272 out[10][1] = -3.0 + 6.0*in[0]; │ │ │ │ │ -273 │ │ │ │ │ -274 out[11][0] = 0.0; │ │ │ │ │ -275 out[11][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]); │ │ │ │ │ -276 │ │ │ │ │ -277 out[12][0] = 0.0; │ │ │ │ │ -278 out[12][1] = 0.0; │ │ │ │ │ -279 │ │ │ │ │ -280 out[13][0] = 0.0; │ │ │ │ │ -281 out[13][1] = 6.0 - 12.0*in[1]; │ │ │ │ │ -282 break; │ │ │ │ │ -283 default: │ │ │ │ │ -284 DUNE_THROW(RangeError, "Component out of range."); │ │ │ │ │ -285 } │ │ │ │ │ -286 } else { │ │ │ │ │ -287 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented"); │ │ │ │ │ -288 } │ │ │ │ │ -289 } │ │ │ │ │ -290 │ │ │ │ │ -_2_9_2 unsigned int _o_r_d_e_r() const │ │ │ │ │ -293 { │ │ │ │ │ -294 return 3; │ │ │ │ │ -295 } │ │ │ │ │ -296 │ │ │ │ │ -297 private: │ │ │ │ │ -298 std::array sign_; │ │ │ │ │ -299 }; │ │ │ │ │ -300} // end namespace Dune │ │ │ │ │ -301#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH │ │ │ │ │ +128 for (typename QuadratureRule::const_iterator it=rule2.begin(); │ │ │ │ │ +it!=rule2.end(); ++it) │ │ │ │ │ +129 { │ │ │ │ │ +130 auto y = f(it->position()); │ │ │ │ │ +131 out[12] += y[0]*it->weight(); │ │ │ │ │ +132 out[13] += y[1]*it->weight(); │ │ │ │ │ +133 } │ │ │ │ │ +134 } │ │ │ │ │ +135 │ │ │ │ │ +136 private: │ │ │ │ │ +137 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3; │ │ │ │ │ +138 typename LB::Traits::DomainType n0, n1, n2, n3; │ │ │ │ │ +139 }; │ │ │ │ │ +140} // end namespace Dune │ │ │ │ │ +141#endif / │ │ │ │ │ +/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:30 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_p_a_r_t_i_a_l │ │ │ │ │ -void partial(const std::array< unsigned int, 2 > &order, const typename │ │ │ │ │ -Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const │ │ │ │ │ -Evaluate partial derivatives of all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:185 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_o_r_d_e_r │ │ │ │ │ -unsigned int order() const │ │ │ │ │ -Polynomial order of the shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:292 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n │ │ │ │ │ -void evaluateFunction(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ -typename Traits::RangeType > &out) const │ │ │ │ │ -Evaluate all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:67 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -BDM2Cube2DLocalBasis() │ │ │ │ │ -Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:38 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -BDM2Cube2DLocalBasis(std::bitset< 4 > s) │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalinterpolation.hh:25 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +BDM2Cube2DLocalInterpolation(unsigned int s) │ │ │ │ │ Make set number s, where 0 <= s < 16. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:49 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_T_r_a_i_t_s │ │ │ │ │ -LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, │ │ │ │ │ -2 >, Dune::FieldMatrix< R, 2, 2 > > Traits │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:35 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_s_i_z_e │ │ │ │ │ -unsigned int size() const │ │ │ │ │ -number of shape functions │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:56 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n │ │ │ │ │ -void evaluateJacobian(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ -typename Traits::JacobianType > &out) const │ │ │ │ │ -Evaluate Jacobian of all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:108 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s │ │ │ │ │ -Type traits for LocalBasisVirtualInterface. │ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:35 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e │ │ │ │ │ -D DomainType │ │ │ │ │ -domain type │ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:43 │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalinterpolation.hh:39 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +BDM2Cube2DLocalInterpolation() │ │ │ │ │ +Standard constructor. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalinterpolation.hh:29 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ +void interpolate(const F &f, std::vector< C > &out) const │ │ │ │ │ +Interpolate a given function with shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalinterpolation.hh:78 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini2cube2dlocalbasis.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -72,27 +72,30 @@ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference
│ │ │ │ +
brezzidouglasmarini2cube2dlocalbasis.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <cstddef>
│ │ │ │ +
#include <array>
│ │ │ │ +#include <bitset>
│ │ │ │ +#include <numeric>
│ │ │ │ #include <vector>
│ │ │ │ -#include "../../common/localkey.hh"
│ │ │ │ +#include <dune/common/fmatrix.hh>
│ │ │ │ +#include "../../common/localbasis.hh"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM2Cube2DLocalCoefficients
 Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals. More...
class  Dune::BDM2Cube2DLocalBasis< D, R >
 First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,22 +3,25 @@ │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference │ │ │ │ │ -#include │ │ │ │ │ +brezzidouglasmarini2cube2dlocalbasis.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ #include │ │ │ │ │ -#include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h" │ │ │ │ │ +#include │ │ │ │ │ +#include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -  Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_ _D_,_ _R_ _> │ │ │ │ │ +  First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2cube2dlocalcoefficients.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini2cube2dlocalbasis.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,77 +74,316 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
brezzidouglasmarini2cube2dlocalcoefficients.hh
│ │ │ │ +
brezzidouglasmarini2cube2dlocalbasis.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
│ │ │ │
7
│ │ │ │ -
8#include <cstddef>
│ │ │ │ -
9#include <vector>
│ │ │ │ -
10
│ │ │ │ -
11#include "../../common/localkey.hh"
│ │ │ │ +
8#include <array>
│ │ │ │ +
9#include <bitset>
│ │ │ │ +
10#include <numeric>
│ │ │ │ +
11#include <vector>
│ │ │ │
12
│ │ │ │ -
13namespace Dune
│ │ │ │ -
14{
│ │ │ │ -
15
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
24 {
│ │ │ │ -
25
│ │ │ │ -
26 public:
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
29 {
│ │ │ │ -
30 for (std::size_t i = 0; i < 4; ++i)
│ │ │ │ -
31 {
│ │ │ │ -
32 li[3 * i] = LocalKey(i,1,0);
│ │ │ │ -
33 li[3 * i + 1] = LocalKey(i,1,1);
│ │ │ │ -
34 li[3 * i + 2] = LocalKey(i,1,2);
│ │ │ │ -
35 }
│ │ │ │ -
36 li[12] = LocalKey(0,0,0);
│ │ │ │ -
37 li[13] = LocalKey(0,0,1);
│ │ │ │ -
38 }
│ │ │ │ -
│ │ │ │ -
39
│ │ │ │ -
│ │ │ │ -
41 std::size_t size() const
│ │ │ │ -
42 {
│ │ │ │ -
43 return 14;
│ │ │ │ -
44 }
│ │ │ │ -
│ │ │ │ -
45
│ │ │ │ -
│ │ │ │ -
47 const LocalKey& localKey(std::size_t i) const
│ │ │ │ -
48 {
│ │ │ │ -
49 return li[i];
│ │ │ │ -
50 }
│ │ │ │ -
│ │ │ │ -
51
│ │ │ │ -
52 private:
│ │ │ │ -
53 std::vector<LocalKey> li;
│ │ │ │ -
54 };
│ │ │ │ +
13#include <dune/common/fmatrix.hh>
│ │ │ │ +
14
│ │ │ │ +
15#include "../../common/localbasis.hh"
│ │ │ │ +
16
│ │ │ │ +
17namespace Dune
│ │ │ │ +
18{
│ │ │ │ +
28 template<class D, class R>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
30 {
│ │ │ │ +
31
│ │ │ │ +
32 public:
│ │ │ │ + │ │ │ │ +
34 R,2,Dune::FieldVector<R,2>,
│ │ │ │ +
35 Dune::FieldMatrix<R,2,2> > Traits;
│ │ │ │ +
36
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
39 {
│ │ │ │ +
40 for (size_t i=0; i<4; i++)
│ │ │ │ +
41 sign_[i] = 1.0;
│ │ │ │ +
42 }
│ │ │ │ +
│ │ │ │ +
43
│ │ │ │ +
│ │ │ │ +
49 BDM2Cube2DLocalBasis(std::bitset<4> s)
│ │ │ │ +
50 {
│ │ │ │ +
51 for (size_t i=0; i<4; i++)
│ │ │ │ +
52 sign_[i] = s[i] ? -1.0 : 1.0;
│ │ │ │ +
53 }
│ │ │ │ +
│ │ │ │ +
54
│ │ │ │ +
│ │ │ │ +
56 unsigned int size() const
│ │ │ │ +
57 {
│ │ │ │ +
58 return 14;
│ │ │ │ +
59 }
│ │ │ │ +
│ │ │ │ +
60
│ │ │ │ +
│ │ │ │ +
67 inline void evaluateFunction(const typename Traits::DomainType& in,
│ │ │ │ +
68 std::vector<typename Traits::RangeType>& out) const
│ │ │ │ +
69 {
│ │ │ │ +
70 out.resize(size());
│ │ │ │ +
71
│ │ │ │ +
72 out[0][0] = sign_[0]*(-2.25 + 5.25*in[0] + 7.5*in[1] - 7.5*in[0]*in[1] - 3.0*in[0]*in[0] - 7.5*in[1]*in[1] + 7.5*in[0]*in[1]*in[1]);
│ │ │ │ +
73 out[0][1] = sign_[0]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in[1]);
│ │ │ │ +
74 out[1][0] = 3.0 - 3.0*in[0]-6.0*in[1] + 6.0*in[0]*in[1];
│ │ │ │ +
75 out[1][1] = 0.0;
│ │ │ │ +
76 out[2][0] = sign_[0]*(-3.75 + 3.75*in[0] + 22.5*in[1] - 22.5*in[0]*in[1] - 22.5*in[1]*in[1] + 22.5*in[0]*in[1]*in[1]);
│ │ │ │ +
77 out[2][1] = sign_[0]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in[1]);
│ │ │ │ +
78 out[3][0] = sign_[1]*(-0.75*in[0] - 7.5*in[0]*in[1] + 3.0*in[0]*in[0] + 7.5*in[0]*in[1]*in[1]);
│ │ │ │ +
79 out[3][1] = sign_[1]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in[1]);
│ │ │ │ +
80 out[4][0] = 3.0*in[0] - 6.0*in[0]*in[1];
│ │ │ │ +
81 out[4][1] = 0.0;
│ │ │ │ +
82 out[5][0] = sign_[1]*(+3.75*in[0] - 22.5*in[0]*in[1] + 22.5*in[0]*in[1]*in[1]);
│ │ │ │ +
83 out[5][1] = sign_[1]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in[1]);
│ │ │ │ +
84 out[6][0] = sign_[2]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in[0]);
│ │ │ │ +
85 out[6][1] = sign_[2]*(-2.25 + 7.5*in[0] + 5.25*in[1] - 7.5*in[0]*in[1] - 7.5*in[0]*in[0] - 3.0*in[1]*in[1] + 7.5*in[0]*in[0]*in[1]);
│ │ │ │ +
86 out[7][0] = 0.0;
│ │ │ │ +
87 out[7][1] = -3.0 + 6.0*in[0] + 3.0*in[1] - 6.0*in[0]*in[1];
│ │ │ │ +
88 out[8][0] = sign_[2]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in[0]);
│ │ │ │ +
89 out[8][1] = sign_[2]*(-3.75 + 22.5*in[0] + 3.75*in[1] - 22.5*in[0]*in[1] - 22.5*in[0]*in[0] + 22.5*in[0]*in[0]*in[1]);
│ │ │ │ +
90 out[9][0] = sign_[3]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in[0]);
│ │ │ │ +
91 out[9][1] = sign_[3]*(-0.75*in[1] - 7.5*in[0]*in[1] + 3.0*in[1]*in[1] + 7.5*in[0]*in[0]*in[1]);
│ │ │ │ +
92 out[10][0] = 0.0;
│ │ │ │ +
93 out[10][1] = -3.0*in[1] + 6.0*in[0]*in[1];
│ │ │ │ +
94 out[11][0] = sign_[3]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in[0]);
│ │ │ │ +
95 out[11][1] = sign_[3]*(3.75*in[1] - 22.5*in[0]*in[1] + 22.5*in[0]*in[0]*in[1]);
│ │ │ │ +
96 out[12][0] = 6.0*in[0] - 6.0*in[0]*in[0];
│ │ │ │ +
97 out[12][1] = 0.0;
│ │ │ │ +
98 out[13][0] = 0.0;
│ │ │ │ +
99 out[13][1] = 6.0*in[1] - 6.0*in[1]*in[1];
│ │ │ │ +
100 }
│ │ │ │ +
│ │ │ │ +
101
│ │ │ │ +
│ │ │ │ +
108 inline void evaluateJacobian(const typename Traits::DomainType& in,
│ │ │ │ +
109 std::vector<typename Traits::JacobianType>& out) const
│ │ │ │ +
110 {
│ │ │ │ +
111 out.resize(size());
│ │ │ │ +
112
│ │ │ │ +
113 out[0][0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]);
│ │ │ │ +
114 out[0][0][1] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]);
│ │ │ │ +
115 out[0][1][0] = 0.0;
│ │ │ │ +
116 out[0][1][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
│ │ │ │ +
117
│ │ │ │ +
118 out[1][0][0] = -3.0 + 6.0*in[1];
│ │ │ │ +
119 out[1][0][1] = -6.0 + 6.0*in[0];
│ │ │ │ +
120 out[1][1][0] = 0.0;
│ │ │ │ +
121 out[1][1][1] = 0.0;
│ │ │ │ +
122
│ │ │ │ +
123 out[2][0][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
│ │ │ │ +
124 out[2][0][1] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in[1]);
│ │ │ │ +
125 out[2][1][0] = 0.0;
│ │ │ │ +
126 out[2][1][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
│ │ │ │ +
127
│ │ │ │ +
128 out[3][0][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]);
│ │ │ │ +
129 out[3][0][1] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]);
│ │ │ │ +
130 out[3][1][0] = 0.0;
│ │ │ │ +
131 out[3][1][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
│ │ │ │ +
132
│ │ │ │ +
133 out[4][0][0] = 3.0 - 6.0*in[1];
│ │ │ │ +
134 out[4][0][1] = -6.0*in[0];
│ │ │ │ +
135 out[4][1][0] = 0.0;
│ │ │ │ +
136 out[4][1][1] = 0.0;
│ │ │ │ +
137
│ │ │ │ +
138 out[5][0][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
│ │ │ │ +
139 out[5][0][1] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]);
│ │ │ │ +
140 out[5][1][0] = 0.0;
│ │ │ │ +
141 out[5][1][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
│ │ │ │ +
142
│ │ │ │ +
143 out[6][0][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
│ │ │ │ +
144 out[6][0][1] = 0.0;
│ │ │ │ +
145 out[6][1][0] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]);
│ │ │ │ +
146 out[6][1][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]);
│ │ │ │ +
147
│ │ │ │ +
148 out[7][0][0] = 0.0;
│ │ │ │ +
149 out[7][0][1] = 0.0;
│ │ │ │ +
150 out[7][1][0] = 6.0 - 6.0*in[1];
│ │ │ │ +
151 out[7][1][1] = 3.0 - 6.0*in[0];
│ │ │ │ +
152
│ │ │ │ +
153 out[8][0][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
│ │ │ │ +
154 out[8][0][1] = 0.0;
│ │ │ │ +
155 out[8][1][0] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in[1]);
│ │ │ │ +
156 out[8][1][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
│ │ │ │ +
157
│ │ │ │ +
158 out[9][0][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
│ │ │ │ +
159 out[9][0][1] = 0.0;
│ │ │ │ +
160 out[9][1][0] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]);
│ │ │ │ +
161 out[9][1][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]);
│ │ │ │ +
162
│ │ │ │ +
163 out[10][0][0] = 0.0;
│ │ │ │ +
164 out[10][0][1] = 0.0;
│ │ │ │ +
165 out[10][1][0] = 6.0*in[1];
│ │ │ │ +
166 out[10][1][1] = -3.0 + 6.0*in[0];
│ │ │ │ +
167
│ │ │ │ +
168 out[11][0][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
│ │ │ │ +
169 out[11][0][1] = 0.0;
│ │ │ │ +
170 out[11][1][0] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]);
│ │ │ │ +
171 out[11][1][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
│ │ │ │ +
172
│ │ │ │ +
173 out[12][0][0] = 6.0 - 12.0*in[0];
│ │ │ │ +
174 out[12][0][1] = 0.0;
│ │ │ │ +
175 out[12][1][0] = 0.0;
│ │ │ │ +
176 out[12][1][1] = 0.0;
│ │ │ │ +
177
│ │ │ │ +
178 out[13][0][0] = 0.0;
│ │ │ │ +
179 out[13][0][1] = 0.0;
│ │ │ │ +
180 out[13][1][0] = 0.0;
│ │ │ │ +
181 out[13][1][1] = 6.0 - 12.0*in[1];
│ │ │ │ +
182 }
│ │ │ │ +
│ │ │ │ +
183
│ │ │ │ +
│ │ │ │ +
185 void partial (const std::array<unsigned int, 2>& order,
│ │ │ │ +
186 const typename Traits::DomainType& in, // position
│ │ │ │ +
187 std::vector<typename Traits::RangeType>& out) const // return value
│ │ │ │ +
188 {
│ │ │ │ +
189 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
│ │ │ │ +
190 if (totalOrder == 0) {
│ │ │ │ +
191 evaluateFunction(in, out);
│ │ │ │ +
192 } else if (totalOrder == 1) {
│ │ │ │ +
193 out.resize(size());
│ │ │ │ +
194 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
│ │ │ │ +
195
│ │ │ │ +
196 switch (direction) {
│ │ │ │ +
197 case 0:
│ │ │ │ +
198 out[0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]);
│ │ │ │ +
199 out[0][1] = 0.0;
│ │ │ │ +
200
│ │ │ │ +
201 out[1][0] = -3.0 + 6.0*in[1];
│ │ │ │ +
202 out[1][1] = 0.0;
│ │ │ │ +
203
│ │ │ │ +
204 out[2][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
│ │ │ │ +
205 out[2][1] = 0.0;
│ │ │ │ +
206
│ │ │ │ +
207 out[3][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]);
│ │ │ │ +
208 out[3][1] = 0.0;
│ │ │ │ +
209
│ │ │ │ +
210 out[4][0] = 3.0 - 6.0*in[1];
│ │ │ │ +
211 out[4][1] = 0.0;
│ │ │ │ +
212
│ │ │ │ +
213 out[5][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
│ │ │ │ +
214 out[5][1] = 0.0;
│ │ │ │ +
215
│ │ │ │ +
216 out[6][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
│ │ │ │ +
217 out[6][1] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]);
│ │ │ │ +
218
│ │ │ │ +
219 out[7][0] = 0.0;
│ │ │ │ +
220 out[7][1] = 6.0 - 6.0*in[1];
│ │ │ │ +
221
│ │ │ │ +
222 out[8][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
│ │ │ │ +
223 out[8][1] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in[1]);
│ │ │ │ +
224
│ │ │ │ +
225 out[9][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
│ │ │ │ +
226 out[9][1] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]);
│ │ │ │ +
227
│ │ │ │ +
228 out[10][0] = 0.0;
│ │ │ │ +
229 out[10][1] = 6.0*in[1];
│ │ │ │ +
230
│ │ │ │ +
231 out[11][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
│ │ │ │ +
232 out[11][1] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]);
│ │ │ │ +
233
│ │ │ │ +
234 out[12][0] = 6.0 - 12.0*in[0];
│ │ │ │ +
235 out[12][1] = 0.0;
│ │ │ │ +
236
│ │ │ │ +
237 out[13][0] = 0.0;
│ │ │ │ +
238 out[13][1] = 0.0;
│ │ │ │ +
239 break;
│ │ │ │ +
240 case 1:
│ │ │ │ +
241 out[0][0] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]);
│ │ │ │ +
242 out[0][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
│ │ │ │ +
243
│ │ │ │ +
244 out[1][0] = -6.0 + 6.0*in[0];
│ │ │ │ +
245 out[1][1] = 0.0;
│ │ │ │ +
246
│ │ │ │ +
247 out[2][0] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in[1]);
│ │ │ │ +
248 out[2][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
│ │ │ │ +
249
│ │ │ │ +
250 out[3][0] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]);
│ │ │ │ +
251 out[3][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
│ │ │ │ +
252
│ │ │ │ +
253 out[4][0] = -6.0*in[0];
│ │ │ │ +
254 out[4][1] = 0.0;
│ │ │ │ +
255
│ │ │ │ +
256 out[5][0] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]);
│ │ │ │ +
257 out[5][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
│ │ │ │ +
258
│ │ │ │ +
259 out[6][0] = 0.0;
│ │ │ │ +
260 out[6][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]);
│ │ │ │ +
261
│ │ │ │ +
262 out[7][0] = 0.0;
│ │ │ │ +
263 out[7][1] = 3.0 - 6.0*in[0];
│ │ │ │ +
264
│ │ │ │ +
265 out[8][0] = 0.0;
│ │ │ │ +
266 out[8][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
│ │ │ │ +
267
│ │ │ │ +
268 out[9][0] = 0.0;
│ │ │ │ +
269 out[9][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]);
│ │ │ │ +
270
│ │ │ │ +
271 out[10][0] = 0.0;
│ │ │ │ +
272 out[10][1] = -3.0 + 6.0*in[0];
│ │ │ │ +
273
│ │ │ │ +
274 out[11][0] = 0.0;
│ │ │ │ +
275 out[11][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
│ │ │ │ +
276
│ │ │ │ +
277 out[12][0] = 0.0;
│ │ │ │ +
278 out[12][1] = 0.0;
│ │ │ │ +
279
│ │ │ │ +
280 out[13][0] = 0.0;
│ │ │ │ +
281 out[13][1] = 6.0 - 12.0*in[1];
│ │ │ │ +
282 break;
│ │ │ │ +
283 default:
│ │ │ │ +
284 DUNE_THROW(RangeError, "Component out of range.");
│ │ │ │ +
285 }
│ │ │ │ +
286 } else {
│ │ │ │ +
287 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
│ │ │ │ +
288 }
│ │ │ │ +
289 }
│ │ │ │ +
│ │ │ │ +
290
│ │ │ │ +
│ │ │ │ +
292 unsigned int order() const
│ │ │ │ +
293 {
│ │ │ │ +
294 return 3;
│ │ │ │ +
295 }
│ │ │ │ +
│ │ │ │ +
296
│ │ │ │ +
297 private:
│ │ │ │ +
298 std::array<R,4> sign_;
│ │ │ │ +
299 };
│ │ │ │
│ │ │ │ -
55} // end namespace Dune
│ │ │ │ -
56#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
300} // end namespace Dune
│ │ │ │ +
301#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals.
Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:24
│ │ │ │ -
BDM2Cube2DLocalCoefficients()
Standard constructor.
Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:28
│ │ │ │ -
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:47
│ │ │ │ -
std::size_t size() const
number of coefficients
Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:41
│ │ │ │ -
Describe position of one degree of freedom.
Definition localkey.hh:24
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:30
│ │ │ │ +
void partial(const std::array< unsigned int, 2 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of all shape functions.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:185
│ │ │ │ +
unsigned int order() const
Polynomial order of the shape functions.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:292
│ │ │ │ +
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:67
│ │ │ │ +
BDM2Cube2DLocalBasis()
Standard constructor.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:38
│ │ │ │ +
BDM2Cube2DLocalBasis(std::bitset< 4 > s)
Make set number s, where 0 <= s < 16.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:49
│ │ │ │ +
LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
Definition brezzidouglasmarini2cube2dlocalbasis.hh:35
│ │ │ │ +
unsigned int size() const
number of shape functions
Definition brezzidouglasmarini2cube2dlocalbasis.hh:56
│ │ │ │ +
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:108
│ │ │ │ +
Type traits for LocalBasisVirtualInterface.
Definition common/localbasis.hh:35
│ │ │ │ +
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -2,79 +2,349 @@ │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d │ │ │ │ │ -brezzidouglasmarini2cube2dlocalcoefficients.hh │ │ │ │ │ +brezzidouglasmarini2cube2dlocalbasis.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ -9#include │ │ │ │ │ -10 │ │ │ │ │ -11#include "../../common/localkey.hh" │ │ │ │ │ +8#include │ │ │ │ │ +9#include │ │ │ │ │ +10#include │ │ │ │ │ +11#include │ │ │ │ │ 12 │ │ │ │ │ -13namespace _D_u_n_e │ │ │ │ │ -14{ │ │ │ │ │ -15 │ │ │ │ │ -_2_3 class _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -24 { │ │ │ │ │ -25 │ │ │ │ │ -26 public: │ │ │ │ │ -_2_8 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s() : li(14) │ │ │ │ │ -29 { │ │ │ │ │ -30 for (std::size_t i = 0; i < 4; ++i) │ │ │ │ │ -31 { │ │ │ │ │ -32 li[3 * i] = _L_o_c_a_l_K_e_y(i,1,0); │ │ │ │ │ -33 li[3 * i + 1] = _L_o_c_a_l_K_e_y(i,1,1); │ │ │ │ │ -34 li[3 * i + 2] = _L_o_c_a_l_K_e_y(i,1,2); │ │ │ │ │ -35 } │ │ │ │ │ -36 li[12] = _L_o_c_a_l_K_e_y(0,0,0); │ │ │ │ │ -37 li[13] = _L_o_c_a_l_K_e_y(0,0,1); │ │ │ │ │ -38 } │ │ │ │ │ -39 │ │ │ │ │ -_4_1 std::size_t _s_i_z_e() const │ │ │ │ │ -42 { │ │ │ │ │ -43 return 14; │ │ │ │ │ -44 } │ │ │ │ │ -45 │ │ │ │ │ -_4_7 const _L_o_c_a_l_K_e_y& _l_o_c_a_l_K_e_y(std::size_t i) const │ │ │ │ │ -48 { │ │ │ │ │ -49 return li[i]; │ │ │ │ │ -50 } │ │ │ │ │ -51 │ │ │ │ │ -52 private: │ │ │ │ │ -53 std::vector li; │ │ │ │ │ -54 }; │ │ │ │ │ -55} // end namespace Dune │ │ │ │ │ -56#endif / │ │ │ │ │ -/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +13#include │ │ │ │ │ +14 │ │ │ │ │ +15#include "../../common/localbasis.hh" │ │ │ │ │ +16 │ │ │ │ │ +17namespace _D_u_n_e │ │ │ │ │ +18{ │ │ │ │ │ +28 template │ │ │ │ │ +_2_9 class _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +30 { │ │ │ │ │ +31 │ │ │ │ │ +32 public: │ │ │ │ │ +33 typedef _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_<_D_,_2_,_D_u_n_e_:_:_F_i_e_l_d_V_e_c_t_o_r_<_D_,_2_>, │ │ │ │ │ +34 R,2,Dune::FieldVector, │ │ │ │ │ +_3_5 Dune::FieldMatrix > _T_r_a_i_t_s; │ │ │ │ │ +36 │ │ │ │ │ +_3_8 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s() │ │ │ │ │ +39 { │ │ │ │ │ +40 for (size_t i=0; i<4; i++) │ │ │ │ │ +41 sign_[i] = 1.0; │ │ │ │ │ +42 } │ │ │ │ │ +43 │ │ │ │ │ +_4_9 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s(std::bitset<4> s) │ │ │ │ │ +50 { │ │ │ │ │ +51 for (size_t i=0; i<4; i++) │ │ │ │ │ +52 sign_[i] = s[i] ? -1.0 : 1.0; │ │ │ │ │ +53 } │ │ │ │ │ +54 │ │ │ │ │ +_5_6 unsigned int _s_i_z_e() const │ │ │ │ │ +57 { │ │ │ │ │ +58 return 14; │ │ │ │ │ +59 } │ │ │ │ │ +60 │ │ │ │ │ +_6_7 inline void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ +68 std::vector& out) const │ │ │ │ │ +69 { │ │ │ │ │ +70 out.resize(_s_i_z_e()); │ │ │ │ │ +71 │ │ │ │ │ +72 out[0][0] = sign_[0]*(-2.25 + 5.25*in[0] + 7.5*in[1] - 7.5*in[0]*in[1] - │ │ │ │ │ +3.0*in[0]*in[0] - 7.5*in[1]*in[1] + 7.5*in[0]*in[1]*in[1]); │ │ │ │ │ +73 out[0][1] = sign_[0]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in │ │ │ │ │ +[1]); │ │ │ │ │ +74 out[1][0] = 3.0 - 3.0*in[0]-6.0*in[1] + 6.0*in[0]*in[1]; │ │ │ │ │ +75 out[1][1] = 0.0; │ │ │ │ │ +76 out[2][0] = sign_[0]*(-3.75 + 3.75*in[0] + 22.5*in[1] - 22.5*in[0]*in[1] - │ │ │ │ │ +22.5*in[1]*in[1] + 22.5*in[0]*in[1]*in[1]); │ │ │ │ │ +77 out[2][1] = sign_[0]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in │ │ │ │ │ +[1]); │ │ │ │ │ +78 out[3][0] = sign_[1]*(-0.75*in[0] - 7.5*in[0]*in[1] + 3.0*in[0]*in[0] + │ │ │ │ │ +7.5*in[0]*in[1]*in[1]); │ │ │ │ │ +79 out[3][1] = sign_[1]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in │ │ │ │ │ +[1]); │ │ │ │ │ +80 out[4][0] = 3.0*in[0] - 6.0*in[0]*in[1]; │ │ │ │ │ +81 out[4][1] = 0.0; │ │ │ │ │ +82 out[5][0] = sign_[1]*(+3.75*in[0] - 22.5*in[0]*in[1] + 22.5*in[0]*in[1]*in │ │ │ │ │ +[1]); │ │ │ │ │ +83 out[5][1] = sign_[1]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in │ │ │ │ │ +[1]); │ │ │ │ │ +84 out[6][0] = sign_[2]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in │ │ │ │ │ +[0]); │ │ │ │ │ +85 out[6][1] = sign_[2]*(-2.25 + 7.5*in[0] + 5.25*in[1] - 7.5*in[0]*in[1] - │ │ │ │ │ +7.5*in[0]*in[0] - 3.0*in[1]*in[1] + 7.5*in[0]*in[0]*in[1]); │ │ │ │ │ +86 out[7][0] = 0.0; │ │ │ │ │ +87 out[7][1] = -3.0 + 6.0*in[0] + 3.0*in[1] - 6.0*in[0]*in[1]; │ │ │ │ │ +88 out[8][0] = sign_[2]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in │ │ │ │ │ +[0]); │ │ │ │ │ +89 out[8][1] = sign_[2]*(-3.75 + 22.5*in[0] + 3.75*in[1] - 22.5*in[0]*in[1] - │ │ │ │ │ +22.5*in[0]*in[0] + 22.5*in[0]*in[0]*in[1]); │ │ │ │ │ +90 out[9][0] = sign_[3]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in │ │ │ │ │ +[0]); │ │ │ │ │ +91 out[9][1] = sign_[3]*(-0.75*in[1] - 7.5*in[0]*in[1] + 3.0*in[1]*in[1] + │ │ │ │ │ +7.5*in[0]*in[0]*in[1]); │ │ │ │ │ +92 out[10][0] = 0.0; │ │ │ │ │ +93 out[10][1] = -3.0*in[1] + 6.0*in[0]*in[1]; │ │ │ │ │ +94 out[11][0] = sign_[3]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in │ │ │ │ │ +[0]); │ │ │ │ │ +95 out[11][1] = sign_[3]*(3.75*in[1] - 22.5*in[0]*in[1] + 22.5*in[0]*in[0]*in │ │ │ │ │ +[1]); │ │ │ │ │ +96 out[12][0] = 6.0*in[0] - 6.0*in[0]*in[0]; │ │ │ │ │ +97 out[12][1] = 0.0; │ │ │ │ │ +98 out[13][0] = 0.0; │ │ │ │ │ +99 out[13][1] = 6.0*in[1] - 6.0*in[1]*in[1]; │ │ │ │ │ +100 } │ │ │ │ │ +101 │ │ │ │ │ +_1_0_8 inline void _e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n(const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ +109 std::vector& out) const │ │ │ │ │ +110 { │ │ │ │ │ +111 out.resize(_s_i_z_e()); │ │ │ │ │ +112 │ │ │ │ │ +113 out[0][0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]); │ │ │ │ │ +114 out[0][0][1] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]); │ │ │ │ │ +115 out[0][1][0] = 0.0; │ │ │ │ │ +116 out[0][1][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]); │ │ │ │ │ +117 │ │ │ │ │ +118 out[1][0][0] = -3.0 + 6.0*in[1]; │ │ │ │ │ +119 out[1][0][1] = -6.0 + 6.0*in[0]; │ │ │ │ │ +120 out[1][1][0] = 0.0; │ │ │ │ │ +121 out[1][1][1] = 0.0; │ │ │ │ │ +122 │ │ │ │ │ +123 out[2][0][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]); │ │ │ │ │ +124 out[2][0][1] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in │ │ │ │ │ +[1]); │ │ │ │ │ +125 out[2][1][0] = 0.0; │ │ │ │ │ +126 out[2][1][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]); │ │ │ │ │ +127 │ │ │ │ │ +128 out[3][0][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]); │ │ │ │ │ +129 out[3][0][1] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]); │ │ │ │ │ +130 out[3][1][0] = 0.0; │ │ │ │ │ +131 out[3][1][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]); │ │ │ │ │ +132 │ │ │ │ │ +133 out[4][0][0] = 3.0 - 6.0*in[1]; │ │ │ │ │ +134 out[4][0][1] = -6.0*in[0]; │ │ │ │ │ +135 out[4][1][0] = 0.0; │ │ │ │ │ +136 out[4][1][1] = 0.0; │ │ │ │ │ +137 │ │ │ │ │ +138 out[5][0][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]); │ │ │ │ │ +139 out[5][0][1] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]); │ │ │ │ │ +140 out[5][1][0] = 0.0; │ │ │ │ │ +141 out[5][1][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]); │ │ │ │ │ +142 │ │ │ │ │ +143 out[6][0][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]); │ │ │ │ │ +144 out[6][0][1] = 0.0; │ │ │ │ │ +145 out[6][1][0] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]); │ │ │ │ │ +146 out[6][1][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]); │ │ │ │ │ +147 │ │ │ │ │ +148 out[7][0][0] = 0.0; │ │ │ │ │ +149 out[7][0][1] = 0.0; │ │ │ │ │ +150 out[7][1][0] = 6.0 - 6.0*in[1]; │ │ │ │ │ +151 out[7][1][1] = 3.0 - 6.0*in[0]; │ │ │ │ │ +152 │ │ │ │ │ +153 out[8][0][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]); │ │ │ │ │ +154 out[8][0][1] = 0.0; │ │ │ │ │ +155 out[8][1][0] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in │ │ │ │ │ +[1]); │ │ │ │ │ +156 out[8][1][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]); │ │ │ │ │ +157 │ │ │ │ │ +158 out[9][0][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]); │ │ │ │ │ +159 out[9][0][1] = 0.0; │ │ │ │ │ +160 out[9][1][0] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]); │ │ │ │ │ +161 out[9][1][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]); │ │ │ │ │ +162 │ │ │ │ │ +163 out[10][0][0] = 0.0; │ │ │ │ │ +164 out[10][0][1] = 0.0; │ │ │ │ │ +165 out[10][1][0] = 6.0*in[1]; │ │ │ │ │ +166 out[10][1][1] = -3.0 + 6.0*in[0]; │ │ │ │ │ +167 │ │ │ │ │ +168 out[11][0][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]); │ │ │ │ │ +169 out[11][0][1] = 0.0; │ │ │ │ │ +170 out[11][1][0] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]); │ │ │ │ │ +171 out[11][1][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]); │ │ │ │ │ +172 │ │ │ │ │ +173 out[12][0][0] = 6.0 - 12.0*in[0]; │ │ │ │ │ +174 out[12][0][1] = 0.0; │ │ │ │ │ +175 out[12][1][0] = 0.0; │ │ │ │ │ +176 out[12][1][1] = 0.0; │ │ │ │ │ +177 │ │ │ │ │ +178 out[13][0][0] = 0.0; │ │ │ │ │ +179 out[13][0][1] = 0.0; │ │ │ │ │ +180 out[13][1][0] = 0.0; │ │ │ │ │ +181 out[13][1][1] = 6.0 - 12.0*in[1]; │ │ │ │ │ +182 } │ │ │ │ │ +183 │ │ │ │ │ +_1_8_5 void _p_a_r_t_i_a_l (const std::array& _o_r_d_e_r, │ │ │ │ │ +186 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, // position │ │ │ │ │ +187 std::vector& out) const // return value │ │ │ │ │ +188 { │ │ │ │ │ +189 auto totalOrder = std::accumulate(_o_r_d_e_r.begin(), _o_r_d_e_r.end(), 0); │ │ │ │ │ +190 if (totalOrder == 0) { │ │ │ │ │ +191 _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(in, out); │ │ │ │ │ +192 } else if (totalOrder == 1) { │ │ │ │ │ +193 out.resize(_s_i_z_e()); │ │ │ │ │ +194 auto const direction = std::distance(_o_r_d_e_r.begin(), std::find(_o_r_d_e_r.begin │ │ │ │ │ +(), _o_r_d_e_r.end(), 1)); │ │ │ │ │ +195 │ │ │ │ │ +196 switch (direction) { │ │ │ │ │ +197 case 0: │ │ │ │ │ +198 out[0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]); │ │ │ │ │ +199 out[0][1] = 0.0; │ │ │ │ │ +200 │ │ │ │ │ +201 out[1][0] = -3.0 + 6.0*in[1]; │ │ │ │ │ +202 out[1][1] = 0.0; │ │ │ │ │ +203 │ │ │ │ │ +204 out[2][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]); │ │ │ │ │ +205 out[2][1] = 0.0; │ │ │ │ │ +206 │ │ │ │ │ +207 out[3][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]); │ │ │ │ │ +208 out[3][1] = 0.0; │ │ │ │ │ +209 │ │ │ │ │ +210 out[4][0] = 3.0 - 6.0*in[1]; │ │ │ │ │ +211 out[4][1] = 0.0; │ │ │ │ │ +212 │ │ │ │ │ +213 out[5][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]); │ │ │ │ │ +214 out[5][1] = 0.0; │ │ │ │ │ +215 │ │ │ │ │ +216 out[6][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]); │ │ │ │ │ +217 out[6][1] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]); │ │ │ │ │ +218 │ │ │ │ │ +219 out[7][0] = 0.0; │ │ │ │ │ +220 out[7][1] = 6.0 - 6.0*in[1]; │ │ │ │ │ +221 │ │ │ │ │ +222 out[8][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]); │ │ │ │ │ +223 out[8][1] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in[1]); │ │ │ │ │ +224 │ │ │ │ │ +225 out[9][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]); │ │ │ │ │ +226 out[9][1] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]); │ │ │ │ │ +227 │ │ │ │ │ +228 out[10][0] = 0.0; │ │ │ │ │ +229 out[10][1] = 6.0*in[1]; │ │ │ │ │ +230 │ │ │ │ │ +231 out[11][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]); │ │ │ │ │ +232 out[11][1] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]); │ │ │ │ │ +233 │ │ │ │ │ +234 out[12][0] = 6.0 - 12.0*in[0]; │ │ │ │ │ +235 out[12][1] = 0.0; │ │ │ │ │ +236 │ │ │ │ │ +237 out[13][0] = 0.0; │ │ │ │ │ +238 out[13][1] = 0.0; │ │ │ │ │ +239 break; │ │ │ │ │ +240 case 1: │ │ │ │ │ +241 out[0][0] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]); │ │ │ │ │ +242 out[0][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]); │ │ │ │ │ +243 │ │ │ │ │ +244 out[1][0] = -6.0 + 6.0*in[0]; │ │ │ │ │ +245 out[1][1] = 0.0; │ │ │ │ │ +246 │ │ │ │ │ +247 out[2][0] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in[1]); │ │ │ │ │ +248 out[2][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]); │ │ │ │ │ +249 │ │ │ │ │ +250 out[3][0] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]); │ │ │ │ │ +251 out[3][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]); │ │ │ │ │ +252 │ │ │ │ │ +253 out[4][0] = -6.0*in[0]; │ │ │ │ │ +254 out[4][1] = 0.0; │ │ │ │ │ +255 │ │ │ │ │ +256 out[5][0] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]); │ │ │ │ │ +257 out[5][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]); │ │ │ │ │ +258 │ │ │ │ │ +259 out[6][0] = 0.0; │ │ │ │ │ +260 out[6][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]); │ │ │ │ │ +261 │ │ │ │ │ +262 out[7][0] = 0.0; │ │ │ │ │ +263 out[7][1] = 3.0 - 6.0*in[0]; │ │ │ │ │ +264 │ │ │ │ │ +265 out[8][0] = 0.0; │ │ │ │ │ +266 out[8][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]); │ │ │ │ │ +267 │ │ │ │ │ +268 out[9][0] = 0.0; │ │ │ │ │ +269 out[9][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]); │ │ │ │ │ +270 │ │ │ │ │ +271 out[10][0] = 0.0; │ │ │ │ │ +272 out[10][1] = -3.0 + 6.0*in[0]; │ │ │ │ │ +273 │ │ │ │ │ +274 out[11][0] = 0.0; │ │ │ │ │ +275 out[11][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]); │ │ │ │ │ +276 │ │ │ │ │ +277 out[12][0] = 0.0; │ │ │ │ │ +278 out[12][1] = 0.0; │ │ │ │ │ +279 │ │ │ │ │ +280 out[13][0] = 0.0; │ │ │ │ │ +281 out[13][1] = 6.0 - 12.0*in[1]; │ │ │ │ │ +282 break; │ │ │ │ │ +283 default: │ │ │ │ │ +284 DUNE_THROW(RangeError, "Component out of range."); │ │ │ │ │ +285 } │ │ │ │ │ +286 } else { │ │ │ │ │ +287 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented"); │ │ │ │ │ +288 } │ │ │ │ │ +289 } │ │ │ │ │ +290 │ │ │ │ │ +_2_9_2 unsigned int _o_r_d_e_r() const │ │ │ │ │ +293 { │ │ │ │ │ +294 return 3; │ │ │ │ │ +295 } │ │ │ │ │ +296 │ │ │ │ │ +297 private: │ │ │ │ │ +298 std::array sign_; │ │ │ │ │ +299 }; │ │ │ │ │ +300} // end namespace Dune │ │ │ │ │ +301#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalcoefficients.hh:24 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -BDM2Cube2DLocalCoefficients() │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:30 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_p_a_r_t_i_a_l │ │ │ │ │ +void partial(const std::array< unsigned int, 2 > &order, const typename │ │ │ │ │ +Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const │ │ │ │ │ +Evaluate partial derivatives of all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:185 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_o_r_d_e_r │ │ │ │ │ +unsigned int order() const │ │ │ │ │ +Polynomial order of the shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:292 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n │ │ │ │ │ +void evaluateFunction(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ +typename Traits::RangeType > &out) const │ │ │ │ │ +Evaluate all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:67 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +BDM2Cube2DLocalBasis() │ │ │ │ │ Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalcoefficients.hh:28 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_l_o_c_a_l_K_e_y │ │ │ │ │ -const LocalKey & localKey(std::size_t i) const │ │ │ │ │ -get i'th index │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalcoefficients.hh:47 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_s_i_z_e │ │ │ │ │ -std::size_t size() const │ │ │ │ │ -number of coefficients │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalcoefficients.hh:41 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ -Describe position of one degree of freedom. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:24 │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:38 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +BDM2Cube2DLocalBasis(std::bitset< 4 > s) │ │ │ │ │ +Make set number s, where 0 <= s < 16. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:49 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_T_r_a_i_t_s │ │ │ │ │ +LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, │ │ │ │ │ +2 >, Dune::FieldMatrix< R, 2, 2 > > Traits │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:35 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_s_i_z_e │ │ │ │ │ +unsigned int size() const │ │ │ │ │ +number of shape functions │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:56 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n │ │ │ │ │ +void evaluateJacobian(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ +typename Traits::JacobianType > &out) const │ │ │ │ │ +Evaluate Jacobian of all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:108 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s │ │ │ │ │ +Type traits for LocalBasisVirtualInterface. │ │ │ │ │ +DDeeffiinniittiioonn common/localbasis.hh:35 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e │ │ │ │ │ +D DomainType │ │ │ │ │ +domain type │ │ │ │ │ +DDeeffiinniittiioonn common/localbasis.hh:43 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00062.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,34 +65,33 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference
│ │ │ │ +
brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <cstddef>
│ │ │ │ -#include <vector>
│ │ │ │ -#include "../../common/localkey.hh"
│ │ │ │ +
#include <vector>
│ │ │ │ +#include <dune/geometry/quadraturerules.hh>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM1Cube2DLocalCoefficients
 Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals. More...
class  Dune::BDM2Simplex2DLocalInterpolation< LB >
 First order Brezzi-Douglas-Marini shape functions on triangles. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,24 +1,22 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference │ │ │ │ │ -#include │ │ │ │ │ +brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference │ │ │ │ │ #include │ │ │ │ │ -#include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h" │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -  Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals. │ │ │ │ │ - _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_ _L_B_ _> │ │ │ │ │ +  First order Brezzi-Douglas-Marini shape functions on triangles. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00062_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1cube2dlocalcoefficients.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini2simplex2dlocalinterpolation.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,78 +70,155 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarini1cube2dlocalcoefficients.hh
│ │ │ │ +
brezzidouglasmarini2simplex2dlocalinterpolation.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH
│ │ │ │
7
│ │ │ │ -
8#include <cstddef>
│ │ │ │ -
9#include <vector>
│ │ │ │ -
10
│ │ │ │ -
11#include "../../common/localkey.hh"
│ │ │ │ -
12
│ │ │ │ -
13namespace Dune
│ │ │ │ -
14{
│ │ │ │ -
15
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
24 {
│ │ │ │ -
25
│ │ │ │ -
26 public:
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
29 {
│ │ │ │ -
30 for (std::size_t i = 0; i < 4; ++i)
│ │ │ │ -
31 {
│ │ │ │ -
32 li[2*i] = LocalKey(i,1,0);
│ │ │ │ -
33 li[2*i + 1] = LocalKey(i,1,1);
│ │ │ │ -
34 }
│ │ │ │ -
35 }
│ │ │ │ -
│ │ │ │ -
36
│ │ │ │ -
│ │ │ │ -
38 std::size_t size () const
│ │ │ │ -
39 {
│ │ │ │ -
40 return 8;
│ │ │ │ -
41 }
│ │ │ │ -
│ │ │ │ -
42
│ │ │ │ -
│ │ │ │ -
44 const LocalKey& localKey (std::size_t i) const
│ │ │ │ -
45 {
│ │ │ │ -
46 return li[i];
│ │ │ │ -
47 }
│ │ │ │ -
│ │ │ │ -
48
│ │ │ │ -
49 private:
│ │ │ │ -
50 std::vector<LocalKey> li;
│ │ │ │ -
51 };
│ │ │ │ +
8#include <vector>
│ │ │ │ +
9
│ │ │ │ +
10#include <dune/geometry/quadraturerules.hh>
│ │ │ │ +
11
│ │ │ │ +
12namespace Dune
│ │ │ │ +
13{
│ │ │ │ +
14
│ │ │ │ +
23 template<class LB>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
25 {
│ │ │ │ +
26
│ │ │ │ +
27 public:
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
30 {
│ │ │ │ +
31 sign0 = sign1 = sign2 = 1.0;
│ │ │ │ +
32 }
│ │ │ │ +
│ │ │ │ +
33
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
40 {
│ │ │ │ +
41 sign0 = sign1 = sign2 = 1.0;
│ │ │ │ +
42 if (s & 1)
│ │ │ │ +
43 {
│ │ │ │ +
44 sign0 = -1.0;
│ │ │ │ +
45 }
│ │ │ │ +
46 if (s & 2)
│ │ │ │ +
47 {
│ │ │ │ +
48 sign1 = -1.0;
│ │ │ │ +
49 }
│ │ │ │ +
50 if (s & 4)
│ │ │ │ +
51 {
│ │ │ │ +
52 sign2 = -1.0;
│ │ │ │ +
53 }
│ │ │ │ +
54
│ │ │ │ +
55 m0[0] = 0.5;
│ │ │ │ +
56 m0[1] = 0.0;
│ │ │ │ +
57 m1[0] = 0.0;
│ │ │ │ +
58 m1[1] = 0.5;
│ │ │ │ +
59 m2[0] = 0.5;
│ │ │ │ +
60 m2[1] = 0.5;
│ │ │ │ +
61 n0[0] = 0.0;
│ │ │ │ +
62 n0[1] = -1.0;
│ │ │ │ +
63 n1[0] = -1.0;
│ │ │ │ +
64 n1[1] = 0.0;
│ │ │ │ +
65 n2[0] = 1.0/sqrt(2.0);
│ │ │ │ +
66 n2[1] = 1.0/sqrt(2.0);
│ │ │ │ +
67 c0 = 0.5*n0[0] - 1.0*n0[1];
│ │ │ │ +
68 c1 = -1.0*n1[0] + 0.5*n1[1];
│ │ │ │ +
69 c2 = 0.5*n2[0] + 0.5*n2[1];
│ │ │ │ +
70 }
│ │ │ │ +
│ │ │ │ +
71
│ │ │ │ +
80 template<typename F, typename C>
│ │ │ │ +
│ │ │ │ +
81 void interpolate(const F& f, std::vector<C>& out) const
│ │ │ │ +
82 {
│ │ │ │ +
83 // f gives v*outer normal at a point on the edge!
│ │ │ │ +
84 typedef typename LB::Traits::RangeFieldType Scalar;
│ │ │ │ +
85 typedef typename LB::Traits::DomainFieldType Vector;
│ │ │ │ +
86
│ │ │ │ +
87 out.resize(12);
│ │ │ │ +
88 fill(out.begin(), out.end(), 0.0);
│ │ │ │ +
89
│ │ │ │ +
90 const int qOrder = 4;
│ │ │ │ +
91 const Dune::QuadratureRule<Scalar,1>& rule = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder);
│ │ │ │ +
92
│ │ │ │ +
93 for (typename Dune::QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
│ │ │ │ +
94 {
│ │ │ │ +
95 Scalar qPos = it->position();
│ │ │ │ +
96
│ │ │ │ +
97 typename LB::Traits::DomainType localPos;
│ │ │ │ +
98
│ │ │ │ +
99 localPos[0] = qPos;
│ │ │ │ +
100 localPos[1] = 0.0;
│ │ │ │ +
101 auto y = f(localPos);
│ │ │ │ +
102 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;
│ │ │ │ +
103 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(1.0 - 2.0*qPos)*it->weight()/c0;
│ │ │ │ +
104 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign0/c0;
│ │ │ │ +
105
│ │ │ │ +
106 localPos[0] = 0.0;
│ │ │ │ +
107 localPos[1] = qPos;
│ │ │ │ +
108 y = f(localPos);
│ │ │ │ +
109 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1/c1;
│ │ │ │ +
110 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(2.0*qPos-1.0)*it->weight()/c1;
│ │ │ │ +
111 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign1/c1;
│ │ │ │ +
112
│ │ │ │ +
113 localPos[0] = 1.0 - qPos;
│ │ │ │ +
114 localPos[1] = qPos;
│ │ │ │ +
115 y = f(localPos);
│ │ │ │ +
116 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;
│ │ │ │ +
117 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight()/c2;
│ │ │ │ +
118 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign2/c2;
│ │ │ │ +
119 }
│ │ │ │ +
120
│ │ │ │ +
121 // a volume part is needed here for dofs: 9 10 11
│ │ │ │ +
122 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::simplex(2), qOrder);
│ │ │ │ +
123
│ │ │ │ +
124 for (typename QuadratureRule<Vector,2>::const_iterator it=rule2.begin(); it!=rule2.end(); ++it)
│ │ │ │ +
125 {
│ │ │ │ +
126 typename LB::Traits::DomainType localPos = it->position();
│ │ │ │ +
127 auto y = f(localPos);
│ │ │ │ +
128
│ │ │ │ +
129 out[9] += y[0]*it->weight();
│ │ │ │ +
130 out[10] += y[1]*it->weight();
│ │ │ │ +
131 out[11] += (y[0]*(localPos[0]-2.0*localPos[0]*localPos[1]-localPos[0]*localPos[0])
│ │ │ │ +
132 +y[1]*(-localPos[1]+2.0*localPos[0]*localPos[1]+localPos[1]*localPos[1]))*it->weight();
│ │ │ │ +
133 }
│ │ │ │ +
134 }
│ │ │ │ +
│ │ │ │ +
135
│ │ │ │ +
136 private:
│ │ │ │ +
137 typename LB::Traits::RangeFieldType sign0, sign1, sign2;
│ │ │ │ +
138 typename LB::Traits::DomainType m0, m1, m2;
│ │ │ │ +
139 typename LB::Traits::DomainType n0, n1, n2;
│ │ │ │ +
140 typename LB::Traits::RangeFieldType c0, c1, c2;
│ │ │ │ +
141 };
│ │ │ │
│ │ │ │ -
52}
│ │ │ │ -
53#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
142} // end namespace Dune
│ │ │ │ +
143#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.
Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:24
│ │ │ │ -
BDM1Cube2DLocalCoefficients()
Standard constructor.
Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:28
│ │ │ │ -
std::size_t size() const
number of coefficients
Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:38
│ │ │ │ -
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:44
│ │ │ │ -
Describe position of one degree of freedom.
Definition localkey.hh:24
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on triangles.
Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:25
│ │ │ │ +
BDM2Simplex2DLocalInterpolation()
Standard constructor.
Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:29
│ │ │ │ +
void interpolate(const F &f, std::vector< C > &out) const
Interpolate a given function with shape functions.
Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:81
│ │ │ │ +
BDM2Simplex2DLocalInterpolation(unsigned int s)
Make set number s, where 0 <= s < 8.
Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:39
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,77 +1,163 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d │ │ │ │ │ -brezzidouglasmarini1cube2dlocalcoefficients.hh │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d │ │ │ │ │ +brezzidouglasmarini2simplex2dlocalinterpolation.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +5#ifndef │ │ │ │ │ +DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH │ │ │ │ │ +6#define │ │ │ │ │ +DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ -9#include │ │ │ │ │ -10 │ │ │ │ │ -11#include "../../common/localkey.hh" │ │ │ │ │ -12 │ │ │ │ │ -13namespace _D_u_n_e │ │ │ │ │ -14{ │ │ │ │ │ -15 │ │ │ │ │ -_2_3 class _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -24 { │ │ │ │ │ -25 │ │ │ │ │ -26 public: │ │ │ │ │ -_2_8 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () : li(8) │ │ │ │ │ -29 { │ │ │ │ │ -30 for (std::size_t i = 0; i < 4; ++i) │ │ │ │ │ -31 { │ │ │ │ │ -32 li[2*i] = _L_o_c_a_l_K_e_y(i,1,0); │ │ │ │ │ -33 li[2*i + 1] = _L_o_c_a_l_K_e_y(i,1,1); │ │ │ │ │ -34 } │ │ │ │ │ -35 } │ │ │ │ │ -36 │ │ │ │ │ -_3_8 std::size_t _s_i_z_e () const │ │ │ │ │ -39 { │ │ │ │ │ -40 return 8; │ │ │ │ │ -41 } │ │ │ │ │ -42 │ │ │ │ │ -_4_4 const _L_o_c_a_l_K_e_y& _l_o_c_a_l_K_e_y (std::size_t i) const │ │ │ │ │ -45 { │ │ │ │ │ -46 return li[i]; │ │ │ │ │ -47 } │ │ │ │ │ -48 │ │ │ │ │ -49 private: │ │ │ │ │ -50 std::vector li; │ │ │ │ │ -51 }; │ │ │ │ │ -52} │ │ │ │ │ -53#endif / │ │ │ │ │ -/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +8#include │ │ │ │ │ +9 │ │ │ │ │ +10#include │ │ │ │ │ +11 │ │ │ │ │ +12namespace _D_u_n_e │ │ │ │ │ +13{ │ │ │ │ │ +14 │ │ │ │ │ +23 template │ │ │ │ │ +_2_4 class _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +25 { │ │ │ │ │ +26 │ │ │ │ │ +27 public: │ │ │ │ │ +_2_9 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n() │ │ │ │ │ +30 { │ │ │ │ │ +31 sign0 = sign1 = sign2 = 1.0; │ │ │ │ │ +32 } │ │ │ │ │ +33 │ │ │ │ │ +_3_9 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n(unsigned int s) │ │ │ │ │ +40 { │ │ │ │ │ +41 sign0 = sign1 = sign2 = 1.0; │ │ │ │ │ +42 if (s & 1) │ │ │ │ │ +43 { │ │ │ │ │ +44 sign0 = -1.0; │ │ │ │ │ +45 } │ │ │ │ │ +46 if (s & 2) │ │ │ │ │ +47 { │ │ │ │ │ +48 sign1 = -1.0; │ │ │ │ │ +49 } │ │ │ │ │ +50 if (s & 4) │ │ │ │ │ +51 { │ │ │ │ │ +52 sign2 = -1.0; │ │ │ │ │ +53 } │ │ │ │ │ +54 │ │ │ │ │ +55 m0[0] = 0.5; │ │ │ │ │ +56 m0[1] = 0.0; │ │ │ │ │ +57 m1[0] = 0.0; │ │ │ │ │ +58 m1[1] = 0.5; │ │ │ │ │ +59 m2[0] = 0.5; │ │ │ │ │ +60 m2[1] = 0.5; │ │ │ │ │ +61 n0[0] = 0.0; │ │ │ │ │ +62 n0[1] = -1.0; │ │ │ │ │ +63 n1[0] = -1.0; │ │ │ │ │ +64 n1[1] = 0.0; │ │ │ │ │ +65 n2[0] = 1.0/sqrt(2.0); │ │ │ │ │ +66 n2[1] = 1.0/sqrt(2.0); │ │ │ │ │ +67 c0 = 0.5*n0[0] - 1.0*n0[1]; │ │ │ │ │ +68 c1 = -1.0*n1[0] + 0.5*n1[1]; │ │ │ │ │ +69 c2 = 0.5*n2[0] + 0.5*n2[1]; │ │ │ │ │ +70 } │ │ │ │ │ +71 │ │ │ │ │ +80 template │ │ │ │ │ +_8_1 void _i_n_t_e_r_p_o_l_a_t_e(const F& f, std::vector& out) const │ │ │ │ │ +82 { │ │ │ │ │ +83 // f gives v*outer normal at a point on the edge! │ │ │ │ │ +84 typedef typename LB::Traits::RangeFieldType Scalar; │ │ │ │ │ +85 typedef typename LB::Traits::DomainFieldType Vector; │ │ │ │ │ +86 │ │ │ │ │ +87 out.resize(12); │ │ │ │ │ +88 fill(out.begin(), out.end(), 0.0); │ │ │ │ │ +89 │ │ │ │ │ +90 const int qOrder = 4; │ │ │ │ │ +91 const Dune::QuadratureRule& rule = Dune:: │ │ │ │ │ +QuadratureRules::rule(Dune::GeometryTypes::simplex(1), qOrder); │ │ │ │ │ +92 │ │ │ │ │ +93 for (typename Dune::QuadratureRule::const_iterator it=rule.begin │ │ │ │ │ +(); it!=rule.end(); ++it) │ │ │ │ │ +94 { │ │ │ │ │ +95 Scalar qPos = it->position(); │ │ │ │ │ +96 │ │ │ │ │ +97 typename LB::Traits::DomainType localPos; │ │ │ │ │ +98 │ │ │ │ │ +99 localPos[0] = qPos; │ │ │ │ │ +100 localPos[1] = 0.0; │ │ │ │ │ +101 auto y = f(localPos); │ │ │ │ │ +102 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0; │ │ │ │ │ +103 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(1.0 - 2.0*qPos)*it->weight()/c0; │ │ │ │ │ +104 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it- │ │ │ │ │ +>weight()*sign0/c0; │ │ │ │ │ +105 │ │ │ │ │ +106 localPos[0] = 0.0; │ │ │ │ │ +107 localPos[1] = qPos; │ │ │ │ │ +108 y = f(localPos); │ │ │ │ │ +109 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1/c1; │ │ │ │ │ +110 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(2.0*qPos-1.0)*it->weight()/c1; │ │ │ │ │ +111 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it- │ │ │ │ │ +>weight()*sign1/c1; │ │ │ │ │ +112 │ │ │ │ │ +113 localPos[0] = 1.0 - qPos; │ │ │ │ │ +114 localPos[1] = qPos; │ │ │ │ │ +115 y = f(localPos); │ │ │ │ │ +116 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2; │ │ │ │ │ +117 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight()/c2; │ │ │ │ │ +118 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it- │ │ │ │ │ +>weight()*sign2/c2; │ │ │ │ │ +119 } │ │ │ │ │ +120 │ │ │ │ │ +121 // a volume part is needed here for dofs: 9 10 11 │ │ │ │ │ +122 const QuadratureRule& rule2 = QuadratureRules::rule │ │ │ │ │ +(GeometryTypes::simplex(2), qOrder); │ │ │ │ │ +123 │ │ │ │ │ +124 for (typename QuadratureRule::const_iterator it=rule2.begin(); │ │ │ │ │ +it!=rule2.end(); ++it) │ │ │ │ │ +125 { │ │ │ │ │ +126 typename LB::Traits::DomainType localPos = it->position(); │ │ │ │ │ +127 auto y = f(localPos); │ │ │ │ │ +128 │ │ │ │ │ +129 out[9] += y[0]*it->weight(); │ │ │ │ │ +130 out[10] += y[1]*it->weight(); │ │ │ │ │ +131 out[11] += (y[0]*(localPos[0]-2.0*localPos[0]*localPos[1]-localPos │ │ │ │ │ +[0]*localPos[0]) │ │ │ │ │ +132 +y[1]*(-localPos[1]+2.0*localPos[0]*localPos[1]+localPos[1]*localPos │ │ │ │ │ +[1]))*it->weight(); │ │ │ │ │ +133 } │ │ │ │ │ +134 } │ │ │ │ │ +135 │ │ │ │ │ +136 private: │ │ │ │ │ +137 typename LB::Traits::RangeFieldType sign0, sign1, sign2; │ │ │ │ │ +138 typename LB::Traits::DomainType m0, m1, m2; │ │ │ │ │ +139 typename LB::Traits::DomainType n0, n1, n2; │ │ │ │ │ +140 typename LB::Traits::RangeFieldType c0, c1, c2; │ │ │ │ │ +141 }; │ │ │ │ │ +142} // end namespace Dune │ │ │ │ │ +143#endif / │ │ │ │ │ +/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalcoefficients.hh:24 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -BDM1Cube2DLocalCoefficients() │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on triangles. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalinterpolation.hh:25 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +BDM2Simplex2DLocalInterpolation() │ │ │ │ │ Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalcoefficients.hh:28 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_s_i_z_e │ │ │ │ │ -std::size_t size() const │ │ │ │ │ -number of coefficients │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalcoefficients.hh:38 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_l_o_c_a_l_K_e_y │ │ │ │ │ -const LocalKey & localKey(std::size_t i) const │ │ │ │ │ -get i'th index │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalcoefficients.hh:44 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ -Describe position of one degree of freedom. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:24 │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalinterpolation.hh:29 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ +void interpolate(const F &f, std::vector< C > &out) const │ │ │ │ │ +Interpolate a given function with shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalinterpolation.hh:81 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +BDM2Simplex2DLocalInterpolation(unsigned int s) │ │ │ │ │ +Make set number s, where 0 <= s < 8. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalinterpolation.hh:39 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00065.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1cube2dlocalbasis.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini2simplex2dlocalbasis.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,37 +65,37 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini1cube2dlocalbasis.hh File Reference
│ │ │ │ +
brezzidouglasmarini2simplex2dlocalbasis.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include <array>
│ │ │ │ #include <bitset>
│ │ │ │ #include <numeric>
│ │ │ │ #include <vector>
│ │ │ │ #include <dune/common/fmatrix.hh>
│ │ │ │ #include "../../common/localbasis.hh"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM1Cube2DLocalBasis< D, R >
 First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral. More...
class  Dune::BDM2Simplex2DLocalBasis< D, R >
 First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,27 +1,27 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini1cube2dlocalbasis.hh File Reference │ │ │ │ │ +brezzidouglasmarini2simplex2dlocalbasis.hh File Reference │ │ │ │ │ #include │ │ │ │ │ #include │ │ │ │ │ #include │ │ │ │ │ #include │ │ │ │ │ #include │ │ │ │ │ #include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_ _D_,_ _R_ _> │ │ │ │ │ -  First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ - quadrilateral. _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_<_ _D_,_ _R_ _> │ │ │ │ │ +  First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ + _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00065_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1cube2dlocalbasis.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini2simplex2dlocalbasis.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,239 +70,332 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarini1cube2dlocalbasis.hh
│ │ │ │ +
brezzidouglasmarini2simplex2dlocalbasis.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │
7
│ │ │ │
8#include <array>
│ │ │ │
9#include <bitset>
│ │ │ │
10#include <numeric>
│ │ │ │
11#include <vector>
│ │ │ │
12
│ │ │ │
13#include <dune/common/fmatrix.hh>
│ │ │ │
14
│ │ │ │
15#include "../../common/localbasis.hh"
│ │ │ │
16
│ │ │ │
17namespace Dune
│ │ │ │
18{
│ │ │ │
28 template<class D, class R>
│ │ │ │
│ │ │ │ - │ │ │ │ + │ │ │ │
30 {
│ │ │ │
31
│ │ │ │
32 public:
│ │ │ │ -
33 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
│ │ │ │ -
34 Dune::FieldMatrix<R,2,2> > Traits;
│ │ │ │ -
35
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
38 {
│ │ │ │ -
39 for (size_t i=0; i<4; i++)
│ │ │ │ -
40 sign_[i] = 1.0;
│ │ │ │ -
41 }
│ │ │ │ -
│ │ │ │ -
42
│ │ │ │ -
│ │ │ │ -
48 BDM1Cube2DLocalBasis (std::bitset<4> s)
│ │ │ │ -
49 {
│ │ │ │ -
50 for (size_t i=0; i<4; i++)
│ │ │ │ -
51 sign_[i] = s[i] ? -1.0 : 1.0;
│ │ │ │ -
52 }
│ │ │ │ -
│ │ │ │ -
53
│ │ │ │ -
│ │ │ │ -
55 unsigned int size () const
│ │ │ │ -
56 {
│ │ │ │ -
57 return 8;
│ │ │ │ -
58 }
│ │ │ │ -
│ │ │ │ -
59
│ │ │ │ -
│ │ │ │ -
66 inline void evaluateFunction (const typename Traits::DomainType& in,
│ │ │ │ -
67 std::vector<typename Traits::RangeType>& out) const
│ │ │ │ -
68 {
│ │ │ │ -
69 out.resize(8);
│ │ │ │ -
70
│ │ │ │ -
71 out[0][0] = sign_[0]*(in[0] - 1.0);
│ │ │ │ -
72 out[0][1] = 0.0;
│ │ │ │ -
73 out[1][0] = 6.0*in[0]*in[1] - 3.0*in[0]-6*in[1] + 3.0;
│ │ │ │ -
74 out[1][1] = -3.0*in[1]*in[1] + 3.0*in[1];
│ │ │ │ -
75 out[2][0] = sign_[1]*(in[0]);
│ │ │ │ -
76 out[2][1] = 0.0;
│ │ │ │ -
77 out[3][0] = -6.0*in[0]*in[1] + 3.0*in[0];
│ │ │ │ -
78 out[3][1] = 3.0*in[1]*in[1] - 3.0*in[1];
│ │ │ │ -
79 out[4][0] = 0.0;
│ │ │ │ -
80 out[4][1] = sign_[2]*(in[1] - 1.0);
│ │ │ │ -
81 out[5][0] = 3.0*in[0]*in[0] - 3.0*in[0];
│ │ │ │ -
82 out[5][1] = -6.0*in[0]*in[1] + 6.0*in[0] + 3.0*in[1] - 3.0;
│ │ │ │ -
83 out[6][0] = 0.0;
│ │ │ │ -
84 out[6][1] = sign_[3]*(in[1]);
│ │ │ │ -
85 out[7][0] = -3.0*in[0]*in[0] + 3.0*in[0];
│ │ │ │ -
86 out[7][1] = 6.0*in[0]*in[1] - 3.0*in[1];
│ │ │ │ -
87 }
│ │ │ │ -
│ │ │ │ + │ │ │ │ +
34 R,2,Dune::FieldVector<R,2>,
│ │ │ │ +
35 Dune::FieldMatrix<R,2,2> > Traits;
│ │ │ │ +
36
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
39 {
│ │ │ │ +
40 for (size_t i=0; i<3; i++)
│ │ │ │ +
41 sign_[i] = 1.0;
│ │ │ │ +
42 }
│ │ │ │ +
│ │ │ │ +
43
│ │ │ │ +
│ │ │ │ +
49 BDM2Simplex2DLocalBasis(std::bitset<3> s)
│ │ │ │ +
50 {
│ │ │ │ +
51 for (size_t i=0; i<3; i++)
│ │ │ │ +
52 sign_[i] = s[i] ? -1.0 : 1.0;
│ │ │ │ +
53 }
│ │ │ │ +
│ │ │ │ +
54
│ │ │ │ +
│ │ │ │ +
56 unsigned int size() const
│ │ │ │ +
57 {
│ │ │ │ +
58 return 12;
│ │ │ │ +
59 }
│ │ │ │ +
│ │ │ │ +
60
│ │ │ │ +
│ │ │ │ +
67 inline void evaluateFunction(const typename Traits::DomainType& in,
│ │ │ │ +
68 std::vector<typename Traits::RangeType>& out) const
│ │ │ │ +
69 {
│ │ │ │ +
70 out.resize(size());
│ │ │ │ +
71
│ │ │ │ +
72 out[0][0] = sign_[0]*(-2*in[0]*in[1] + in[0]*in[0]);
│ │ │ │ +
73 out[0][1] = sign_[0]*(-1 + 6*in[1] -2*in[0]*in[1] - 5*in[1]*in[1]);
│ │ │ │ +
74
│ │ │ │ +
75 out[1][0] = 1.5*in[0] + 3*in[0]*in[1] - 4.5*in[0]*in[0];
│ │ │ │ +
76 out[1][1] = -3 + 6*in[0] + 10.5*in[1] - 15*in[0]*in[1] - 7.5*in[1]*in[1];
│ │ │ │ +
77
│ │ │ │ +
78 out[2][0] = sign_[0]*(-7.5*in[0] + 5*in[0]*in[1] + 12.5*in[0]*in[0]);
│ │ │ │ +
79 out[2][1] = sign_[0]*(-5 + 30*in[0] + 7.5*in[1] - 25*in[0]*in[1] - 30*in[0]*in[0] - 2.5*in[1]*in[1]);
│ │ │ │ +
80
│ │ │ │ +
81
│ │ │ │ +
82
│ │ │ │ +
83 out[3][0] = sign_[1]*(-1 + 6*in[0] - 2*in[0]*in[1] - 5*in[0]*in[0]);
│ │ │ │ +
84 out[3][1] = sign_[1]*(-2*in[0]*in[1] + in[1]*in[1]);
│ │ │ │ +
85
│ │ │ │ +
86 out[4][0] = 3 - 10.5*in[0] - 6*in[1] + 15*in[0]*in[1] + 7.5*in[0]*in[0];
│ │ │ │ +
87 out[4][1] = -1.5*in[1] - 3*in[0]*in[1] + 4.5*in[1]*in[1];
│ │ │ │
88
│ │ │ │ -
│ │ │ │ -
95 inline void evaluateJacobian (const typename Traits::DomainType& in,
│ │ │ │ -
96 std::vector<typename Traits::JacobianType>& out) const
│ │ │ │ -
97 {
│ │ │ │ -
98 out.resize(8);
│ │ │ │ +
89 out[5][0] = sign_[1]*(-5 + 7.5*in[0] + 30*in[1] - 25*in[0]*in[1] - 2.5*in[0]*in[0] - 30*in[1]*in[1]);
│ │ │ │ +
90 out[5][1] = sign_[1]*(-7.5*in[1] + 5*in[0]*in[1] + 12.5*in[1]*in[1]);
│ │ │ │ +
91
│ │ │ │ +
92
│ │ │ │ +
93
│ │ │ │ +
94 out[6][0] = sign_[2]*(-3*in[0] + 4*in[0]*in[1] + 4*in[0]*in[0]);
│ │ │ │ +
95 out[6][1] = sign_[2]*(-3*in[1] + 4*in[0]*in[1] + 4*in[1]*in[1]);
│ │ │ │ +
96
│ │ │ │ +
97 out[7][0] = -3*in[0] + 6*in[0]*in[0];
│ │ │ │ +
98 out[7][1] = 3*in[1] - 6*in[1]*in[1];
│ │ │ │
99
│ │ │ │ -
100 out[0][0][0] = sign_[0];
│ │ │ │ -
101 out[0][0][1] = 0.0;
│ │ │ │ -
102 out[0][1][0] = 0.0;
│ │ │ │ -
103 out[0][1][1] = 0.0;
│ │ │ │ +
100 out[8][0] = sign_[2]*(-10*in[0]*in[1] + 5*in[0]*in[0]);
│ │ │ │ +
101 out[8][1] = sign_[2]*(-10*in[0]*in[1] + 5*in[1]*in[1]);
│ │ │ │ +
102
│ │ │ │ +
103
│ │ │ │
104
│ │ │ │ -
105 out[1][0][0] = 6.0*in[1] - 3.0;
│ │ │ │ -
106 out[1][0][1] = 6.0*in[0] - 6.0;
│ │ │ │ -
107 out[1][1][0] = 0.0;
│ │ │ │ -
108 out[1][1][1] = -6.0*in[1] + 3.0;
│ │ │ │ -
109
│ │ │ │ -
110 out[2][0][0] = sign_[1];
│ │ │ │ -
111 out[2][0][1] = 0.0;
│ │ │ │ -
112 out[2][1][0] = 0.0;
│ │ │ │ -
113 out[2][1][1] = 0.0;
│ │ │ │ +
105 out[9][0] = 18*in[0] - 12*in[0]*in[1] - 18*in[0]*in[0];
│ │ │ │ +
106 out[9][1] = 6*in[1] - 12*in[0]*in[1] - 6*in[1]*in[1];
│ │ │ │ +
107
│ │ │ │ +
108 out[10][0] = 6*in[0] - 12*in[0]*in[1] - 6*in[0]*in[0];
│ │ │ │ +
109 out[10][1] = 18*in[1] - 12*in[0]*in[1] - 18*in[1]*in[1];
│ │ │ │ +
110
│ │ │ │ +
111 out[11][0] = 90*in[0] - 180*in[0]*in[1] - 90*in[0]*in[0];
│ │ │ │ +
112 out[11][1] = -90*in[1] + 180*in[0]*in[1] + 90*in[1]*in[1];
│ │ │ │ +
113 }
│ │ │ │ +
│ │ │ │
114
│ │ │ │ -
115 out[3][0][0] = -6.0*in[1] + 3.0;
│ │ │ │ -
116 out[3][0][1] = -6.0*in[0];
│ │ │ │ -
117 out[3][1][0] = 0.0;
│ │ │ │ -
118 out[3][1][1] = 6.0*in[1] - 3.0;
│ │ │ │ -
119
│ │ │ │ -
120 out[4][0][0] = 0.0;
│ │ │ │ -
121 out[4][0][1] = 0.0;
│ │ │ │ -
122 out[4][1][0] = 0.0;
│ │ │ │ -
123 out[4][1][1] = sign_[2];
│ │ │ │ -
124
│ │ │ │ -
125 out[5][0][0] = 6.0*in[0] - 3.0;
│ │ │ │ -
126 out[5][0][1] = 0.0;
│ │ │ │ -
127 out[5][1][0] = -6.0*in[1] + 6.0;
│ │ │ │ -
128 out[5][1][1] = -6.0*in[0] + 3.0;
│ │ │ │ -
129
│ │ │ │ -
130 out[6][0][0] = 0.0;
│ │ │ │ -
131 out[6][0][1] = 0.0;
│ │ │ │ -
132 out[6][1][0] = 0.0;
│ │ │ │ -
133 out[6][1][1] = sign_[3];
│ │ │ │ -
134
│ │ │ │ -
135 out[7][0][0] = -6.0*in[0] + 3.0;
│ │ │ │ -
136 out[7][0][1] = 0.0;
│ │ │ │ -
137 out[7][1][0] = 6.0*in[1];
│ │ │ │ -
138 out[7][1][1] = 6.0*in[0] - 3.0;
│ │ │ │ -
139 }
│ │ │ │ -
│ │ │ │ -
140
│ │ │ │ -
│ │ │ │ -
142 void partial (const std::array<unsigned int, 2>& order,
│ │ │ │ -
143 const typename Traits::DomainType& in, // position
│ │ │ │ -
144 std::vector<typename Traits::RangeType>& out) const // return value
│ │ │ │ -
145 {
│ │ │ │ -
146 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
│ │ │ │ -
147 if (totalOrder == 0) {
│ │ │ │ -
148 evaluateFunction(in, out);
│ │ │ │ -
149 } else if (totalOrder == 1) {
│ │ │ │ -
150 out.resize(size());
│ │ │ │ -
151 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
│ │ │ │ -
152
│ │ │ │ -
153 switch (direction) {
│ │ │ │ -
154 case 0:
│ │ │ │ -
155 out[0][0] = sign_[0];
│ │ │ │ -
156 out[0][1] = 0.0;
│ │ │ │ +
│ │ │ │ +
121 inline void evaluateJacobian(const typename Traits::DomainType& in,
│ │ │ │ +
122 std::vector<typename Traits::JacobianType>& out) const
│ │ │ │ +
123 {
│ │ │ │ +
124 out.resize(size());
│ │ │ │ +
125
│ │ │ │ +
126 out[0][0][0] = sign_[0]*(-2*in[1] + 2*in[0]);
│ │ │ │ +
127 out[0][0][1] = sign_[0]*(-2*in[0]);
│ │ │ │ +
128
│ │ │ │ +
129 out[0][1][0] = sign_[0]*(-2*in[1]);
│ │ │ │ +
130 out[0][1][1] = sign_[0]*(6 -2*in[0] - 10*in[1]);
│ │ │ │ +
131
│ │ │ │ +
132
│ │ │ │ +
133 out[1][0][0] = 1.5 + 3*in[1] - 9*in[0];
│ │ │ │ +
134 out[1][0][1] = 3*in[0];
│ │ │ │ +
135
│ │ │ │ +
136 out[1][1][0] = 6 - 15*in[1];
│ │ │ │ +
137 out[1][1][1] = 10.5 - 15*in[0] - 15*in[1];
│ │ │ │ +
138
│ │ │ │ +
139
│ │ │ │ +
140 out[2][0][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]);
│ │ │ │ +
141 out[2][0][1] = sign_[0]*(5*in[0]);
│ │ │ │ +
142
│ │ │ │ +
143 out[2][1][0] = sign_[0]*(30 - 25*in[1] - 60*in[0]);
│ │ │ │ +
144 out[2][1][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]);
│ │ │ │ +
145
│ │ │ │ +
146
│ │ │ │ +
147
│ │ │ │ +
148 out[3][0][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]);
│ │ │ │ +
149 out[3][0][1] = sign_[1]*(-2*in[0]);
│ │ │ │ +
150
│ │ │ │ +
151 out[3][1][0] = sign_[1]*(-2*in[1]);
│ │ │ │ +
152 out[3][1][1] = sign_[1]*(-2*in[0] + 2*in[1]);
│ │ │ │ +
153
│ │ │ │ +
154
│ │ │ │ +
155 out[4][0][0] = -10.5 + 15*in[1] + 15*in[0];
│ │ │ │ +
156 out[4][0][1] = -6 + 15*in[0];
│ │ │ │
157
│ │ │ │ -
158 out[1][0] = 6.0*in[1] - 3.0;
│ │ │ │ -
159 out[1][1] = 0.0;
│ │ │ │ +
158 out[4][1][0] = -3*in[1];
│ │ │ │ +
159 out[4][1][1] = -1.5 - 3*in[0] + 9*in[1];
│ │ │ │
160
│ │ │ │ -
161 out[2][0] = sign_[1];
│ │ │ │ -
162 out[2][1] = 0.0;
│ │ │ │ -
163
│ │ │ │ -
164 out[3][0] = -6.0*in[1] + 3.0;
│ │ │ │ -
165 out[3][1] = 0.0;
│ │ │ │ -
166
│ │ │ │ -
167 out[4][0] = 0.0;
│ │ │ │ -
168 out[4][1] = 0.0;
│ │ │ │ +
161
│ │ │ │ +
162 out[5][0][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]);
│ │ │ │ +
163 out[5][0][1] = sign_[1]*(30 - 25*in[0] - 60*in[1]);
│ │ │ │ +
164
│ │ │ │ +
165 out[5][1][0] = sign_[1]*(5*in[1]);
│ │ │ │ +
166 out[5][1][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]);
│ │ │ │ +
167
│ │ │ │ +
168
│ │ │ │
169
│ │ │ │ -
170 out[5][0] = 6.0*in[0] - 3.0;
│ │ │ │ -
171 out[5][1] = -6.0*in[1] + 6.0;
│ │ │ │ +
170 out[6][0][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]);
│ │ │ │ +
171 out[6][0][1] = sign_[2]*(4*in[0]);
│ │ │ │
172
│ │ │ │ -
173 out[6][0] = 0.0;
│ │ │ │ -
174 out[6][1] = 0.0;
│ │ │ │ +
173 out[6][1][0] = sign_[2]*(4*in[1]);
│ │ │ │ +
174 out[6][1][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]);
│ │ │ │
175
│ │ │ │ -
176 out[7][0] = -6.0*in[0] + 3.0;
│ │ │ │ -
177 out[7][1] = 6.0*in[1];
│ │ │ │ -
178 break;
│ │ │ │ -
179 case 1:
│ │ │ │ -
180 out[0][0] = 0.0;
│ │ │ │ -
181 out[0][1] = 0.0;
│ │ │ │ +
176
│ │ │ │ +
177 out[7][0][0] = -3 + 12*in[0];
│ │ │ │ +
178 out[7][0][1] = 0;
│ │ │ │ +
179
│ │ │ │ +
180 out[7][1][0] = 0;
│ │ │ │ +
181 out[7][1][1] = 3 - 12*in[1];
│ │ │ │
182
│ │ │ │ -
183 out[1][0] = 6.0*in[0] - 6.0;
│ │ │ │ -
184 out[1][1] = -6.0*in[1] + 3.0;
│ │ │ │ -
185
│ │ │ │ -
186 out[2][0] = 0.0;
│ │ │ │ -
187 out[2][1] = 0.0;
│ │ │ │ -
188
│ │ │ │ -
189 out[3][0] = -6.0*in[0];
│ │ │ │ -
190 out[3][1] = 6.0*in[1] - 3.0;
│ │ │ │ -
191
│ │ │ │ -
192 out[4][0] = 0.0;
│ │ │ │ -
193 out[4][1] = sign_[2];
│ │ │ │ -
194
│ │ │ │ -
195 out[5][0] = 0.0;
│ │ │ │ -
196 out[5][1] = -6.0*in[0] + 3.0;
│ │ │ │ -
197
│ │ │ │ -
198 out[6][0] = 0.0;
│ │ │ │ -
199 out[6][1] = sign_[3];
│ │ │ │ -
200
│ │ │ │ -
201 out[7][0] = 0.0;
│ │ │ │ -
202 out[7][1] = 6.0*in[0] - 3.0;
│ │ │ │ -
203 break;
│ │ │ │ -
204 default:
│ │ │ │ -
205 DUNE_THROW(RangeError, "Component out of range.");
│ │ │ │ -
206 }
│ │ │ │ -
207 } else {
│ │ │ │ -
208 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
│ │ │ │ -
209 }
│ │ │ │ -
210 }
│ │ │ │ -
│ │ │ │ -
211
│ │ │ │ -
│ │ │ │ -
213 unsigned int order () const
│ │ │ │ -
214 {
│ │ │ │ -
215 return 2;
│ │ │ │ -
216 }
│ │ │ │ -
│ │ │ │ -
217
│ │ │ │ -
218 private:
│ │ │ │ -
219 std::array<R,4> sign_;
│ │ │ │ -
220 };
│ │ │ │ +
183
│ │ │ │ +
184 out[8][0][0] = sign_[2]*(-10*in[1] + 10*in[0]);
│ │ │ │ +
185 out[8][0][1] = sign_[2]*(-10*in[0]);
│ │ │ │ +
186
│ │ │ │ +
187 out[8][1][0] = sign_[2]*(-10*in[1]);
│ │ │ │ +
188 out[8][1][1] = sign_[2]*(-10*in[0] + 10*in[1]);
│ │ │ │ +
189
│ │ │ │ +
190
│ │ │ │ +
191 out[9][0][0] = 18 - 12*in[1] - 36*in[0];
│ │ │ │ +
192 out[9][0][1] = -12*in[0];
│ │ │ │ +
193
│ │ │ │ +
194 out[9][1][0] = -12*in[1];
│ │ │ │ +
195 out[9][1][1] = 6 - 12*in[0] - 12*in[1];
│ │ │ │ +
196
│ │ │ │ +
197 out[10][0][0] = 6 - 12*in[1] - 12*in[0];
│ │ │ │ +
198 out[10][0][1] = -12*in[0];
│ │ │ │ +
199
│ │ │ │ +
200 out[10][1][0] = -12*in[1];
│ │ │ │ +
201 out[10][1][1] = 18 - 12*in[0] - 36*in[1];
│ │ │ │ +
202
│ │ │ │ +
203 out[11][0][0] = 90 - 180*in[1] - 180*in[0];
│ │ │ │ +
204 out[11][0][1] = -180*in[0];
│ │ │ │ +
205
│ │ │ │ +
206 out[11][1][0] = 180*in[1];
│ │ │ │ +
207 out[11][1][1] = -90 + 180*in[0] + 180*in[1];
│ │ │ │ +
208 }
│ │ │ │ +
│ │ │ │ +
209
│ │ │ │ +
│ │ │ │ +
211 void partial (const std::array<unsigned int, 2>& order,
│ │ │ │ +
212 const typename Traits::DomainType& in, // position
│ │ │ │ +
213 std::vector<typename Traits::RangeType>& out) const // return value
│ │ │ │ +
214 {
│ │ │ │ +
215 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
│ │ │ │ +
216 if (totalOrder == 0) {
│ │ │ │ +
217 evaluateFunction(in, out);
│ │ │ │ +
218 } else if (totalOrder == 1) {
│ │ │ │ +
219 out.resize(size());
│ │ │ │ +
220 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
│ │ │ │ +
221
│ │ │ │ +
222 switch (direction) {
│ │ │ │ +
223 case 0:
│ │ │ │ +
224 out[0][0] = sign_[0]*(-2*in[1] + 2*in[0]);
│ │ │ │ +
225 out[0][1] = sign_[0]*(-2*in[1]);
│ │ │ │ +
226
│ │ │ │ +
227 out[1][0] = 1.5 + 3*in[1] - 9*in[0];
│ │ │ │ +
228 out[1][1] = 6 - 15*in[1];
│ │ │ │ +
229
│ │ │ │ +
230 out[2][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]);
│ │ │ │ +
231 out[2][1] = sign_[0]*(30 - 25*in[1] - 60*in[0]);
│ │ │ │ +
232
│ │ │ │ +
233 out[3][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]);
│ │ │ │ +
234 out[3][1] = sign_[1]*(-2*in[1]);
│ │ │ │ +
235
│ │ │ │ +
236 out[4][0] = -10.5 + 15*in[1] + 15*in[0];
│ │ │ │ +
237 out[4][1] = -3*in[1];
│ │ │ │ +
238
│ │ │ │ +
239 out[5][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]);
│ │ │ │ +
240 out[5][1] = sign_[1]*(5*in[1]);
│ │ │ │ +
241
│ │ │ │ +
242 out[6][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]);
│ │ │ │ +
243 out[6][1] = sign_[2]*(4*in[1]);
│ │ │ │ +
244
│ │ │ │ +
245 out[7][0] = -3 + 12*in[0];
│ │ │ │ +
246 out[7][1] = 0;
│ │ │ │ +
247
│ │ │ │ +
248 out[8][0] = sign_[2]*(-10*in[1] + 10*in[0]);
│ │ │ │ +
249 out[8][1] = sign_[2]*(-10*in[1]);
│ │ │ │ +
250
│ │ │ │ +
251 out[9][0] = 18 - 12*in[1] - 36*in[0];
│ │ │ │ +
252 out[9][1] = -12*in[1];
│ │ │ │ +
253
│ │ │ │ +
254 out[10][0] = 6 - 12*in[1] - 12*in[0];
│ │ │ │ +
255 out[10][1] = -12*in[1];
│ │ │ │ +
256
│ │ │ │ +
257 out[11][0] = 90 - 180*in[1] - 180*in[0];
│ │ │ │ +
258 out[11][1] = 180*in[1];
│ │ │ │ +
259 break;
│ │ │ │ +
260 case 1:
│ │ │ │ +
261 out[0][0] = sign_[0]*(-2*in[0]);
│ │ │ │ +
262 out[0][1] = sign_[0]*(6 -2*in[0] - 10*in[1]);
│ │ │ │ +
263
│ │ │ │ +
264 out[1][0] = 3*in[0];
│ │ │ │ +
265 out[1][1] = 10.5 - 15*in[0] - 15*in[1];
│ │ │ │ +
266
│ │ │ │ +
267 out[2][0] = sign_[0]*(5*in[0]);
│ │ │ │ +
268 out[2][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]);
│ │ │ │ +
269
│ │ │ │ +
270 out[3][0] = sign_[1]*(-2*in[0]);
│ │ │ │ +
271 out[3][1] = sign_[1]*(-2*in[0] + 2*in[1]);
│ │ │ │ +
272
│ │ │ │ +
273 out[4][0] = -6 + 15*in[0];
│ │ │ │ +
274 out[4][1] = -1.5 - 3*in[0] + 9*in[1];
│ │ │ │ +
275
│ │ │ │ +
276 out[5][0] = sign_[1]*(30 - 25*in[0] - 60*in[1]);
│ │ │ │ +
277 out[5][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]);
│ │ │ │ +
278
│ │ │ │ +
279 out[6][0] = sign_[2]*(4*in[0]);
│ │ │ │ +
280 out[6][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]);
│ │ │ │ +
281
│ │ │ │ +
282 out[7][0] = 0;
│ │ │ │ +
283 out[7][1] = 3 - 12*in[1];
│ │ │ │ +
284
│ │ │ │ +
285 out[8][0] = sign_[2]*(-10*in[0]);
│ │ │ │ +
286 out[8][1] = sign_[2]*(-10*in[0] + 10*in[1]);
│ │ │ │ +
287
│ │ │ │ +
288 out[9][0] = -12*in[0];
│ │ │ │ +
289 out[9][1] = 6 - 12*in[0] - 12*in[1];
│ │ │ │ +
290
│ │ │ │ +
291 out[10][0] = -12*in[0];
│ │ │ │ +
292 out[10][1] = 18 - 12*in[0] - 36*in[1];
│ │ │ │ +
293
│ │ │ │ +
294 out[11][0] = -180*in[0];
│ │ │ │ +
295 out[11][1] = -90 + 180*in[0] + 180*in[1];
│ │ │ │ +
296 break;
│ │ │ │ +
297 default:
│ │ │ │ +
298 DUNE_THROW(RangeError, "Component out of range.");
│ │ │ │ +
299 }
│ │ │ │ +
300 } else {
│ │ │ │ +
301 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
│ │ │ │ +
302 }
│ │ │ │ +
303 }
│ │ │ │ +
│ │ │ │ +
304
│ │ │ │ +
│ │ │ │ +
306 unsigned int order() const
│ │ │ │ +
307 {
│ │ │ │ +
308 return 2; // TODO: check whether this is not order 3
│ │ │ │ +
309 }
│ │ │ │ +
│ │ │ │ +
310
│ │ │ │ +
311 private:
│ │ │ │ +
312 std::array<R,3> sign_;
│ │ │ │ +
313 };
│ │ │ │
│ │ │ │ -
221}
│ │ │ │ -
222#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
│ │ │ │ +
314} // end namespace Dune
│ │ │ │ +
315#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:30
│ │ │ │ -
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:95
│ │ │ │ -
void partial(const std::array< unsigned int, 2 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of all shape functions.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:142
│ │ │ │ -
BDM1Cube2DLocalBasis()
Standard constructor.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:37
│ │ │ │ -
LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
Definition brezzidouglasmarini1cube2dlocalbasis.hh:34
│ │ │ │ -
unsigned int size() const
number of shape functions
Definition brezzidouglasmarini1cube2dlocalbasis.hh:55
│ │ │ │ -
BDM1Cube2DLocalBasis(std::bitset< 4 > s)
Make set number s, where 0 <= s < 16.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:48
│ │ │ │ -
unsigned int order() const
Polynomial order of the shape functions.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:213
│ │ │ │ -
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:66
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:30
│ │ │ │ +
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:121
│ │ │ │ +
BDM2Simplex2DLocalBasis(std::bitset< 3 > s)
Make set number s, where 0 <= s < 8.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:49
│ │ │ │ +
void partial(const std::array< unsigned int, 2 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of all shape functions.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:211
│ │ │ │ +
unsigned int size() const
number of shape functions
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:56
│ │ │ │ +
LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:35
│ │ │ │ +
BDM2Simplex2DLocalBasis()
Standard constructor.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:38
│ │ │ │ +
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:67
│ │ │ │ +
unsigned int order() const
Polynomial order of the shape functions.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:306
│ │ │ │
Type traits for LocalBasisVirtualInterface.
Definition common/localbasis.hh:35
│ │ │ │
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,253 +1,346 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d │ │ │ │ │ -brezzidouglasmarini1cube2dlocalbasis.hh │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d │ │ │ │ │ +brezzidouglasmarini2simplex2dlocalbasis.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH │ │ │ │ │ 7 │ │ │ │ │ 8#include │ │ │ │ │ 9#include │ │ │ │ │ 10#include │ │ │ │ │ 11#include │ │ │ │ │ 12 │ │ │ │ │ 13#include │ │ │ │ │ 14 │ │ │ │ │ 15#include "../../common/localbasis.hh" │ │ │ │ │ 16 │ │ │ │ │ 17namespace _D_u_n_e │ │ │ │ │ 18{ │ │ │ │ │ 28 template │ │ │ │ │ -_2_9 class _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +_2_9 class _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ 30 { │ │ │ │ │ 31 │ │ │ │ │ 32 public: │ │ │ │ │ -33 typedef _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_<_D_,_2_,_D_u_n_e_:_:_F_i_e_l_d_V_e_c_t_o_r_<_D_,_2_>,R,2,Dune:: │ │ │ │ │ -FieldVector, │ │ │ │ │ -_3_4 Dune::FieldMatrix > _T_r_a_i_t_s; │ │ │ │ │ -35 │ │ │ │ │ -_3_7 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s () │ │ │ │ │ -38 { │ │ │ │ │ -39 for (size_t i=0; i<4; i++) │ │ │ │ │ -40 sign_[i] = 1.0; │ │ │ │ │ -41 } │ │ │ │ │ -42 │ │ │ │ │ -_4_8 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s (std::bitset<4> s) │ │ │ │ │ -49 { │ │ │ │ │ -50 for (size_t i=0; i<4; i++) │ │ │ │ │ -51 sign_[i] = s[i] ? -1.0 : 1.0; │ │ │ │ │ -52 } │ │ │ │ │ -53 │ │ │ │ │ -_5_5 unsigned int _s_i_z_e () const │ │ │ │ │ -56 { │ │ │ │ │ -57 return 8; │ │ │ │ │ -58 } │ │ │ │ │ -59 │ │ │ │ │ -_6_6 inline void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n (const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ -67 std::vector& out) const │ │ │ │ │ -68 { │ │ │ │ │ -69 out.resize(8); │ │ │ │ │ -70 │ │ │ │ │ -71 out[0][0] = sign_[0]*(in[0] - 1.0); │ │ │ │ │ -72 out[0][1] = 0.0; │ │ │ │ │ -73 out[1][0] = 6.0*in[0]*in[1] - 3.0*in[0]-6*in[1] + 3.0; │ │ │ │ │ -74 out[1][1] = -3.0*in[1]*in[1] + 3.0*in[1]; │ │ │ │ │ -75 out[2][0] = sign_[1]*(in[0]); │ │ │ │ │ -76 out[2][1] = 0.0; │ │ │ │ │ -77 out[3][0] = -6.0*in[0]*in[1] + 3.0*in[0]; │ │ │ │ │ -78 out[3][1] = 3.0*in[1]*in[1] - 3.0*in[1]; │ │ │ │ │ -79 out[4][0] = 0.0; │ │ │ │ │ -80 out[4][1] = sign_[2]*(in[1] - 1.0); │ │ │ │ │ -81 out[5][0] = 3.0*in[0]*in[0] - 3.0*in[0]; │ │ │ │ │ -82 out[5][1] = -6.0*in[0]*in[1] + 6.0*in[0] + 3.0*in[1] - 3.0; │ │ │ │ │ -83 out[6][0] = 0.0; │ │ │ │ │ -84 out[6][1] = sign_[3]*(in[1]); │ │ │ │ │ -85 out[7][0] = -3.0*in[0]*in[0] + 3.0*in[0]; │ │ │ │ │ -86 out[7][1] = 6.0*in[0]*in[1] - 3.0*in[1]; │ │ │ │ │ -87 } │ │ │ │ │ +33 typedef _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_<_D_,_2_,_D_u_n_e_:_:_F_i_e_l_d_V_e_c_t_o_r_<_D_,_2_>, │ │ │ │ │ +34 R,2,Dune::FieldVector, │ │ │ │ │ +_3_5 Dune::FieldMatrix > _T_r_a_i_t_s; │ │ │ │ │ +36 │ │ │ │ │ +_3_8 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s() │ │ │ │ │ +39 { │ │ │ │ │ +40 for (size_t i=0; i<3; i++) │ │ │ │ │ +41 sign_[i] = 1.0; │ │ │ │ │ +42 } │ │ │ │ │ +43 │ │ │ │ │ +_4_9 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s(std::bitset<3> s) │ │ │ │ │ +50 { │ │ │ │ │ +51 for (size_t i=0; i<3; i++) │ │ │ │ │ +52 sign_[i] = s[i] ? -1.0 : 1.0; │ │ │ │ │ +53 } │ │ │ │ │ +54 │ │ │ │ │ +_5_6 unsigned int _s_i_z_e() const │ │ │ │ │ +57 { │ │ │ │ │ +58 return 12; │ │ │ │ │ +59 } │ │ │ │ │ +60 │ │ │ │ │ +_6_7 inline void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ +68 std::vector& out) const │ │ │ │ │ +69 { │ │ │ │ │ +70 out.resize(_s_i_z_e()); │ │ │ │ │ +71 │ │ │ │ │ +72 out[0][0] = sign_[0]*(-2*in[0]*in[1] + in[0]*in[0]); │ │ │ │ │ +73 out[0][1] = sign_[0]*(-1 + 6*in[1] -2*in[0]*in[1] - 5*in[1]*in[1]); │ │ │ │ │ +74 │ │ │ │ │ +75 out[1][0] = 1.5*in[0] + 3*in[0]*in[1] - 4.5*in[0]*in[0]; │ │ │ │ │ +76 out[1][1] = -3 + 6*in[0] + 10.5*in[1] - 15*in[0]*in[1] - 7.5*in[1]*in[1]; │ │ │ │ │ +77 │ │ │ │ │ +78 out[2][0] = sign_[0]*(-7.5*in[0] + 5*in[0]*in[1] + 12.5*in[0]*in[0]); │ │ │ │ │ +79 out[2][1] = sign_[0]*(-5 + 30*in[0] + 7.5*in[1] - 25*in[0]*in[1] - 30*in │ │ │ │ │ +[0]*in[0] - 2.5*in[1]*in[1]); │ │ │ │ │ +80 │ │ │ │ │ +81 │ │ │ │ │ +82 │ │ │ │ │ +83 out[3][0] = sign_[1]*(-1 + 6*in[0] - 2*in[0]*in[1] - 5*in[0]*in[0]); │ │ │ │ │ +84 out[3][1] = sign_[1]*(-2*in[0]*in[1] + in[1]*in[1]); │ │ │ │ │ +85 │ │ │ │ │ +86 out[4][0] = 3 - 10.5*in[0] - 6*in[1] + 15*in[0]*in[1] + 7.5*in[0]*in[0]; │ │ │ │ │ +87 out[4][1] = -1.5*in[1] - 3*in[0]*in[1] + 4.5*in[1]*in[1]; │ │ │ │ │ 88 │ │ │ │ │ -_9_5 inline void _e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n (const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ -96 std::vector& out) const │ │ │ │ │ -97 { │ │ │ │ │ -98 out.resize(8); │ │ │ │ │ +89 out[5][0] = sign_[1]*(-5 + 7.5*in[0] + 30*in[1] - 25*in[0]*in[1] - 2.5*in │ │ │ │ │ +[0]*in[0] - 30*in[1]*in[1]); │ │ │ │ │ +90 out[5][1] = sign_[1]*(-7.5*in[1] + 5*in[0]*in[1] + 12.5*in[1]*in[1]); │ │ │ │ │ +91 │ │ │ │ │ +92 │ │ │ │ │ +93 │ │ │ │ │ +94 out[6][0] = sign_[2]*(-3*in[0] + 4*in[0]*in[1] + 4*in[0]*in[0]); │ │ │ │ │ +95 out[6][1] = sign_[2]*(-3*in[1] + 4*in[0]*in[1] + 4*in[1]*in[1]); │ │ │ │ │ +96 │ │ │ │ │ +97 out[7][0] = -3*in[0] + 6*in[0]*in[0]; │ │ │ │ │ +98 out[7][1] = 3*in[1] - 6*in[1]*in[1]; │ │ │ │ │ 99 │ │ │ │ │ -100 out[0][0][0] = sign_[0]; │ │ │ │ │ -101 out[0][0][1] = 0.0; │ │ │ │ │ -102 out[0][1][0] = 0.0; │ │ │ │ │ -103 out[0][1][1] = 0.0; │ │ │ │ │ +100 out[8][0] = sign_[2]*(-10*in[0]*in[1] + 5*in[0]*in[0]); │ │ │ │ │ +101 out[8][1] = sign_[2]*(-10*in[0]*in[1] + 5*in[1]*in[1]); │ │ │ │ │ +102 │ │ │ │ │ +103 │ │ │ │ │ 104 │ │ │ │ │ -105 out[1][0][0] = 6.0*in[1] - 3.0; │ │ │ │ │ -106 out[1][0][1] = 6.0*in[0] - 6.0; │ │ │ │ │ -107 out[1][1][0] = 0.0; │ │ │ │ │ -108 out[1][1][1] = -6.0*in[1] + 3.0; │ │ │ │ │ -109 │ │ │ │ │ -110 out[2][0][0] = sign_[1]; │ │ │ │ │ -111 out[2][0][1] = 0.0; │ │ │ │ │ -112 out[2][1][0] = 0.0; │ │ │ │ │ -113 out[2][1][1] = 0.0; │ │ │ │ │ +105 out[9][0] = 18*in[0] - 12*in[0]*in[1] - 18*in[0]*in[0]; │ │ │ │ │ +106 out[9][1] = 6*in[1] - 12*in[0]*in[1] - 6*in[1]*in[1]; │ │ │ │ │ +107 │ │ │ │ │ +108 out[10][0] = 6*in[0] - 12*in[0]*in[1] - 6*in[0]*in[0]; │ │ │ │ │ +109 out[10][1] = 18*in[1] - 12*in[0]*in[1] - 18*in[1]*in[1]; │ │ │ │ │ +110 │ │ │ │ │ +111 out[11][0] = 90*in[0] - 180*in[0]*in[1] - 90*in[0]*in[0]; │ │ │ │ │ +112 out[11][1] = -90*in[1] + 180*in[0]*in[1] + 90*in[1]*in[1]; │ │ │ │ │ +113 } │ │ │ │ │ 114 │ │ │ │ │ -115 out[3][0][0] = -6.0*in[1] + 3.0; │ │ │ │ │ -116 out[3][0][1] = -6.0*in[0]; │ │ │ │ │ -117 out[3][1][0] = 0.0; │ │ │ │ │ -118 out[3][1][1] = 6.0*in[1] - 3.0; │ │ │ │ │ -119 │ │ │ │ │ -120 out[4][0][0] = 0.0; │ │ │ │ │ -121 out[4][0][1] = 0.0; │ │ │ │ │ -122 out[4][1][0] = 0.0; │ │ │ │ │ -123 out[4][1][1] = sign_[2]; │ │ │ │ │ -124 │ │ │ │ │ -125 out[5][0][0] = 6.0*in[0] - 3.0; │ │ │ │ │ -126 out[5][0][1] = 0.0; │ │ │ │ │ -127 out[5][1][0] = -6.0*in[1] + 6.0; │ │ │ │ │ -128 out[5][1][1] = -6.0*in[0] + 3.0; │ │ │ │ │ -129 │ │ │ │ │ -130 out[6][0][0] = 0.0; │ │ │ │ │ -131 out[6][0][1] = 0.0; │ │ │ │ │ -132 out[6][1][0] = 0.0; │ │ │ │ │ -133 out[6][1][1] = sign_[3]; │ │ │ │ │ -134 │ │ │ │ │ -135 out[7][0][0] = -6.0*in[0] + 3.0; │ │ │ │ │ -136 out[7][0][1] = 0.0; │ │ │ │ │ -137 out[7][1][0] = 6.0*in[1]; │ │ │ │ │ -138 out[7][1][1] = 6.0*in[0] - 3.0; │ │ │ │ │ -139 } │ │ │ │ │ -140 │ │ │ │ │ -_1_4_2 void _p_a_r_t_i_a_l (const std::array& _o_r_d_e_r, │ │ │ │ │ -143 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, // position │ │ │ │ │ -144 std::vector& out) const // return value │ │ │ │ │ -145 { │ │ │ │ │ -146 auto totalOrder = std::accumulate(_o_r_d_e_r.begin(), _o_r_d_e_r.end(), 0); │ │ │ │ │ -147 if (totalOrder == 0) { │ │ │ │ │ -148 _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(in, out); │ │ │ │ │ -149 } else if (totalOrder == 1) { │ │ │ │ │ -150 out.resize(_s_i_z_e()); │ │ │ │ │ -151 auto const direction = std::distance(_o_r_d_e_r.begin(), std::find(_o_r_d_e_r.begin │ │ │ │ │ -(), _o_r_d_e_r.end(), 1)); │ │ │ │ │ -152 │ │ │ │ │ -153 switch (direction) { │ │ │ │ │ -154 case 0: │ │ │ │ │ -155 out[0][0] = sign_[0]; │ │ │ │ │ -156 out[0][1] = 0.0; │ │ │ │ │ +_1_2_1 inline void _e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n(const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ +122 std::vector& out) const │ │ │ │ │ +123 { │ │ │ │ │ +124 out.resize(_s_i_z_e()); │ │ │ │ │ +125 │ │ │ │ │ +126 out[0][0][0] = sign_[0]*(-2*in[1] + 2*in[0]); │ │ │ │ │ +127 out[0][0][1] = sign_[0]*(-2*in[0]); │ │ │ │ │ +128 │ │ │ │ │ +129 out[0][1][0] = sign_[0]*(-2*in[1]); │ │ │ │ │ +130 out[0][1][1] = sign_[0]*(6 -2*in[0] - 10*in[1]); │ │ │ │ │ +131 │ │ │ │ │ +132 │ │ │ │ │ +133 out[1][0][0] = 1.5 + 3*in[1] - 9*in[0]; │ │ │ │ │ +134 out[1][0][1] = 3*in[0]; │ │ │ │ │ +135 │ │ │ │ │ +136 out[1][1][0] = 6 - 15*in[1]; │ │ │ │ │ +137 out[1][1][1] = 10.5 - 15*in[0] - 15*in[1]; │ │ │ │ │ +138 │ │ │ │ │ +139 │ │ │ │ │ +140 out[2][0][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]); │ │ │ │ │ +141 out[2][0][1] = sign_[0]*(5*in[0]); │ │ │ │ │ +142 │ │ │ │ │ +143 out[2][1][0] = sign_[0]*(30 - 25*in[1] - 60*in[0]); │ │ │ │ │ +144 out[2][1][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]); │ │ │ │ │ +145 │ │ │ │ │ +146 │ │ │ │ │ +147 │ │ │ │ │ +148 out[3][0][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]); │ │ │ │ │ +149 out[3][0][1] = sign_[1]*(-2*in[0]); │ │ │ │ │ +150 │ │ │ │ │ +151 out[3][1][0] = sign_[1]*(-2*in[1]); │ │ │ │ │ +152 out[3][1][1] = sign_[1]*(-2*in[0] + 2*in[1]); │ │ │ │ │ +153 │ │ │ │ │ +154 │ │ │ │ │ +155 out[4][0][0] = -10.5 + 15*in[1] + 15*in[0]; │ │ │ │ │ +156 out[4][0][1] = -6 + 15*in[0]; │ │ │ │ │ 157 │ │ │ │ │ -158 out[1][0] = 6.0*in[1] - 3.0; │ │ │ │ │ -159 out[1][1] = 0.0; │ │ │ │ │ +158 out[4][1][0] = -3*in[1]; │ │ │ │ │ +159 out[4][1][1] = -1.5 - 3*in[0] + 9*in[1]; │ │ │ │ │ 160 │ │ │ │ │ -161 out[2][0] = sign_[1]; │ │ │ │ │ -162 out[2][1] = 0.0; │ │ │ │ │ -163 │ │ │ │ │ -164 out[3][0] = -6.0*in[1] + 3.0; │ │ │ │ │ -165 out[3][1] = 0.0; │ │ │ │ │ -166 │ │ │ │ │ -167 out[4][0] = 0.0; │ │ │ │ │ -168 out[4][1] = 0.0; │ │ │ │ │ +161 │ │ │ │ │ +162 out[5][0][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]); │ │ │ │ │ +163 out[5][0][1] = sign_[1]*(30 - 25*in[0] - 60*in[1]); │ │ │ │ │ +164 │ │ │ │ │ +165 out[5][1][0] = sign_[1]*(5*in[1]); │ │ │ │ │ +166 out[5][1][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]); │ │ │ │ │ +167 │ │ │ │ │ +168 │ │ │ │ │ 169 │ │ │ │ │ -170 out[5][0] = 6.0*in[0] - 3.0; │ │ │ │ │ -171 out[5][1] = -6.0*in[1] + 6.0; │ │ │ │ │ +170 out[6][0][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]); │ │ │ │ │ +171 out[6][0][1] = sign_[2]*(4*in[0]); │ │ │ │ │ 172 │ │ │ │ │ -173 out[6][0] = 0.0; │ │ │ │ │ -174 out[6][1] = 0.0; │ │ │ │ │ +173 out[6][1][0] = sign_[2]*(4*in[1]); │ │ │ │ │ +174 out[6][1][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]); │ │ │ │ │ 175 │ │ │ │ │ -176 out[7][0] = -6.0*in[0] + 3.0; │ │ │ │ │ -177 out[7][1] = 6.0*in[1]; │ │ │ │ │ -178 break; │ │ │ │ │ -179 case 1: │ │ │ │ │ -180 out[0][0] = 0.0; │ │ │ │ │ -181 out[0][1] = 0.0; │ │ │ │ │ +176 │ │ │ │ │ +177 out[7][0][0] = -3 + 12*in[0]; │ │ │ │ │ +178 out[7][0][1] = 0; │ │ │ │ │ +179 │ │ │ │ │ +180 out[7][1][0] = 0; │ │ │ │ │ +181 out[7][1][1] = 3 - 12*in[1]; │ │ │ │ │ 182 │ │ │ │ │ -183 out[1][0] = 6.0*in[0] - 6.0; │ │ │ │ │ -184 out[1][1] = -6.0*in[1] + 3.0; │ │ │ │ │ -185 │ │ │ │ │ -186 out[2][0] = 0.0; │ │ │ │ │ -187 out[2][1] = 0.0; │ │ │ │ │ -188 │ │ │ │ │ -189 out[3][0] = -6.0*in[0]; │ │ │ │ │ -190 out[3][1] = 6.0*in[1] - 3.0; │ │ │ │ │ -191 │ │ │ │ │ -192 out[4][0] = 0.0; │ │ │ │ │ -193 out[4][1] = sign_[2]; │ │ │ │ │ -194 │ │ │ │ │ -195 out[5][0] = 0.0; │ │ │ │ │ -196 out[5][1] = -6.0*in[0] + 3.0; │ │ │ │ │ -197 │ │ │ │ │ -198 out[6][0] = 0.0; │ │ │ │ │ -199 out[6][1] = sign_[3]; │ │ │ │ │ -200 │ │ │ │ │ -201 out[7][0] = 0.0; │ │ │ │ │ -202 out[7][1] = 6.0*in[0] - 3.0; │ │ │ │ │ -203 break; │ │ │ │ │ -204 default: │ │ │ │ │ -205 DUNE_THROW(RangeError, "Component out of range."); │ │ │ │ │ -206 } │ │ │ │ │ -207 } else { │ │ │ │ │ -208 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented"); │ │ │ │ │ -209 } │ │ │ │ │ -210 } │ │ │ │ │ -211 │ │ │ │ │ -_2_1_3 unsigned int _o_r_d_e_r () const │ │ │ │ │ +183 │ │ │ │ │ +184 out[8][0][0] = sign_[2]*(-10*in[1] + 10*in[0]); │ │ │ │ │ +185 out[8][0][1] = sign_[2]*(-10*in[0]); │ │ │ │ │ +186 │ │ │ │ │ +187 out[8][1][0] = sign_[2]*(-10*in[1]); │ │ │ │ │ +188 out[8][1][1] = sign_[2]*(-10*in[0] + 10*in[1]); │ │ │ │ │ +189 │ │ │ │ │ +190 │ │ │ │ │ +191 out[9][0][0] = 18 - 12*in[1] - 36*in[0]; │ │ │ │ │ +192 out[9][0][1] = -12*in[0]; │ │ │ │ │ +193 │ │ │ │ │ +194 out[9][1][0] = -12*in[1]; │ │ │ │ │ +195 out[9][1][1] = 6 - 12*in[0] - 12*in[1]; │ │ │ │ │ +196 │ │ │ │ │ +197 out[10][0][0] = 6 - 12*in[1] - 12*in[0]; │ │ │ │ │ +198 out[10][0][1] = -12*in[0]; │ │ │ │ │ +199 │ │ │ │ │ +200 out[10][1][0] = -12*in[1]; │ │ │ │ │ +201 out[10][1][1] = 18 - 12*in[0] - 36*in[1]; │ │ │ │ │ +202 │ │ │ │ │ +203 out[11][0][0] = 90 - 180*in[1] - 180*in[0]; │ │ │ │ │ +204 out[11][0][1] = -180*in[0]; │ │ │ │ │ +205 │ │ │ │ │ +206 out[11][1][0] = 180*in[1]; │ │ │ │ │ +207 out[11][1][1] = -90 + 180*in[0] + 180*in[1]; │ │ │ │ │ +208 } │ │ │ │ │ +209 │ │ │ │ │ +_2_1_1 void _p_a_r_t_i_a_l (const std::array& _o_r_d_e_r, │ │ │ │ │ +212 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, // position │ │ │ │ │ +213 std::vector& out) const // return value │ │ │ │ │ 214 { │ │ │ │ │ -215 return 2; │ │ │ │ │ -216 } │ │ │ │ │ -217 │ │ │ │ │ -218 private: │ │ │ │ │ -219 std::array sign_; │ │ │ │ │ -220 }; │ │ │ │ │ -221} │ │ │ │ │ -222#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH │ │ │ │ │ +215 auto totalOrder = std::accumulate(_o_r_d_e_r.begin(), _o_r_d_e_r.end(), 0); │ │ │ │ │ +216 if (totalOrder == 0) { │ │ │ │ │ +217 _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(in, out); │ │ │ │ │ +218 } else if (totalOrder == 1) { │ │ │ │ │ +219 out.resize(_s_i_z_e()); │ │ │ │ │ +220 auto const direction = std::distance(_o_r_d_e_r.begin(), std::find(_o_r_d_e_r.begin │ │ │ │ │ +(), _o_r_d_e_r.end(), 1)); │ │ │ │ │ +221 │ │ │ │ │ +222 switch (direction) { │ │ │ │ │ +223 case 0: │ │ │ │ │ +224 out[0][0] = sign_[0]*(-2*in[1] + 2*in[0]); │ │ │ │ │ +225 out[0][1] = sign_[0]*(-2*in[1]); │ │ │ │ │ +226 │ │ │ │ │ +227 out[1][0] = 1.5 + 3*in[1] - 9*in[0]; │ │ │ │ │ +228 out[1][1] = 6 - 15*in[1]; │ │ │ │ │ +229 │ │ │ │ │ +230 out[2][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]); │ │ │ │ │ +231 out[2][1] = sign_[0]*(30 - 25*in[1] - 60*in[0]); │ │ │ │ │ +232 │ │ │ │ │ +233 out[3][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]); │ │ │ │ │ +234 out[3][1] = sign_[1]*(-2*in[1]); │ │ │ │ │ +235 │ │ │ │ │ +236 out[4][0] = -10.5 + 15*in[1] + 15*in[0]; │ │ │ │ │ +237 out[4][1] = -3*in[1]; │ │ │ │ │ +238 │ │ │ │ │ +239 out[5][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]); │ │ │ │ │ +240 out[5][1] = sign_[1]*(5*in[1]); │ │ │ │ │ +241 │ │ │ │ │ +242 out[6][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]); │ │ │ │ │ +243 out[6][1] = sign_[2]*(4*in[1]); │ │ │ │ │ +244 │ │ │ │ │ +245 out[7][0] = -3 + 12*in[0]; │ │ │ │ │ +246 out[7][1] = 0; │ │ │ │ │ +247 │ │ │ │ │ +248 out[8][0] = sign_[2]*(-10*in[1] + 10*in[0]); │ │ │ │ │ +249 out[8][1] = sign_[2]*(-10*in[1]); │ │ │ │ │ +250 │ │ │ │ │ +251 out[9][0] = 18 - 12*in[1] - 36*in[0]; │ │ │ │ │ +252 out[9][1] = -12*in[1]; │ │ │ │ │ +253 │ │ │ │ │ +254 out[10][0] = 6 - 12*in[1] - 12*in[0]; │ │ │ │ │ +255 out[10][1] = -12*in[1]; │ │ │ │ │ +256 │ │ │ │ │ +257 out[11][0] = 90 - 180*in[1] - 180*in[0]; │ │ │ │ │ +258 out[11][1] = 180*in[1]; │ │ │ │ │ +259 break; │ │ │ │ │ +260 case 1: │ │ │ │ │ +261 out[0][0] = sign_[0]*(-2*in[0]); │ │ │ │ │ +262 out[0][1] = sign_[0]*(6 -2*in[0] - 10*in[1]); │ │ │ │ │ +263 │ │ │ │ │ +264 out[1][0] = 3*in[0]; │ │ │ │ │ +265 out[1][1] = 10.5 - 15*in[0] - 15*in[1]; │ │ │ │ │ +266 │ │ │ │ │ +267 out[2][0] = sign_[0]*(5*in[0]); │ │ │ │ │ +268 out[2][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]); │ │ │ │ │ +269 │ │ │ │ │ +270 out[3][0] = sign_[1]*(-2*in[0]); │ │ │ │ │ +271 out[3][1] = sign_[1]*(-2*in[0] + 2*in[1]); │ │ │ │ │ +272 │ │ │ │ │ +273 out[4][0] = -6 + 15*in[0]; │ │ │ │ │ +274 out[4][1] = -1.5 - 3*in[0] + 9*in[1]; │ │ │ │ │ +275 │ │ │ │ │ +276 out[5][0] = sign_[1]*(30 - 25*in[0] - 60*in[1]); │ │ │ │ │ +277 out[5][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]); │ │ │ │ │ +278 │ │ │ │ │ +279 out[6][0] = sign_[2]*(4*in[0]); │ │ │ │ │ +280 out[6][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]); │ │ │ │ │ +281 │ │ │ │ │ +282 out[7][0] = 0; │ │ │ │ │ +283 out[7][1] = 3 - 12*in[1]; │ │ │ │ │ +284 │ │ │ │ │ +285 out[8][0] = sign_[2]*(-10*in[0]); │ │ │ │ │ +286 out[8][1] = sign_[2]*(-10*in[0] + 10*in[1]); │ │ │ │ │ +287 │ │ │ │ │ +288 out[9][0] = -12*in[0]; │ │ │ │ │ +289 out[9][1] = 6 - 12*in[0] - 12*in[1]; │ │ │ │ │ +290 │ │ │ │ │ +291 out[10][0] = -12*in[0]; │ │ │ │ │ +292 out[10][1] = 18 - 12*in[0] - 36*in[1]; │ │ │ │ │ +293 │ │ │ │ │ +294 out[11][0] = -180*in[0]; │ │ │ │ │ +295 out[11][1] = -90 + 180*in[0] + 180*in[1]; │ │ │ │ │ +296 break; │ │ │ │ │ +297 default: │ │ │ │ │ +298 DUNE_THROW(RangeError, "Component out of range."); │ │ │ │ │ +299 } │ │ │ │ │ +300 } else { │ │ │ │ │ +301 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented"); │ │ │ │ │ +302 } │ │ │ │ │ +303 } │ │ │ │ │ +304 │ │ │ │ │ +_3_0_6 unsigned int _o_r_d_e_r() const │ │ │ │ │ +307 { │ │ │ │ │ +308 return 2; // TODO: check whether this is not order 3 │ │ │ │ │ +309 } │ │ │ │ │ +310 │ │ │ │ │ +311 private: │ │ │ │ │ +312 std::array sign_; │ │ │ │ │ +313 }; │ │ │ │ │ +314} // end namespace Dune │ │ │ │ │ +315#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ -quadrilateral. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:30 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:30 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n │ │ │ │ │ void evaluateJacobian(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ typename Traits::JacobianType > &out) const │ │ │ │ │ Evaluate Jacobian of all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:95 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_p_a_r_t_i_a_l │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:121 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +BDM2Simplex2DLocalBasis(std::bitset< 3 > s) │ │ │ │ │ +Make set number s, where 0 <= s < 8. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:49 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_p_a_r_t_i_a_l │ │ │ │ │ void partial(const std::array< unsigned int, 2 > &order, const typename │ │ │ │ │ Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const │ │ │ │ │ Evaluate partial derivatives of all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:142 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -BDM1Cube2DLocalBasis() │ │ │ │ │ -Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:37 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_T_r_a_i_t_s │ │ │ │ │ -LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, │ │ │ │ │ -2 >, Dune::FieldMatrix< R, 2, 2 > > Traits │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:34 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_s_i_z_e │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:211 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_s_i_z_e │ │ │ │ │ unsigned int size() const │ │ │ │ │ number of shape functions │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:55 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -BDM1Cube2DLocalBasis(std::bitset< 4 > s) │ │ │ │ │ -Make set number s, where 0 <= s < 16. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:48 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_o_r_d_e_r │ │ │ │ │ -unsigned int order() const │ │ │ │ │ -Polynomial order of the shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:213 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:56 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_T_r_a_i_t_s │ │ │ │ │ +LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, │ │ │ │ │ +2 >, Dune::FieldMatrix< R, 2, 2 > > Traits │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:35 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +BDM2Simplex2DLocalBasis() │ │ │ │ │ +Standard constructor. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:38 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n │ │ │ │ │ void evaluateFunction(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ typename Traits::RangeType > &out) const │ │ │ │ │ Evaluate all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:66 │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:67 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_o_r_d_e_r │ │ │ │ │ +unsigned int order() const │ │ │ │ │ +Polynomial order of the shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:306 │ │ │ │ │ _D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s │ │ │ │ │ Type traits for LocalBasisVirtualInterface. │ │ │ │ │ DDeeffiinniittiioonn common/localbasis.hh:35 │ │ │ │ │ _D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e │ │ │ │ │ D DomainType │ │ │ │ │ domain type │ │ │ │ │ DDeeffiinniittiioonn common/localbasis.hh:43 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00068.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,33 +65,34 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference
│ │ │ │ +
brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <vector>
│ │ │ │ -#include <dune/geometry/quadraturerules.hh>
│ │ │ │ +
#include <cstddef>
│ │ │ │ +#include <vector>
│ │ │ │ +#include "../../common/localkey.hh"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM1Cube2DLocalInterpolation< LB >
 First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral. More...
class  Dune::BDM2Simplex2DLocalCoefficients
 Layout map for Brezzi-Douglas-Marini-2 elements on triangles. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,23 +1,23 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference │ │ │ │ │ +brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ #include │ │ │ │ │ -#include │ │ │ │ │ +#include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_ _L_B_ _> │ │ │ │ │ -  First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ - quadrilateral. _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +  Layout map for Brezzi-Douglas-Marini-2 elements on triangles. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00068_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1cube2dlocalinterpolation.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini2simplex2dlocalcoefficients.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,139 +70,84 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarini1cube2dlocalinterpolation.hh
│ │ │ │ +
brezzidouglasmarini2simplex2dlocalcoefficients.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH
│ │ │ │
7
│ │ │ │ -
8#include <vector>
│ │ │ │ -
9
│ │ │ │ -
10#include <dune/geometry/quadraturerules.hh>
│ │ │ │ -
11
│ │ │ │ -
12namespace Dune
│ │ │ │ -
13{
│ │ │ │ -
14
│ │ │ │ -
23 template<class LB>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
25 {
│ │ │ │ -
26
│ │ │ │ -
27 public:
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
30 {
│ │ │ │ -
31 sign0 = sign1 = sign2 = sign3 = 1.0;
│ │ │ │ -
32 }
│ │ │ │ -
│ │ │ │ -
33
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
40 {
│ │ │ │ -
41 sign0 = sign1 = sign2 = sign3 = 1.0;
│ │ │ │ -
42 if (s & 1)
│ │ │ │ -
43 {
│ │ │ │ -
44 sign0 = -1.0;
│ │ │ │ -
45 }
│ │ │ │ -
46 if (s & 2)
│ │ │ │ -
47 {
│ │ │ │ -
48 sign1 = -1.0;
│ │ │ │ -
49 }
│ │ │ │ -
50 if (s & 4)
│ │ │ │ -
51 {
│ │ │ │ -
52 sign2 = -1.0;
│ │ │ │ -
53 }
│ │ │ │ -
54 if (s & 8)
│ │ │ │ -
55 {
│ │ │ │ -
56 sign3 = -1.0;
│ │ │ │ -
57 }
│ │ │ │ -
58
│ │ │ │ -
59 n0[0] = -1.0;
│ │ │ │ -
60 n0[1] = 0.0;
│ │ │ │ -
61 n1[0] = 1.0;
│ │ │ │ -
62 n1[1] = 0.0;
│ │ │ │ -
63 n2[0] = 0.0;
│ │ │ │ -
64 n2[1] = -1.0;
│ │ │ │ -
65 n3[0] = 0.0;
│ │ │ │ -
66 n3[1] = 1.0;
│ │ │ │ -
67 }
│ │ │ │ -
│ │ │ │ -
68
│ │ │ │ -
77 template<typename F, typename C>
│ │ │ │ -
│ │ │ │ -
78 void interpolate (const F& f, std::vector<C>& out) const
│ │ │ │ -
79 {
│ │ │ │ -
80 // f gives v*outer normal at a point on the edge!
│ │ │ │ -
81 typedef typename LB::Traits::RangeFieldType Scalar;
│ │ │ │ -
82 //typedef typename LB::Traits::DomainFieldType Vector;
│ │ │ │ -
83
│ │ │ │ -
84 out.resize(8);
│ │ │ │ -
85 fill(out.begin(), out.end(), 0.0);
│ │ │ │ -
86
│ │ │ │ -
87 const int qOrder = 4;
│ │ │ │ -
88 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
│ │ │ │ -
89
│ │ │ │ -
90 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
│ │ │ │ -
91 it != rule.end(); ++it)
│ │ │ │ -
92 {
│ │ │ │ -
93 Scalar qPos = it->position();
│ │ │ │ -
94 typename LB::Traits::DomainType localPos;
│ │ │ │ -
95
│ │ │ │ -
96 localPos[0] = 0.0;
│ │ │ │ -
97 localPos[1] = qPos;
│ │ │ │ -
98 auto y = f(localPos);
│ │ │ │ -
99 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
│ │ │ │ -
100 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
│ │ │ │ -
101
│ │ │ │ -
102 localPos[0] = 1.0;
│ │ │ │ -
103 localPos[1] = qPos;
│ │ │ │ -
104 y = f(localPos);
│ │ │ │ -
105 out[2] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;
│ │ │ │ -
106 out[3] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
│ │ │ │ -
107
│ │ │ │ -
108 localPos[0] = qPos;
│ │ │ │ -
109 localPos[1] = 0.0;
│ │ │ │ -
110 y = f(localPos);
│ │ │ │ -
111 out[4] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
│ │ │ │ -
112 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
│ │ │ │ -
113
│ │ │ │ -
114 localPos[0] = qPos;
│ │ │ │ -
115 localPos[1] = 1.0;
│ │ │ │ -
116 y = f(localPos);
│ │ │ │ -
117 out[6] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
│ │ │ │ -
118 out[7] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
│ │ │ │ -
119 }
│ │ │ │ -
120 }
│ │ │ │ -
│ │ │ │ -
121
│ │ │ │ -
122 private:
│ │ │ │ -
123 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
│ │ │ │ -
124 typename LB::Traits::DomainType n0, n1, n2, n3;
│ │ │ │ -
125 };
│ │ │ │ +
8#include <cstddef>
│ │ │ │ +
9#include <vector>
│ │ │ │ +
10
│ │ │ │ +
11#include "../../common/localkey.hh"
│ │ │ │ +
12
│ │ │ │ +
13namespace Dune
│ │ │ │ +
14{
│ │ │ │ +
15
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
24 {
│ │ │ │ +
25
│ │ │ │ +
26 public:
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
29 {
│ │ │ │ +
30 for (std::size_t i = 0; i < 3; ++i)
│ │ │ │ +
31 {
│ │ │ │ +
32 li[3 * i] = LocalKey(i,1,0);
│ │ │ │ +
33 li[3 * i + 1] = LocalKey(i,1,1);
│ │ │ │ +
34 li[3 * i + 2] = LocalKey(i,1,2);
│ │ │ │ +
35 }
│ │ │ │ +
36
│ │ │ │ +
37 // last DOFs are associated with the cell (codim=0)
│ │ │ │ +
38 li[9] = LocalKey(0,0,0);
│ │ │ │ +
39 li[10] = LocalKey(0,0,1);
│ │ │ │ +
40 li[11] = LocalKey(0,0,2);
│ │ │ │ +
41 }
│ │ │ │ +
│ │ │ │ +
42
│ │ │ │ +
│ │ │ │ +
44 std::size_t size() const
│ │ │ │ +
45 {
│ │ │ │ +
46 return 12;
│ │ │ │ +
47 }
│ │ │ │ +
│ │ │ │ +
48
│ │ │ │ +
│ │ │ │ +
50 const LocalKey& localKey(std::size_t i) const
│ │ │ │ +
51 {
│ │ │ │ +
52 return li[i];
│ │ │ │ +
53 }
│ │ │ │ +
│ │ │ │ +
54
│ │ │ │ +
55 private:
│ │ │ │ +
56 std::vector<LocalKey> li;
│ │ │ │ +
57 };
│ │ │ │
│ │ │ │ -
126}
│ │ │ │ -
127#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
│ │ │ │ +
58} // end namespace Dune
│ │ │ │ +
59#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:25
│ │ │ │ -
void interpolate(const F &f, std::vector< C > &out) const
Interpolate a given function with shape functions.
Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:78
│ │ │ │ -
BDM1Cube2DLocalInterpolation(unsigned int s)
Make set number s, where 0 <= s < 16.
Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:39
│ │ │ │ -
BDM1Cube2DLocalInterpolation()
Standard constructor.
Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:29
│ │ │ │ +
Layout map for Brezzi-Douglas-Marini-2 elements on triangles.
Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:24
│ │ │ │ +
BDM2Simplex2DLocalCoefficients()
Standard constructor.
Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:28
│ │ │ │ +
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:50
│ │ │ │ +
std::size_t size() const
number of coefficients
Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:44
│ │ │ │ +
Describe position of one degree of freedom.
Definition localkey.hh:24
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,138 +1,85 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d │ │ │ │ │ -brezzidouglasmarini1cube2dlocalinterpolation.hh │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d │ │ │ │ │ +brezzidouglasmarini2simplex2dlocalcoefficients.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH │ │ │ │ │ +5#ifndef │ │ │ │ │ +DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +6#define │ │ │ │ │ +DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ -9 │ │ │ │ │ -10#include │ │ │ │ │ -11 │ │ │ │ │ -12namespace _D_u_n_e │ │ │ │ │ -13{ │ │ │ │ │ -14 │ │ │ │ │ -23 template │ │ │ │ │ -_2_4 class _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -25 { │ │ │ │ │ -26 │ │ │ │ │ -27 public: │ │ │ │ │ -_2_9 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n () │ │ │ │ │ -30 { │ │ │ │ │ -31 sign0 = sign1 = sign2 = sign3 = 1.0; │ │ │ │ │ -32 } │ │ │ │ │ -33 │ │ │ │ │ -_3_9 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n (unsigned int s) │ │ │ │ │ -40 { │ │ │ │ │ -41 sign0 = sign1 = sign2 = sign3 = 1.0; │ │ │ │ │ -42 if (s & 1) │ │ │ │ │ -43 { │ │ │ │ │ -44 sign0 = -1.0; │ │ │ │ │ -45 } │ │ │ │ │ -46 if (s & 2) │ │ │ │ │ -47 { │ │ │ │ │ -48 sign1 = -1.0; │ │ │ │ │ -49 } │ │ │ │ │ -50 if (s & 4) │ │ │ │ │ +8#include │ │ │ │ │ +9#include │ │ │ │ │ +10 │ │ │ │ │ +11#include "../../common/localkey.hh" │ │ │ │ │ +12 │ │ │ │ │ +13namespace _D_u_n_e │ │ │ │ │ +14{ │ │ │ │ │ +15 │ │ │ │ │ +_2_3 class _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +24 { │ │ │ │ │ +25 │ │ │ │ │ +26 public: │ │ │ │ │ +_2_8 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s() : li(12) │ │ │ │ │ +29 { │ │ │ │ │ +30 for (std::size_t i = 0; i < 3; ++i) │ │ │ │ │ +31 { │ │ │ │ │ +32 li[3 * i] = _L_o_c_a_l_K_e_y(i,1,0); │ │ │ │ │ +33 li[3 * i + 1] = _L_o_c_a_l_K_e_y(i,1,1); │ │ │ │ │ +34 li[3 * i + 2] = _L_o_c_a_l_K_e_y(i,1,2); │ │ │ │ │ +35 } │ │ │ │ │ +36 │ │ │ │ │ +37 // last DOFs are associated with the cell (codim=0) │ │ │ │ │ +38 li[9] = _L_o_c_a_l_K_e_y(0,0,0); │ │ │ │ │ +39 li[10] = _L_o_c_a_l_K_e_y(0,0,1); │ │ │ │ │ +40 li[11] = _L_o_c_a_l_K_e_y(0,0,2); │ │ │ │ │ +41 } │ │ │ │ │ +42 │ │ │ │ │ +_4_4 std::size_t _s_i_z_e() const │ │ │ │ │ +45 { │ │ │ │ │ +46 return 12; │ │ │ │ │ +47 } │ │ │ │ │ +48 │ │ │ │ │ +_5_0 const _L_o_c_a_l_K_e_y& _l_o_c_a_l_K_e_y(std::size_t i) const │ │ │ │ │ 51 { │ │ │ │ │ -52 sign2 = -1.0; │ │ │ │ │ +52 return li[i]; │ │ │ │ │ 53 } │ │ │ │ │ -54 if (s & 8) │ │ │ │ │ -55 { │ │ │ │ │ -56 sign3 = -1.0; │ │ │ │ │ -57 } │ │ │ │ │ -58 │ │ │ │ │ -59 n0[0] = -1.0; │ │ │ │ │ -60 n0[1] = 0.0; │ │ │ │ │ -61 n1[0] = 1.0; │ │ │ │ │ -62 n1[1] = 0.0; │ │ │ │ │ -63 n2[0] = 0.0; │ │ │ │ │ -64 n2[1] = -1.0; │ │ │ │ │ -65 n3[0] = 0.0; │ │ │ │ │ -66 n3[1] = 1.0; │ │ │ │ │ -67 } │ │ │ │ │ -68 │ │ │ │ │ -77 template │ │ │ │ │ -_7_8 void _i_n_t_e_r_p_o_l_a_t_e (const F& f, std::vector& out) const │ │ │ │ │ -79 { │ │ │ │ │ -80 // f gives v*outer normal at a point on the edge! │ │ │ │ │ -81 typedef typename LB::Traits::RangeFieldType Scalar; │ │ │ │ │ -82 //typedef typename LB::Traits::DomainFieldType Vector; │ │ │ │ │ -83 │ │ │ │ │ -84 out.resize(8); │ │ │ │ │ -85 fill(out.begin(), out.end(), 0.0); │ │ │ │ │ -86 │ │ │ │ │ -87 const int qOrder = 4; │ │ │ │ │ -88 const QuadratureRule& rule = QuadratureRules::rule │ │ │ │ │ -(GeometryTypes::cube(1), qOrder); │ │ │ │ │ -89 │ │ │ │ │ -90 for (typename QuadratureRule::const_iterator it = rule.begin(); │ │ │ │ │ -91 it != rule.end(); ++it) │ │ │ │ │ -92 { │ │ │ │ │ -93 Scalar qPos = it->position(); │ │ │ │ │ -94 typename LB::Traits::DomainType localPos; │ │ │ │ │ -95 │ │ │ │ │ -96 localPos[0] = 0.0; │ │ │ │ │ -97 localPos[1] = qPos; │ │ │ │ │ -98 auto y = f(localPos); │ │ │ │ │ -99 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0; │ │ │ │ │ -100 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight(); │ │ │ │ │ -101 │ │ │ │ │ -102 localPos[0] = 1.0; │ │ │ │ │ -103 localPos[1] = qPos; │ │ │ │ │ -104 y = f(localPos); │ │ │ │ │ -105 out[2] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1; │ │ │ │ │ -106 out[3] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight(); │ │ │ │ │ -107 │ │ │ │ │ -108 localPos[0] = qPos; │ │ │ │ │ -109 localPos[1] = 0.0; │ │ │ │ │ -110 y = f(localPos); │ │ │ │ │ -111 out[4] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2; │ │ │ │ │ -112 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight(); │ │ │ │ │ -113 │ │ │ │ │ -114 localPos[0] = qPos; │ │ │ │ │ -115 localPos[1] = 1.0; │ │ │ │ │ -116 y = f(localPos); │ │ │ │ │ -117 out[6] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3; │ │ │ │ │ -118 out[7] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight(); │ │ │ │ │ -119 } │ │ │ │ │ -120 } │ │ │ │ │ -121 │ │ │ │ │ -122 private: │ │ │ │ │ -123 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3; │ │ │ │ │ -124 typename LB::Traits::DomainType n0, n1, n2, n3; │ │ │ │ │ -125 }; │ │ │ │ │ -126} │ │ │ │ │ -127#endif / │ │ │ │ │ -/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH │ │ │ │ │ +54 │ │ │ │ │ +55 private: │ │ │ │ │ +56 std::vector li; │ │ │ │ │ +57 }; │ │ │ │ │ +58} // end namespace Dune │ │ │ │ │ +59#endif / │ │ │ │ │ +/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ -quadrilateral. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalinterpolation.hh:25 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ -void interpolate(const F &f, std::vector< C > &out) const │ │ │ │ │ -Interpolate a given function with shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalinterpolation.hh:78 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -BDM1Cube2DLocalInterpolation(unsigned int s) │ │ │ │ │ -Make set number s, where 0 <= s < 16. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalinterpolation.hh:39 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -BDM1Cube2DLocalInterpolation() │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +Layout map for Brezzi-Douglas-Marini-2 elements on triangles. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalcoefficients.hh:24 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +BDM2Simplex2DLocalCoefficients() │ │ │ │ │ Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalinterpolation.hh:29 │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalcoefficients.hh:28 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_l_o_c_a_l_K_e_y │ │ │ │ │ +const LocalKey & localKey(std::size_t i) const │ │ │ │ │ +get i'th index │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalcoefficients.hh:50 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_s_i_z_e │ │ │ │ │ +std::size_t size() const │ │ │ │ │ +number of coefficients │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalcoefficients.hh:44 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ +Describe position of one degree of freedom. │ │ │ │ │ +DDeeffiinniittiioonn localkey.hh:24 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00071.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarinisimplex.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,36 +65,34 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarinisimplex.hh File Reference
│ │ │ │ +
brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d.hh>
│ │ │ │ -#include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d.hh>
│ │ │ │ +
#include <cstddef>
│ │ │ │ +#include <vector>
│ │ │ │ +#include "../../common/localkey.hh"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BrezziDouglasMariniSimplexLocalFiniteElement< D, R, 2, 1 >
 Brezzi-Douglas-Marini local finite elements for simplices with dimension 2 and order 1. More...
 
class  Dune::BrezziDouglasMariniSimplexLocalFiniteElement< D, R, 2, 2 >
 Brezzi-Douglas-Marini local finite elements for simplices with dimension 2 and order 2. More...
class  Dune::BDM1Cube2DLocalCoefficients
 Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,28 +1,24 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarinisimplex.hh File Reference │ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d_._h_h> │ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_._h_h> │ │ │ │ │ +brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _1_ _> │ │ │ │ │ -  Brezzi-Douglas-Marini local finite elements for simplices with │ │ │ │ │ - dimension 2 and order 1. _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -class   _D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _2_ _> │ │ │ │ │ -  Brezzi-Douglas-Marini local finite elements for simplices with │ │ │ │ │ - dimension 2 and order 2. _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +  Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals. │ │ │ │ │ + _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00071_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarinisimplex.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube2dlocalcoefficients.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,88 +70,78 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarinisimplex.hh
│ │ │ │ +
brezzidouglasmarini1cube2dlocalcoefficients.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH
│ │ │ │
7
│ │ │ │ - │ │ │ │ - │ │ │ │ +
8#include <cstddef>
│ │ │ │ +
9#include <vector>
│ │ │ │
10
│ │ │ │ -
11
│ │ │ │ -
12namespace Dune
│ │ │ │ -
13{
│ │ │ │ -
22 template<class D, class R, unsigned int dim, unsigned int order>
│ │ │ │ - │ │ │ │ -
24
│ │ │ │ -
28 template<class D, class R>
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ -
31 {
│ │ │ │ -
32 public:
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
35 {}
│ │ │ │ +
11#include "../../common/localkey.hh"
│ │ │ │ +
12
│ │ │ │ +
13namespace Dune
│ │ │ │ +
14{
│ │ │ │ +
15
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
24 {
│ │ │ │ +
25
│ │ │ │ +
26 public:
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
29 {
│ │ │ │ +
30 for (std::size_t i = 0; i < 4; ++i)
│ │ │ │ +
31 {
│ │ │ │ +
32 li[2*i] = LocalKey(i,1,0);
│ │ │ │ +
33 li[2*i + 1] = LocalKey(i,1,1);
│ │ │ │ +
34 }
│ │ │ │ +
35 }
│ │ │ │
│ │ │ │
36
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ -
44 {}
│ │ │ │ -
│ │ │ │ -
45 };
│ │ │ │ -
│ │ │ │ -
46
│ │ │ │ -
50 template<class D, class R>
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ -
53 {
│ │ │ │ -
54 public:
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
57 {}
│ │ │ │ -
│ │ │ │ -
58
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ -
66 {}
│ │ │ │ -
│ │ │ │ -
67 };
│ │ │ │ -
│ │ │ │ -
68
│ │ │ │ -
69} // namespace Dune
│ │ │ │ -
70
│ │ │ │ -
71#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH
│ │ │ │ - │ │ │ │ - │ │ │ │ +
│ │ │ │ +
38 std::size_t size () const
│ │ │ │ +
39 {
│ │ │ │ +
40 return 8;
│ │ │ │ +
41 }
│ │ │ │ +
│ │ │ │ +
42
│ │ │ │ +
│ │ │ │ +
44 const LocalKey& localKey (std::size_t i) const
│ │ │ │ +
45 {
│ │ │ │ +
46 return li[i];
│ │ │ │ +
47 }
│ │ │ │ +
│ │ │ │ +
48
│ │ │ │ +
49 private:
│ │ │ │ +
50 std::vector<LocalKey> li;
│ │ │ │ +
51 };
│ │ │ │ +
│ │ │ │ +
52}
│ │ │ │ +
53#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on triangles.
Definition brezzidouglasmarini1simplex2d.hh:28
│ │ │ │ -
Second order Brezzi-Douglas-Marini shape functions on triangles.
Definition brezzidouglasmarini2simplex2d.hh:27
│ │ │ │ -
Brezzi-Douglas-Marini local finite element for simplices.
Definition brezzidouglasmarinisimplex.hh:23
│ │ │ │ -
BrezziDouglasMariniSimplexLocalFiniteElement(int s)
Constructor with a set of edge orientations.
Definition brezzidouglasmarinisimplex.hh:42
│ │ │ │ -
BrezziDouglasMariniSimplexLocalFiniteElement()
Default constructor.
Definition brezzidouglasmarinisimplex.hh:34
│ │ │ │ -
BrezziDouglasMariniSimplexLocalFiniteElement(int s)
Constructor with a set of edge orientations.
Definition brezzidouglasmarinisimplex.hh:64
│ │ │ │ -
BrezziDouglasMariniSimplexLocalFiniteElement()
Default constructor.
Definition brezzidouglasmarinisimplex.hh:56
│ │ │ │ +
Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.
Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:24
│ │ │ │ +
BDM1Cube2DLocalCoefficients()
Standard constructor.
Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:28
│ │ │ │ +
std::size_t size() const
number of coefficients
Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:38
│ │ │ │ +
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:44
│ │ │ │ +
Describe position of one degree of freedom.
Definition localkey.hh:24
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,93 +1,77 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ -brezzidouglasmarinisimplex.hh │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d │ │ │ │ │ +brezzidouglasmarini1cube2dlocalcoefficients.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d_._h_h> │ │ │ │ │ -9#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_._h_h> │ │ │ │ │ +8#include │ │ │ │ │ +9#include │ │ │ │ │ 10 │ │ │ │ │ -11 │ │ │ │ │ -12namespace _D_u_n_e │ │ │ │ │ -13{ │ │ │ │ │ -22 template │ │ │ │ │ -_2_3 class _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t; │ │ │ │ │ -24 │ │ │ │ │ -28 template │ │ │ │ │ -_2_9 class _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -30 : public _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +11#include "../../common/localkey.hh" │ │ │ │ │ +12 │ │ │ │ │ +13namespace _D_u_n_e │ │ │ │ │ +14{ │ │ │ │ │ +15 │ │ │ │ │ +_2_3 class _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +24 { │ │ │ │ │ +25 │ │ │ │ │ +26 public: │ │ │ │ │ +_2_8 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () : li(8) │ │ │ │ │ +29 { │ │ │ │ │ +30 for (std::size_t i = 0; i < 4; ++i) │ │ │ │ │ 31 { │ │ │ │ │ -32 public: │ │ │ │ │ -_3_4 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t() │ │ │ │ │ -35 {} │ │ │ │ │ +32 li[2*i] = _L_o_c_a_l_K_e_y(i,1,0); │ │ │ │ │ +33 li[2*i + 1] = _L_o_c_a_l_K_e_y(i,1,1); │ │ │ │ │ +34 } │ │ │ │ │ +35 } │ │ │ │ │ 36 │ │ │ │ │ -_4_2 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(int s) │ │ │ │ │ -43 : _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t::_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(s) │ │ │ │ │ -44 {} │ │ │ │ │ -45 }; │ │ │ │ │ -46 │ │ │ │ │ -50 template │ │ │ │ │ -_5_1 class _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -52 : public _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -53 { │ │ │ │ │ -54 public: │ │ │ │ │ -_5_6 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t() │ │ │ │ │ -57 {} │ │ │ │ │ -58 │ │ │ │ │ -_6_4 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(int s) │ │ │ │ │ -65 : _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t::_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(s) │ │ │ │ │ -66 {} │ │ │ │ │ -67 }; │ │ │ │ │ -68 │ │ │ │ │ -69} // namespace Dune │ │ │ │ │ -70 │ │ │ │ │ -71#endif // #ifndef │ │ │ │ │ -DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_._h_h │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d_._h_h │ │ │ │ │ +_3_8 std::size_t _s_i_z_e () const │ │ │ │ │ +39 { │ │ │ │ │ +40 return 8; │ │ │ │ │ +41 } │ │ │ │ │ +42 │ │ │ │ │ +_4_4 const _L_o_c_a_l_K_e_y& _l_o_c_a_l_K_e_y (std::size_t i) const │ │ │ │ │ +45 { │ │ │ │ │ +46 return li[i]; │ │ │ │ │ +47 } │ │ │ │ │ +48 │ │ │ │ │ +49 private: │ │ │ │ │ +50 std::vector li; │ │ │ │ │ +51 }; │ │ │ │ │ +52} │ │ │ │ │ +53#endif / │ │ │ │ │ +/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -First order Brezzi-Douglas-Marini shape functions on triangles. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2d.hh:28 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -Second order Brezzi-Douglas-Marini shape functions on triangles. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:27 │ │ │ │ │ -_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -Brezzi-Douglas-Marini local finite element for simplices. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarinisimplex.hh:23 │ │ │ │ │ -_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _1_ _>_:_: │ │ │ │ │ -_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -BrezziDouglasMariniSimplexLocalFiniteElement(int s) │ │ │ │ │ -Constructor with a set of edge orientations. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarinisimplex.hh:42 │ │ │ │ │ -_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _1_ _>_:_: │ │ │ │ │ -_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -BrezziDouglasMariniSimplexLocalFiniteElement() │ │ │ │ │ -Default constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarinisimplex.hh:34 │ │ │ │ │ -_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _2_ _>_:_: │ │ │ │ │ -_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -BrezziDouglasMariniSimplexLocalFiniteElement(int s) │ │ │ │ │ -Constructor with a set of edge orientations. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarinisimplex.hh:64 │ │ │ │ │ -_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _2_ _>_:_: │ │ │ │ │ -_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -BrezziDouglasMariniSimplexLocalFiniteElement() │ │ │ │ │ -Default constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarinisimplex.hh:56 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalcoefficients.hh:24 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +BDM1Cube2DLocalCoefficients() │ │ │ │ │ +Standard constructor. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalcoefficients.hh:28 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_s_i_z_e │ │ │ │ │ +std::size_t size() const │ │ │ │ │ +number of coefficients │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalcoefficients.hh:38 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_l_o_c_a_l_K_e_y │ │ │ │ │ +const LocalKey & localKey(std::size_t i) const │ │ │ │ │ +get i'th index │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalcoefficients.hh:44 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ +Describe position of one degree of freedom. │ │ │ │ │ +DDeeffiinniittiioonn localkey.hh:24 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1cube3dlocalcoefficients.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube2dlocalbasis.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,34 +65,37 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini1cube3dlocalcoefficients.hh File Reference
│ │ │ │ +
brezzidouglasmarini1cube2dlocalbasis.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <cstddef>
│ │ │ │ +
#include <array>
│ │ │ │ +#include <bitset>
│ │ │ │ +#include <numeric>
│ │ │ │ #include <vector>
│ │ │ │ -#include "../../common/localkey.hh"
│ │ │ │ +#include <dune/common/fmatrix.hh>
│ │ │ │ +#include "../../common/localbasis.hh"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM1Cube3DLocalCoefficients
 Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra. More...
class  Dune::BDM1Cube2DLocalBasis< D, R >
 First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,23 +1,27 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini1cube3dlocalcoefficients.hh File Reference │ │ │ │ │ -#include │ │ │ │ │ +brezzidouglasmarini1cube2dlocalbasis.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ #include │ │ │ │ │ -#include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h" │ │ │ │ │ +#include │ │ │ │ │ +#include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -  Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra. _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_ _D_,_ _R_ _> │ │ │ │ │ +  First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ + quadrilateral. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1cube3dlocalcoefficients.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube2dlocalbasis.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,79 +70,241 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarini1cube3dlocalcoefficients.hh
│ │ │ │ +
brezzidouglasmarini1cube2dlocalbasis.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
│ │ │ │
7
│ │ │ │ -
8#include <cstddef>
│ │ │ │ -
9#include <vector>
│ │ │ │ -
10
│ │ │ │ -
11#include "../../common/localkey.hh"
│ │ │ │ +
8#include <array>
│ │ │ │ +
9#include <bitset>
│ │ │ │ +
10#include <numeric>
│ │ │ │ +
11#include <vector>
│ │ │ │
12
│ │ │ │ -
13namespace Dune
│ │ │ │ -
14{
│ │ │ │ -
15
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
24 {
│ │ │ │ -
25
│ │ │ │ -
26 public:
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
29 {
│ │ │ │ -
30 for (std::size_t i = 0; i < 6; ++i)
│ │ │ │ -
31 {
│ │ │ │ -
32 li[i] = LocalKey(i,1,0);
│ │ │ │ -
33 li[i + 6] = LocalKey(i,1,1);
│ │ │ │ -
34 li[i + 12] = LocalKey(i,1,2);
│ │ │ │ -
35 }
│ │ │ │ -
36 }
│ │ │ │ -
│ │ │ │ -
37
│ │ │ │ -
│ │ │ │ -
39 std::size_t size() const
│ │ │ │ -
40 {
│ │ │ │ -
41 return 18;
│ │ │ │ -
42 }
│ │ │ │ -
│ │ │ │ -
43
│ │ │ │ -
│ │ │ │ -
45 const LocalKey& localKey(std::size_t i) const
│ │ │ │ -
46 {
│ │ │ │ -
47 return li[i];
│ │ │ │ -
48 }
│ │ │ │ -
│ │ │ │ -
49
│ │ │ │ -
50 private:
│ │ │ │ -
51 std::vector<LocalKey> li;
│ │ │ │ -
52 };
│ │ │ │ +
13#include <dune/common/fmatrix.hh>
│ │ │ │ +
14
│ │ │ │ +
15#include "../../common/localbasis.hh"
│ │ │ │ +
16
│ │ │ │ +
17namespace Dune
│ │ │ │ +
18{
│ │ │ │ +
28 template<class D, class R>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
30 {
│ │ │ │ +
31
│ │ │ │ +
32 public:
│ │ │ │ +
33 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
│ │ │ │ +
34 Dune::FieldMatrix<R,2,2> > Traits;
│ │ │ │ +
35
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
38 {
│ │ │ │ +
39 for (size_t i=0; i<4; i++)
│ │ │ │ +
40 sign_[i] = 1.0;
│ │ │ │ +
41 }
│ │ │ │ +
│ │ │ │ +
42
│ │ │ │ +
│ │ │ │ +
48 BDM1Cube2DLocalBasis (std::bitset<4> s)
│ │ │ │ +
49 {
│ │ │ │ +
50 for (size_t i=0; i<4; i++)
│ │ │ │ +
51 sign_[i] = s[i] ? -1.0 : 1.0;
│ │ │ │ +
52 }
│ │ │ │ +
│ │ │ │ +
53
│ │ │ │ +
│ │ │ │ +
55 unsigned int size () const
│ │ │ │ +
56 {
│ │ │ │ +
57 return 8;
│ │ │ │ +
58 }
│ │ │ │ +
│ │ │ │ +
59
│ │ │ │ +
│ │ │ │ +
66 inline void evaluateFunction (const typename Traits::DomainType& in,
│ │ │ │ +
67 std::vector<typename Traits::RangeType>& out) const
│ │ │ │ +
68 {
│ │ │ │ +
69 out.resize(8);
│ │ │ │ +
70
│ │ │ │ +
71 out[0][0] = sign_[0]*(in[0] - 1.0);
│ │ │ │ +
72 out[0][1] = 0.0;
│ │ │ │ +
73 out[1][0] = 6.0*in[0]*in[1] - 3.0*in[0]-6*in[1] + 3.0;
│ │ │ │ +
74 out[1][1] = -3.0*in[1]*in[1] + 3.0*in[1];
│ │ │ │ +
75 out[2][0] = sign_[1]*(in[0]);
│ │ │ │ +
76 out[2][1] = 0.0;
│ │ │ │ +
77 out[3][0] = -6.0*in[0]*in[1] + 3.0*in[0];
│ │ │ │ +
78 out[3][1] = 3.0*in[1]*in[1] - 3.0*in[1];
│ │ │ │ +
79 out[4][0] = 0.0;
│ │ │ │ +
80 out[4][1] = sign_[2]*(in[1] - 1.0);
│ │ │ │ +
81 out[5][0] = 3.0*in[0]*in[0] - 3.0*in[0];
│ │ │ │ +
82 out[5][1] = -6.0*in[0]*in[1] + 6.0*in[0] + 3.0*in[1] - 3.0;
│ │ │ │ +
83 out[6][0] = 0.0;
│ │ │ │ +
84 out[6][1] = sign_[3]*(in[1]);
│ │ │ │ +
85 out[7][0] = -3.0*in[0]*in[0] + 3.0*in[0];
│ │ │ │ +
86 out[7][1] = 6.0*in[0]*in[1] - 3.0*in[1];
│ │ │ │ +
87 }
│ │ │ │ +
│ │ │ │ +
88
│ │ │ │ +
│ │ │ │ +
95 inline void evaluateJacobian (const typename Traits::DomainType& in,
│ │ │ │ +
96 std::vector<typename Traits::JacobianType>& out) const
│ │ │ │ +
97 {
│ │ │ │ +
98 out.resize(8);
│ │ │ │ +
99
│ │ │ │ +
100 out[0][0][0] = sign_[0];
│ │ │ │ +
101 out[0][0][1] = 0.0;
│ │ │ │ +
102 out[0][1][0] = 0.0;
│ │ │ │ +
103 out[0][1][1] = 0.0;
│ │ │ │ +
104
│ │ │ │ +
105 out[1][0][0] = 6.0*in[1] - 3.0;
│ │ │ │ +
106 out[1][0][1] = 6.0*in[0] - 6.0;
│ │ │ │ +
107 out[1][1][0] = 0.0;
│ │ │ │ +
108 out[1][1][1] = -6.0*in[1] + 3.0;
│ │ │ │ +
109
│ │ │ │ +
110 out[2][0][0] = sign_[1];
│ │ │ │ +
111 out[2][0][1] = 0.0;
│ │ │ │ +
112 out[2][1][0] = 0.0;
│ │ │ │ +
113 out[2][1][1] = 0.0;
│ │ │ │ +
114
│ │ │ │ +
115 out[3][0][0] = -6.0*in[1] + 3.0;
│ │ │ │ +
116 out[3][0][1] = -6.0*in[0];
│ │ │ │ +
117 out[3][1][0] = 0.0;
│ │ │ │ +
118 out[3][1][1] = 6.0*in[1] - 3.0;
│ │ │ │ +
119
│ │ │ │ +
120 out[4][0][0] = 0.0;
│ │ │ │ +
121 out[4][0][1] = 0.0;
│ │ │ │ +
122 out[4][1][0] = 0.0;
│ │ │ │ +
123 out[4][1][1] = sign_[2];
│ │ │ │ +
124
│ │ │ │ +
125 out[5][0][0] = 6.0*in[0] - 3.0;
│ │ │ │ +
126 out[5][0][1] = 0.0;
│ │ │ │ +
127 out[5][1][0] = -6.0*in[1] + 6.0;
│ │ │ │ +
128 out[5][1][1] = -6.0*in[0] + 3.0;
│ │ │ │ +
129
│ │ │ │ +
130 out[6][0][0] = 0.0;
│ │ │ │ +
131 out[6][0][1] = 0.0;
│ │ │ │ +
132 out[6][1][0] = 0.0;
│ │ │ │ +
133 out[6][1][1] = sign_[3];
│ │ │ │ +
134
│ │ │ │ +
135 out[7][0][0] = -6.0*in[0] + 3.0;
│ │ │ │ +
136 out[7][0][1] = 0.0;
│ │ │ │ +
137 out[7][1][0] = 6.0*in[1];
│ │ │ │ +
138 out[7][1][1] = 6.0*in[0] - 3.0;
│ │ │ │ +
139 }
│ │ │ │ +
│ │ │ │ +
140
│ │ │ │ +
│ │ │ │ +
142 void partial (const std::array<unsigned int, 2>& order,
│ │ │ │ +
143 const typename Traits::DomainType& in, // position
│ │ │ │ +
144 std::vector<typename Traits::RangeType>& out) const // return value
│ │ │ │ +
145 {
│ │ │ │ +
146 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
│ │ │ │ +
147 if (totalOrder == 0) {
│ │ │ │ +
148 evaluateFunction(in, out);
│ │ │ │ +
149 } else if (totalOrder == 1) {
│ │ │ │ +
150 out.resize(size());
│ │ │ │ +
151 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
│ │ │ │ +
152
│ │ │ │ +
153 switch (direction) {
│ │ │ │ +
154 case 0:
│ │ │ │ +
155 out[0][0] = sign_[0];
│ │ │ │ +
156 out[0][1] = 0.0;
│ │ │ │ +
157
│ │ │ │ +
158 out[1][0] = 6.0*in[1] - 3.0;
│ │ │ │ +
159 out[1][1] = 0.0;
│ │ │ │ +
160
│ │ │ │ +
161 out[2][0] = sign_[1];
│ │ │ │ +
162 out[2][1] = 0.0;
│ │ │ │ +
163
│ │ │ │ +
164 out[3][0] = -6.0*in[1] + 3.0;
│ │ │ │ +
165 out[3][1] = 0.0;
│ │ │ │ +
166
│ │ │ │ +
167 out[4][0] = 0.0;
│ │ │ │ +
168 out[4][1] = 0.0;
│ │ │ │ +
169
│ │ │ │ +
170 out[5][0] = 6.0*in[0] - 3.0;
│ │ │ │ +
171 out[5][1] = -6.0*in[1] + 6.0;
│ │ │ │ +
172
│ │ │ │ +
173 out[6][0] = 0.0;
│ │ │ │ +
174 out[6][1] = 0.0;
│ │ │ │ +
175
│ │ │ │ +
176 out[7][0] = -6.0*in[0] + 3.0;
│ │ │ │ +
177 out[7][1] = 6.0*in[1];
│ │ │ │ +
178 break;
│ │ │ │ +
179 case 1:
│ │ │ │ +
180 out[0][0] = 0.0;
│ │ │ │ +
181 out[0][1] = 0.0;
│ │ │ │ +
182
│ │ │ │ +
183 out[1][0] = 6.0*in[0] - 6.0;
│ │ │ │ +
184 out[1][1] = -6.0*in[1] + 3.0;
│ │ │ │ +
185
│ │ │ │ +
186 out[2][0] = 0.0;
│ │ │ │ +
187 out[2][1] = 0.0;
│ │ │ │ +
188
│ │ │ │ +
189 out[3][0] = -6.0*in[0];
│ │ │ │ +
190 out[3][1] = 6.0*in[1] - 3.0;
│ │ │ │ +
191
│ │ │ │ +
192 out[4][0] = 0.0;
│ │ │ │ +
193 out[4][1] = sign_[2];
│ │ │ │ +
194
│ │ │ │ +
195 out[5][0] = 0.0;
│ │ │ │ +
196 out[5][1] = -6.0*in[0] + 3.0;
│ │ │ │ +
197
│ │ │ │ +
198 out[6][0] = 0.0;
│ │ │ │ +
199 out[6][1] = sign_[3];
│ │ │ │ +
200
│ │ │ │ +
201 out[7][0] = 0.0;
│ │ │ │ +
202 out[7][1] = 6.0*in[0] - 3.0;
│ │ │ │ +
203 break;
│ │ │ │ +
204 default:
│ │ │ │ +
205 DUNE_THROW(RangeError, "Component out of range.");
│ │ │ │ +
206 }
│ │ │ │ +
207 } else {
│ │ │ │ +
208 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
│ │ │ │ +
209 }
│ │ │ │ +
210 }
│ │ │ │ +
│ │ │ │ +
211
│ │ │ │ +
│ │ │ │ +
213 unsigned int order () const
│ │ │ │ +
214 {
│ │ │ │ +
215 return 2;
│ │ │ │ +
216 }
│ │ │ │ +
│ │ │ │ +
217
│ │ │ │ +
218 private:
│ │ │ │ +
219 std::array<R,4> sign_;
│ │ │ │ +
220 };
│ │ │ │
│ │ │ │ -
53} // end namespace Dune
│ │ │ │ -
54#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
221}
│ │ │ │ +
222#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra.
Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:24
│ │ │ │ -
std::size_t size() const
number of coefficients
Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:39
│ │ │ │ -
BDM1Cube3DLocalCoefficients()
Standard constructor.
Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:28
│ │ │ │ -
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:45
│ │ │ │ -
Describe position of one degree of freedom.
Definition localkey.hh:24
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:30
│ │ │ │ +
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:95
│ │ │ │ +
void partial(const std::array< unsigned int, 2 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of all shape functions.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:142
│ │ │ │ +
BDM1Cube2DLocalBasis()
Standard constructor.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:37
│ │ │ │ +
LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
Definition brezzidouglasmarini1cube2dlocalbasis.hh:34
│ │ │ │ +
unsigned int size() const
number of shape functions
Definition brezzidouglasmarini1cube2dlocalbasis.hh:55
│ │ │ │ +
BDM1Cube2DLocalBasis(std::bitset< 4 > s)
Make set number s, where 0 <= s < 16.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:48
│ │ │ │ +
unsigned int order() const
Polynomial order of the shape functions.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:213
│ │ │ │ +
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:66
│ │ │ │ +
Type traits for LocalBasisVirtualInterface.
Definition common/localbasis.hh:35
│ │ │ │ +
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,78 +1,255 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d │ │ │ │ │ -brezzidouglasmarini1cube3dlocalcoefficients.hh │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d │ │ │ │ │ +brezzidouglasmarini1cube2dlocalbasis.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ -9#include │ │ │ │ │ -10 │ │ │ │ │ -11#include "../../common/localkey.hh" │ │ │ │ │ +8#include │ │ │ │ │ +9#include │ │ │ │ │ +10#include │ │ │ │ │ +11#include │ │ │ │ │ 12 │ │ │ │ │ -13namespace _D_u_n_e │ │ │ │ │ -14{ │ │ │ │ │ -15 │ │ │ │ │ -_2_3 class _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -24 { │ │ │ │ │ -25 │ │ │ │ │ -26 public: │ │ │ │ │ -_2_8 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s() : li(18) │ │ │ │ │ -29 { │ │ │ │ │ -30 for (std::size_t i = 0; i < 6; ++i) │ │ │ │ │ -31 { │ │ │ │ │ -32 li[i] = _L_o_c_a_l_K_e_y(i,1,0); │ │ │ │ │ -33 li[i + 6] = _L_o_c_a_l_K_e_y(i,1,1); │ │ │ │ │ -34 li[i + 12] = _L_o_c_a_l_K_e_y(i,1,2); │ │ │ │ │ -35 } │ │ │ │ │ -36 } │ │ │ │ │ -37 │ │ │ │ │ -_3_9 std::size_t _s_i_z_e() const │ │ │ │ │ -40 { │ │ │ │ │ -41 return 18; │ │ │ │ │ -42 } │ │ │ │ │ -43 │ │ │ │ │ -_4_5 const _L_o_c_a_l_K_e_y& _l_o_c_a_l_K_e_y(std::size_t i) const │ │ │ │ │ -46 { │ │ │ │ │ -47 return li[i]; │ │ │ │ │ -48 } │ │ │ │ │ -49 │ │ │ │ │ -50 private: │ │ │ │ │ -51 std::vector li; │ │ │ │ │ -52 }; │ │ │ │ │ -53} // end namespace Dune │ │ │ │ │ -54#endif / │ │ │ │ │ -/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +13#include │ │ │ │ │ +14 │ │ │ │ │ +15#include "../../common/localbasis.hh" │ │ │ │ │ +16 │ │ │ │ │ +17namespace _D_u_n_e │ │ │ │ │ +18{ │ │ │ │ │ +28 template │ │ │ │ │ +_2_9 class _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +30 { │ │ │ │ │ +31 │ │ │ │ │ +32 public: │ │ │ │ │ +33 typedef _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_<_D_,_2_,_D_u_n_e_:_:_F_i_e_l_d_V_e_c_t_o_r_<_D_,_2_>,R,2,Dune:: │ │ │ │ │ +FieldVector, │ │ │ │ │ +_3_4 Dune::FieldMatrix > _T_r_a_i_t_s; │ │ │ │ │ +35 │ │ │ │ │ +_3_7 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s () │ │ │ │ │ +38 { │ │ │ │ │ +39 for (size_t i=0; i<4; i++) │ │ │ │ │ +40 sign_[i] = 1.0; │ │ │ │ │ +41 } │ │ │ │ │ +42 │ │ │ │ │ +_4_8 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s (std::bitset<4> s) │ │ │ │ │ +49 { │ │ │ │ │ +50 for (size_t i=0; i<4; i++) │ │ │ │ │ +51 sign_[i] = s[i] ? -1.0 : 1.0; │ │ │ │ │ +52 } │ │ │ │ │ +53 │ │ │ │ │ +_5_5 unsigned int _s_i_z_e () const │ │ │ │ │ +56 { │ │ │ │ │ +57 return 8; │ │ │ │ │ +58 } │ │ │ │ │ +59 │ │ │ │ │ +_6_6 inline void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n (const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ +67 std::vector& out) const │ │ │ │ │ +68 { │ │ │ │ │ +69 out.resize(8); │ │ │ │ │ +70 │ │ │ │ │ +71 out[0][0] = sign_[0]*(in[0] - 1.0); │ │ │ │ │ +72 out[0][1] = 0.0; │ │ │ │ │ +73 out[1][0] = 6.0*in[0]*in[1] - 3.0*in[0]-6*in[1] + 3.0; │ │ │ │ │ +74 out[1][1] = -3.0*in[1]*in[1] + 3.0*in[1]; │ │ │ │ │ +75 out[2][0] = sign_[1]*(in[0]); │ │ │ │ │ +76 out[2][1] = 0.0; │ │ │ │ │ +77 out[3][0] = -6.0*in[0]*in[1] + 3.0*in[0]; │ │ │ │ │ +78 out[3][1] = 3.0*in[1]*in[1] - 3.0*in[1]; │ │ │ │ │ +79 out[4][0] = 0.0; │ │ │ │ │ +80 out[4][1] = sign_[2]*(in[1] - 1.0); │ │ │ │ │ +81 out[5][0] = 3.0*in[0]*in[0] - 3.0*in[0]; │ │ │ │ │ +82 out[5][1] = -6.0*in[0]*in[1] + 6.0*in[0] + 3.0*in[1] - 3.0; │ │ │ │ │ +83 out[6][0] = 0.0; │ │ │ │ │ +84 out[6][1] = sign_[3]*(in[1]); │ │ │ │ │ +85 out[7][0] = -3.0*in[0]*in[0] + 3.0*in[0]; │ │ │ │ │ +86 out[7][1] = 6.0*in[0]*in[1] - 3.0*in[1]; │ │ │ │ │ +87 } │ │ │ │ │ +88 │ │ │ │ │ +_9_5 inline void _e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n (const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ +96 std::vector& out) const │ │ │ │ │ +97 { │ │ │ │ │ +98 out.resize(8); │ │ │ │ │ +99 │ │ │ │ │ +100 out[0][0][0] = sign_[0]; │ │ │ │ │ +101 out[0][0][1] = 0.0; │ │ │ │ │ +102 out[0][1][0] = 0.0; │ │ │ │ │ +103 out[0][1][1] = 0.0; │ │ │ │ │ +104 │ │ │ │ │ +105 out[1][0][0] = 6.0*in[1] - 3.0; │ │ │ │ │ +106 out[1][0][1] = 6.0*in[0] - 6.0; │ │ │ │ │ +107 out[1][1][0] = 0.0; │ │ │ │ │ +108 out[1][1][1] = -6.0*in[1] + 3.0; │ │ │ │ │ +109 │ │ │ │ │ +110 out[2][0][0] = sign_[1]; │ │ │ │ │ +111 out[2][0][1] = 0.0; │ │ │ │ │ +112 out[2][1][0] = 0.0; │ │ │ │ │ +113 out[2][1][1] = 0.0; │ │ │ │ │ +114 │ │ │ │ │ +115 out[3][0][0] = -6.0*in[1] + 3.0; │ │ │ │ │ +116 out[3][0][1] = -6.0*in[0]; │ │ │ │ │ +117 out[3][1][0] = 0.0; │ │ │ │ │ +118 out[3][1][1] = 6.0*in[1] - 3.0; │ │ │ │ │ +119 │ │ │ │ │ +120 out[4][0][0] = 0.0; │ │ │ │ │ +121 out[4][0][1] = 0.0; │ │ │ │ │ +122 out[4][1][0] = 0.0; │ │ │ │ │ +123 out[4][1][1] = sign_[2]; │ │ │ │ │ +124 │ │ │ │ │ +125 out[5][0][0] = 6.0*in[0] - 3.0; │ │ │ │ │ +126 out[5][0][1] = 0.0; │ │ │ │ │ +127 out[5][1][0] = -6.0*in[1] + 6.0; │ │ │ │ │ +128 out[5][1][1] = -6.0*in[0] + 3.0; │ │ │ │ │ +129 │ │ │ │ │ +130 out[6][0][0] = 0.0; │ │ │ │ │ +131 out[6][0][1] = 0.0; │ │ │ │ │ +132 out[6][1][0] = 0.0; │ │ │ │ │ +133 out[6][1][1] = sign_[3]; │ │ │ │ │ +134 │ │ │ │ │ +135 out[7][0][0] = -6.0*in[0] + 3.0; │ │ │ │ │ +136 out[7][0][1] = 0.0; │ │ │ │ │ +137 out[7][1][0] = 6.0*in[1]; │ │ │ │ │ +138 out[7][1][1] = 6.0*in[0] - 3.0; │ │ │ │ │ +139 } │ │ │ │ │ +140 │ │ │ │ │ +_1_4_2 void _p_a_r_t_i_a_l (const std::array& _o_r_d_e_r, │ │ │ │ │ +143 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, // position │ │ │ │ │ +144 std::vector& out) const // return value │ │ │ │ │ +145 { │ │ │ │ │ +146 auto totalOrder = std::accumulate(_o_r_d_e_r.begin(), _o_r_d_e_r.end(), 0); │ │ │ │ │ +147 if (totalOrder == 0) { │ │ │ │ │ +148 _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(in, out); │ │ │ │ │ +149 } else if (totalOrder == 1) { │ │ │ │ │ +150 out.resize(_s_i_z_e()); │ │ │ │ │ +151 auto const direction = std::distance(_o_r_d_e_r.begin(), std::find(_o_r_d_e_r.begin │ │ │ │ │ +(), _o_r_d_e_r.end(), 1)); │ │ │ │ │ +152 │ │ │ │ │ +153 switch (direction) { │ │ │ │ │ +154 case 0: │ │ │ │ │ +155 out[0][0] = sign_[0]; │ │ │ │ │ +156 out[0][1] = 0.0; │ │ │ │ │ +157 │ │ │ │ │ +158 out[1][0] = 6.0*in[1] - 3.0; │ │ │ │ │ +159 out[1][1] = 0.0; │ │ │ │ │ +160 │ │ │ │ │ +161 out[2][0] = sign_[1]; │ │ │ │ │ +162 out[2][1] = 0.0; │ │ │ │ │ +163 │ │ │ │ │ +164 out[3][0] = -6.0*in[1] + 3.0; │ │ │ │ │ +165 out[3][1] = 0.0; │ │ │ │ │ +166 │ │ │ │ │ +167 out[4][0] = 0.0; │ │ │ │ │ +168 out[4][1] = 0.0; │ │ │ │ │ +169 │ │ │ │ │ +170 out[5][0] = 6.0*in[0] - 3.0; │ │ │ │ │ +171 out[5][1] = -6.0*in[1] + 6.0; │ │ │ │ │ +172 │ │ │ │ │ +173 out[6][0] = 0.0; │ │ │ │ │ +174 out[6][1] = 0.0; │ │ │ │ │ +175 │ │ │ │ │ +176 out[7][0] = -6.0*in[0] + 3.0; │ │ │ │ │ +177 out[7][1] = 6.0*in[1]; │ │ │ │ │ +178 break; │ │ │ │ │ +179 case 1: │ │ │ │ │ +180 out[0][0] = 0.0; │ │ │ │ │ +181 out[0][1] = 0.0; │ │ │ │ │ +182 │ │ │ │ │ +183 out[1][0] = 6.0*in[0] - 6.0; │ │ │ │ │ +184 out[1][1] = -6.0*in[1] + 3.0; │ │ │ │ │ +185 │ │ │ │ │ +186 out[2][0] = 0.0; │ │ │ │ │ +187 out[2][1] = 0.0; │ │ │ │ │ +188 │ │ │ │ │ +189 out[3][0] = -6.0*in[0]; │ │ │ │ │ +190 out[3][1] = 6.0*in[1] - 3.0; │ │ │ │ │ +191 │ │ │ │ │ +192 out[4][0] = 0.0; │ │ │ │ │ +193 out[4][1] = sign_[2]; │ │ │ │ │ +194 │ │ │ │ │ +195 out[5][0] = 0.0; │ │ │ │ │ +196 out[5][1] = -6.0*in[0] + 3.0; │ │ │ │ │ +197 │ │ │ │ │ +198 out[6][0] = 0.0; │ │ │ │ │ +199 out[6][1] = sign_[3]; │ │ │ │ │ +200 │ │ │ │ │ +201 out[7][0] = 0.0; │ │ │ │ │ +202 out[7][1] = 6.0*in[0] - 3.0; │ │ │ │ │ +203 break; │ │ │ │ │ +204 default: │ │ │ │ │ +205 DUNE_THROW(RangeError, "Component out of range."); │ │ │ │ │ +206 } │ │ │ │ │ +207 } else { │ │ │ │ │ +208 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented"); │ │ │ │ │ +209 } │ │ │ │ │ +210 } │ │ │ │ │ +211 │ │ │ │ │ +_2_1_3 unsigned int _o_r_d_e_r () const │ │ │ │ │ +214 { │ │ │ │ │ +215 return 2; │ │ │ │ │ +216 } │ │ │ │ │ +217 │ │ │ │ │ +218 private: │ │ │ │ │ +219 std::array sign_; │ │ │ │ │ +220 }; │ │ │ │ │ +221} │ │ │ │ │ +222#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalcoefficients.hh:24 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_s_i_z_e │ │ │ │ │ -std::size_t size() const │ │ │ │ │ -number of coefficients │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalcoefficients.hh:39 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -BDM1Cube3DLocalCoefficients() │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ +quadrilateral. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:30 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n │ │ │ │ │ +void evaluateJacobian(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ +typename Traits::JacobianType > &out) const │ │ │ │ │ +Evaluate Jacobian of all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:95 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_p_a_r_t_i_a_l │ │ │ │ │ +void partial(const std::array< unsigned int, 2 > &order, const typename │ │ │ │ │ +Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const │ │ │ │ │ +Evaluate partial derivatives of all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:142 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +BDM1Cube2DLocalBasis() │ │ │ │ │ Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalcoefficients.hh:28 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_l_o_c_a_l_K_e_y │ │ │ │ │ -const LocalKey & localKey(std::size_t i) const │ │ │ │ │ -get i'th index │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalcoefficients.hh:45 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ -Describe position of one degree of freedom. │ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:24 │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:37 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_T_r_a_i_t_s │ │ │ │ │ +LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, │ │ │ │ │ +2 >, Dune::FieldMatrix< R, 2, 2 > > Traits │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:34 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_s_i_z_e │ │ │ │ │ +unsigned int size() const │ │ │ │ │ +number of shape functions │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:55 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +BDM1Cube2DLocalBasis(std::bitset< 4 > s) │ │ │ │ │ +Make set number s, where 0 <= s < 16. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:48 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_o_r_d_e_r │ │ │ │ │ +unsigned int order() const │ │ │ │ │ +Polynomial order of the shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:213 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n │ │ │ │ │ +void evaluateFunction(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ +typename Traits::RangeType > &out) const │ │ │ │ │ +Evaluate all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:66 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s │ │ │ │ │ +Type traits for LocalBasisVirtualInterface. │ │ │ │ │ +DDeeffiinniittiioonn common/localbasis.hh:35 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e │ │ │ │ │ +D DomainType │ │ │ │ │ +domain type │ │ │ │ │ +DDeeffiinniittiioonn common/localbasis.hh:43 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,33 +65,33 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference
│ │ │ │ +
brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include <vector>
│ │ │ │ #include <dune/geometry/quadraturerules.hh>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM1Cube3DLocalInterpolation< LB >
 First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. More...
class  Dune::BDM1Cube2DLocalInterpolation< LB >
 First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,23 +1,23 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference │ │ │ │ │ +brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference │ │ │ │ │ #include │ │ │ │ │ #include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_ _L_B_ _> │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_ _L_B_ _> │ │ │ │ │   First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ - hexahedron. _M_o_r_e_._._. │ │ │ │ │ + quadrilateral. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1cube3dlocalinterpolation.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube2dlocalinterpolation.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,134 +70,139 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarini1cube3dlocalinterpolation.hh
│ │ │ │ +
brezzidouglasmarini1cube2dlocalinterpolation.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
│ │ │ │
7
│ │ │ │
8#include <vector>
│ │ │ │
9
│ │ │ │
10#include <dune/geometry/quadraturerules.hh>
│ │ │ │
11
│ │ │ │
12namespace Dune
│ │ │ │
13{
│ │ │ │
14
│ │ │ │ -
24 template<class LB>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
26 {
│ │ │ │ -
27
│ │ │ │ -
28 public:
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
31 {
│ │ │ │ -
32 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
│ │ │ │ -
33 }
│ │ │ │ -
│ │ │ │ -
34
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
41 {
│ │ │ │ -
42 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
│ │ │ │ -
43 if (s & 1)
│ │ │ │ -
44 {
│ │ │ │ -
45 sign0 = -1.0;
│ │ │ │ -
46 }
│ │ │ │ -
47 if (s & 2)
│ │ │ │ -
48 {
│ │ │ │ -
49 sign1 = -1.0;
│ │ │ │ -
50 }
│ │ │ │ -
51 if (s & 4)
│ │ │ │ -
52 {
│ │ │ │ -
53 sign2 = -1.0;
│ │ │ │ -
54 }
│ │ │ │ -
55 if (s & 8)
│ │ │ │ -
56 {
│ │ │ │ -
57 sign3 = -1.0;
│ │ │ │ -
58 }
│ │ │ │ -
59 if (s & 16)
│ │ │ │ -
60 {
│ │ │ │ -
61 sign4 = -1.0;
│ │ │ │ -
62 }
│ │ │ │ -
63 if (s & 32)
│ │ │ │ -
64 {
│ │ │ │ -
65 sign5 = -1.0;
│ │ │ │ -
66 }
│ │ │ │ -
67
│ │ │ │ -
68 n0[0] = -1.0;
│ │ │ │ -
69 n0[1] = 0.0;
│ │ │ │ -
70 n0[2] = 0.0;
│ │ │ │ -
71 n1[0] = 1.0;
│ │ │ │ -
72 n1[1] = 0.0;
│ │ │ │ -
73 n1[2] = 0.0;
│ │ │ │ -
74 n2[0] = 0.0;
│ │ │ │ -
75 n2[1] = -1.0;
│ │ │ │ -
76 n2[2] = 0.0;
│ │ │ │ -
77 n3[0] = 0.0;
│ │ │ │ -
78 n3[1] = 1.0;
│ │ │ │ -
79 n3[2] = 0.0;
│ │ │ │ -
80 n4[0] = 0.0;
│ │ │ │ -
81 n4[1] = 0.0;
│ │ │ │ -
82 n4[2] = -1.0;
│ │ │ │ -
83 n5[0] = 0.0;
│ │ │ │ -
84 n5[1] = 0.0;
│ │ │ │ -
85 n5[2] = 1.0;
│ │ │ │ -
86 }
│ │ │ │ -
│ │ │ │ -
87
│ │ │ │ -
96 template<typename F, typename C>
│ │ │ │ -
│ │ │ │ -
97 void interpolate(const F& f, std::vector<C>& out) const
│ │ │ │ -
98 {
│ │ │ │ -
99 // f gives v*outer normal at a point on the edge!
│ │ │ │ -
100 typedef typename LB::Traits::RangeFieldType Scalar;
│ │ │ │ -
101 //typedef typename LB::Traits::DomainFieldType Vector;
│ │ │ │ -
102
│ │ │ │ -
103 DUNE_THROW( NotImplemented, "Interpolation for BDM1Cube3D finite elements is not implemented." );
│ │ │ │ -
104
│ │ │ │ -
105 out.resize(18);
│ │ │ │ -
106 fill(out.begin(), out.end(), 0.0);
│ │ │ │ +
23 template<class LB>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
25 {
│ │ │ │ +
26
│ │ │ │ +
27 public:
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
30 {
│ │ │ │ +
31 sign0 = sign1 = sign2 = sign3 = 1.0;
│ │ │ │ +
32 }
│ │ │ │ +
│ │ │ │ +
33
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
40 {
│ │ │ │ +
41 sign0 = sign1 = sign2 = sign3 = 1.0;
│ │ │ │ +
42 if (s & 1)
│ │ │ │ +
43 {
│ │ │ │ +
44 sign0 = -1.0;
│ │ │ │ +
45 }
│ │ │ │ +
46 if (s & 2)
│ │ │ │ +
47 {
│ │ │ │ +
48 sign1 = -1.0;
│ │ │ │ +
49 }
│ │ │ │ +
50 if (s & 4)
│ │ │ │ +
51 {
│ │ │ │ +
52 sign2 = -1.0;
│ │ │ │ +
53 }
│ │ │ │ +
54 if (s & 8)
│ │ │ │ +
55 {
│ │ │ │ +
56 sign3 = -1.0;
│ │ │ │ +
57 }
│ │ │ │ +
58
│ │ │ │ +
59 n0[0] = -1.0;
│ │ │ │ +
60 n0[1] = 0.0;
│ │ │ │ +
61 n1[0] = 1.0;
│ │ │ │ +
62 n1[1] = 0.0;
│ │ │ │ +
63 n2[0] = 0.0;
│ │ │ │ +
64 n2[1] = -1.0;
│ │ │ │ +
65 n3[0] = 0.0;
│ │ │ │ +
66 n3[1] = 1.0;
│ │ │ │ +
67 }
│ │ │ │ +
│ │ │ │ +
68
│ │ │ │ +
77 template<typename F, typename C>
│ │ │ │ +
│ │ │ │ +
78 void interpolate (const F& f, std::vector<C>& out) const
│ │ │ │ +
79 {
│ │ │ │ +
80 // f gives v*outer normal at a point on the edge!
│ │ │ │ +
81 typedef typename LB::Traits::RangeFieldType Scalar;
│ │ │ │ +
82 //typedef typename LB::Traits::DomainFieldType Vector;
│ │ │ │ +
83
│ │ │ │ +
84 out.resize(8);
│ │ │ │ +
85 fill(out.begin(), out.end(), 0.0);
│ │ │ │ +
86
│ │ │ │ +
87 const int qOrder = 4;
│ │ │ │ +
88 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
│ │ │ │ +
89
│ │ │ │ +
90 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
│ │ │ │ +
91 it != rule.end(); ++it)
│ │ │ │ +
92 {
│ │ │ │ +
93 Scalar qPos = it->position();
│ │ │ │ +
94 typename LB::Traits::DomainType localPos;
│ │ │ │ +
95
│ │ │ │ +
96 localPos[0] = 0.0;
│ │ │ │ +
97 localPos[1] = qPos;
│ │ │ │ +
98 auto y = f(localPos);
│ │ │ │ +
99 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
│ │ │ │ +
100 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
│ │ │ │ +
101
│ │ │ │ +
102 localPos[0] = 1.0;
│ │ │ │ +
103 localPos[1] = qPos;
│ │ │ │ +
104 y = f(localPos);
│ │ │ │ +
105 out[2] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;
│ │ │ │ +
106 out[3] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
│ │ │ │
107
│ │ │ │ -
108 const int qOrder = 4;
│ │ │ │ -
109 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
│ │ │ │ -
110
│ │ │ │ -
111 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
│ │ │ │ -
112 it != rule.end(); ++it)
│ │ │ │ -
113 {
│ │ │ │ -
114 // TODO: write interpolation
│ │ │ │ -
115 }
│ │ │ │ -
116 }
│ │ │ │ -
│ │ │ │ -
117
│ │ │ │ -
118 private:
│ │ │ │ -
119 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3, sign4, sign5;
│ │ │ │ -
120 typename LB::Traits::DomainType n0, n1, n2, n3, n4, n5;
│ │ │ │ -
121 };
│ │ │ │ +
108 localPos[0] = qPos;
│ │ │ │ +
109 localPos[1] = 0.0;
│ │ │ │ +
110 y = f(localPos);
│ │ │ │ +
111 out[4] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
│ │ │ │ +
112 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
│ │ │ │ +
113
│ │ │ │ +
114 localPos[0] = qPos;
│ │ │ │ +
115 localPos[1] = 1.0;
│ │ │ │ +
116 y = f(localPos);
│ │ │ │ +
117 out[6] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
│ │ │ │ +
118 out[7] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
│ │ │ │ +
119 }
│ │ │ │ +
120 }
│ │ │ │ +
│ │ │ │ +
121
│ │ │ │ +
122 private:
│ │ │ │ +
123 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
│ │ │ │ +
124 typename LB::Traits::DomainType n0, n1, n2, n3;
│ │ │ │ +
125 };
│ │ │ │
│ │ │ │ -
122} // end namespace Dune
│ │ │ │ -
123#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH
│ │ │ │ +
126}
│ │ │ │ +
127#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:26
│ │ │ │ -
BDM1Cube3DLocalInterpolation()
Standard constructor.
Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:30
│ │ │ │ -
void interpolate(const F &f, std::vector< C > &out) const
Interpolate a given function with shape functions.
Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:97
│ │ │ │ -
BDM1Cube3DLocalInterpolation(unsigned int s)
Make set number s, where 0 <= s < 64.
Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:40
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:25
│ │ │ │ +
void interpolate(const F &f, std::vector< C > &out) const
Interpolate a given function with shape functions.
Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:78
│ │ │ │ +
BDM1Cube2DLocalInterpolation(unsigned int s)
Make set number s, where 0 <= s < 16.
Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:39
│ │ │ │ +
BDM1Cube2DLocalInterpolation()
Standard constructor.
Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:29
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,134 +1,138 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d │ │ │ │ │ -brezzidouglasmarini1cube3dlocalinterpolation.hh │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d │ │ │ │ │ +brezzidouglasmarini1cube2dlocalinterpolation.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH │ │ │ │ │ 7 │ │ │ │ │ 8#include │ │ │ │ │ 9 │ │ │ │ │ 10#include │ │ │ │ │ 11 │ │ │ │ │ 12namespace _D_u_n_e │ │ │ │ │ 13{ │ │ │ │ │ 14 │ │ │ │ │ -24 template │ │ │ │ │ -_2_5 class _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -26 { │ │ │ │ │ -27 │ │ │ │ │ -28 public: │ │ │ │ │ -_3_0 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n() │ │ │ │ │ -31 { │ │ │ │ │ -32 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0; │ │ │ │ │ -33 } │ │ │ │ │ -34 │ │ │ │ │ -_4_0 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n(unsigned int s) │ │ │ │ │ -41 { │ │ │ │ │ -42 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0; │ │ │ │ │ -43 if (s & 1) │ │ │ │ │ -44 { │ │ │ │ │ -45 sign0 = -1.0; │ │ │ │ │ -46 } │ │ │ │ │ -47 if (s & 2) │ │ │ │ │ -48 { │ │ │ │ │ -49 sign1 = -1.0; │ │ │ │ │ -50 } │ │ │ │ │ -51 if (s & 4) │ │ │ │ │ -52 { │ │ │ │ │ -53 sign2 = -1.0; │ │ │ │ │ -54 } │ │ │ │ │ -55 if (s & 8) │ │ │ │ │ -56 { │ │ │ │ │ -57 sign3 = -1.0; │ │ │ │ │ -58 } │ │ │ │ │ -59 if (s & 16) │ │ │ │ │ -60 { │ │ │ │ │ -61 sign4 = -1.0; │ │ │ │ │ -62 } │ │ │ │ │ -63 if (s & 32) │ │ │ │ │ -64 { │ │ │ │ │ -65 sign5 = -1.0; │ │ │ │ │ -66 } │ │ │ │ │ -67 │ │ │ │ │ -68 n0[0] = -1.0; │ │ │ │ │ -69 n0[1] = 0.0; │ │ │ │ │ -70 n0[2] = 0.0; │ │ │ │ │ -71 n1[0] = 1.0; │ │ │ │ │ -72 n1[1] = 0.0; │ │ │ │ │ -73 n1[2] = 0.0; │ │ │ │ │ -74 n2[0] = 0.0; │ │ │ │ │ -75 n2[1] = -1.0; │ │ │ │ │ -76 n2[2] = 0.0; │ │ │ │ │ -77 n3[0] = 0.0; │ │ │ │ │ -78 n3[1] = 1.0; │ │ │ │ │ -79 n3[2] = 0.0; │ │ │ │ │ -80 n4[0] = 0.0; │ │ │ │ │ -81 n4[1] = 0.0; │ │ │ │ │ -82 n4[2] = -1.0; │ │ │ │ │ -83 n5[0] = 0.0; │ │ │ │ │ -84 n5[1] = 0.0; │ │ │ │ │ -85 n5[2] = 1.0; │ │ │ │ │ -86 } │ │ │ │ │ -87 │ │ │ │ │ -96 template │ │ │ │ │ -_9_7 void _i_n_t_e_r_p_o_l_a_t_e(const F& f, std::vector& out) const │ │ │ │ │ -98 { │ │ │ │ │ -99 // f gives v*outer normal at a point on the edge! │ │ │ │ │ -100 typedef typename LB::Traits::RangeFieldType Scalar; │ │ │ │ │ -101 //typedef typename LB::Traits::DomainFieldType Vector; │ │ │ │ │ -102 │ │ │ │ │ -103 DUNE_THROW( NotImplemented, "Interpolation for BDM1Cube3D finite elements │ │ │ │ │ -is not implemented." ); │ │ │ │ │ -104 │ │ │ │ │ -105 out.resize(18); │ │ │ │ │ -106 fill(out.begin(), out.end(), 0.0); │ │ │ │ │ -107 │ │ │ │ │ -108 const int qOrder = 4; │ │ │ │ │ -109 const QuadratureRule& rule = QuadratureRules::rule │ │ │ │ │ +23 template │ │ │ │ │ +_2_4 class _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +25 { │ │ │ │ │ +26 │ │ │ │ │ +27 public: │ │ │ │ │ +_2_9 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n () │ │ │ │ │ +30 { │ │ │ │ │ +31 sign0 = sign1 = sign2 = sign3 = 1.0; │ │ │ │ │ +32 } │ │ │ │ │ +33 │ │ │ │ │ +_3_9 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n (unsigned int s) │ │ │ │ │ +40 { │ │ │ │ │ +41 sign0 = sign1 = sign2 = sign3 = 1.0; │ │ │ │ │ +42 if (s & 1) │ │ │ │ │ +43 { │ │ │ │ │ +44 sign0 = -1.0; │ │ │ │ │ +45 } │ │ │ │ │ +46 if (s & 2) │ │ │ │ │ +47 { │ │ │ │ │ +48 sign1 = -1.0; │ │ │ │ │ +49 } │ │ │ │ │ +50 if (s & 4) │ │ │ │ │ +51 { │ │ │ │ │ +52 sign2 = -1.0; │ │ │ │ │ +53 } │ │ │ │ │ +54 if (s & 8) │ │ │ │ │ +55 { │ │ │ │ │ +56 sign3 = -1.0; │ │ │ │ │ +57 } │ │ │ │ │ +58 │ │ │ │ │ +59 n0[0] = -1.0; │ │ │ │ │ +60 n0[1] = 0.0; │ │ │ │ │ +61 n1[0] = 1.0; │ │ │ │ │ +62 n1[1] = 0.0; │ │ │ │ │ +63 n2[0] = 0.0; │ │ │ │ │ +64 n2[1] = -1.0; │ │ │ │ │ +65 n3[0] = 0.0; │ │ │ │ │ +66 n3[1] = 1.0; │ │ │ │ │ +67 } │ │ │ │ │ +68 │ │ │ │ │ +77 template │ │ │ │ │ +_7_8 void _i_n_t_e_r_p_o_l_a_t_e (const F& f, std::vector& out) const │ │ │ │ │ +79 { │ │ │ │ │ +80 // f gives v*outer normal at a point on the edge! │ │ │ │ │ +81 typedef typename LB::Traits::RangeFieldType Scalar; │ │ │ │ │ +82 //typedef typename LB::Traits::DomainFieldType Vector; │ │ │ │ │ +83 │ │ │ │ │ +84 out.resize(8); │ │ │ │ │ +85 fill(out.begin(), out.end(), 0.0); │ │ │ │ │ +86 │ │ │ │ │ +87 const int qOrder = 4; │ │ │ │ │ +88 const QuadratureRule& rule = QuadratureRules::rule │ │ │ │ │ (GeometryTypes::cube(1), qOrder); │ │ │ │ │ -110 │ │ │ │ │ -111 for (typename QuadratureRule::const_iterator it = rule.begin(); │ │ │ │ │ -112 it != rule.end(); ++it) │ │ │ │ │ -113 { │ │ │ │ │ -114 // TODO: write interpolation │ │ │ │ │ -115 } │ │ │ │ │ -116 } │ │ │ │ │ -117 │ │ │ │ │ -118 private: │ │ │ │ │ -119 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3, sign4, │ │ │ │ │ -sign5; │ │ │ │ │ -120 typename LB::Traits::DomainType n0, n1, n2, n3, n4, n5; │ │ │ │ │ -121 }; │ │ │ │ │ -122} // end namespace Dune │ │ │ │ │ -123#endif / │ │ │ │ │ -/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH │ │ │ │ │ +89 │ │ │ │ │ +90 for (typename QuadratureRule::const_iterator it = rule.begin(); │ │ │ │ │ +91 it != rule.end(); ++it) │ │ │ │ │ +92 { │ │ │ │ │ +93 Scalar qPos = it->position(); │ │ │ │ │ +94 typename LB::Traits::DomainType localPos; │ │ │ │ │ +95 │ │ │ │ │ +96 localPos[0] = 0.0; │ │ │ │ │ +97 localPos[1] = qPos; │ │ │ │ │ +98 auto y = f(localPos); │ │ │ │ │ +99 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0; │ │ │ │ │ +100 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight(); │ │ │ │ │ +101 │ │ │ │ │ +102 localPos[0] = 1.0; │ │ │ │ │ +103 localPos[1] = qPos; │ │ │ │ │ +104 y = f(localPos); │ │ │ │ │ +105 out[2] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1; │ │ │ │ │ +106 out[3] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight(); │ │ │ │ │ +107 │ │ │ │ │ +108 localPos[0] = qPos; │ │ │ │ │ +109 localPos[1] = 0.0; │ │ │ │ │ +110 y = f(localPos); │ │ │ │ │ +111 out[4] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2; │ │ │ │ │ +112 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight(); │ │ │ │ │ +113 │ │ │ │ │ +114 localPos[0] = qPos; │ │ │ │ │ +115 localPos[1] = 1.0; │ │ │ │ │ +116 y = f(localPos); │ │ │ │ │ +117 out[6] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3; │ │ │ │ │ +118 out[7] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight(); │ │ │ │ │ +119 } │ │ │ │ │ +120 } │ │ │ │ │ +121 │ │ │ │ │ +122 private: │ │ │ │ │ +123 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3; │ │ │ │ │ +124 typename LB::Traits::DomainType n0, n1, n2, n3; │ │ │ │ │ +125 }; │ │ │ │ │ +126} │ │ │ │ │ +127#endif / │ │ │ │ │ +/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalinterpolation.hh:26 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -BDM1Cube3DLocalInterpolation() │ │ │ │ │ -Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalinterpolation.hh:30 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ +quadrilateral. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalinterpolation.hh:25 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ void interpolate(const F &f, std::vector< C > &out) const │ │ │ │ │ Interpolate a given function with shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalinterpolation.hh:97 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -BDM1Cube3DLocalInterpolation(unsigned int s) │ │ │ │ │ -Make set number s, where 0 <= s < 64. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalinterpolation.hh:40 │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalinterpolation.hh:78 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +BDM1Cube2DLocalInterpolation(unsigned int s) │ │ │ │ │ +Make set number s, where 0 <= s < 16. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalinterpolation.hh:39 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +BDM1Cube2DLocalInterpolation() │ │ │ │ │ +Standard constructor. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalinterpolation.hh:29 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1cube3dlocalbasis.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube3d.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,37 +65,36 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini1cube3dlocalbasis.hh File Reference
│ │ │ │ +
brezzidouglasmarini1cube3d.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <array>
│ │ │ │ -#include <bitset>
│ │ │ │ -#include <numeric>
│ │ │ │ -#include <vector>
│ │ │ │ -#include <dune/common/fmatrix.hh>
│ │ │ │ -#include "../../common/localbasis.hh"
│ │ │ │ + │ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM1Cube3DLocalBasis< D, R >
 First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. More...
class  Dune::BDM1Cube3DLocalFiniteElement< D, R >
 First order Brezzi-Douglas-Marini shape functions on hexahedron. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,27 +1,27 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini1cube3dlocalbasis.hh File Reference │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ +brezzidouglasmarini1cube3d.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ +#include "_._._/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h" │ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h" │ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_<_ _D_,_ _R_ _> │ │ │ │ │ -  First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ - hexahedron. _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_ _> │ │ │ │ │ +  First order Brezzi-Douglas-Marini shape functions on hexahedron. │ │ │ │ │ + _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1cube3dlocalbasis.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube3d.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,322 +70,123 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarini1cube3dlocalbasis.hh
│ │ │ │ +
brezzidouglasmarini1cube3d.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH
│ │ │ │
7
│ │ │ │ -
8#include <array>
│ │ │ │ -
9#include <bitset>
│ │ │ │ -
10#include <numeric>
│ │ │ │ -
11#include <vector>
│ │ │ │ -
12
│ │ │ │ -
13#include <dune/common/fmatrix.hh>
│ │ │ │ +
8#include <dune/geometry/type.hh>
│ │ │ │ +
9
│ │ │ │ +
10#include "../common/localfiniteelementtraits.hh"
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
14
│ │ │ │ -
15#include "../../common/localbasis.hh"
│ │ │ │ -
16
│ │ │ │ -
17namespace Dune
│ │ │ │ -
18{
│ │ │ │ -
29 template<class D, class R>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
31 {
│ │ │ │ -
32
│ │ │ │ -
33 public:
│ │ │ │ - │ │ │ │ -
35 R,3,Dune::FieldVector<R,3>,
│ │ │ │ -
36 Dune::FieldMatrix<R,3,3> > Traits;
│ │ │ │ -
37
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
40 {
│ │ │ │ -
41 for (size_t i=0; i<6; i++)
│ │ │ │ -
42 sign_[i] = 1.0;
│ │ │ │ -
43 }
│ │ │ │ -
│ │ │ │ -
44
│ │ │ │ -
│ │ │ │ -
50 BDM1Cube3DLocalBasis(std::bitset<6> s)
│ │ │ │ -
51 {
│ │ │ │ -
52 for (size_t i=0; i<6; i++)
│ │ │ │ -
53 sign_[i] = s[i] ? -1.0 : 1.0;
│ │ │ │ -
54 }
│ │ │ │ -
│ │ │ │ -
55
│ │ │ │ -
│ │ │ │ -
57 unsigned int size() const
│ │ │ │ -
58 {
│ │ │ │ -
59 return 18;
│ │ │ │ -
60 }
│ │ │ │ -
│ │ │ │ -
61
│ │ │ │ -
│ │ │ │ -
68 inline void evaluateFunction(const typename Traits::DomainType& in,
│ │ │ │ -
69 std::vector<typename Traits::RangeType>& out) const
│ │ │ │ -
70 {
│ │ │ │ -
71 out.resize(size());
│ │ │ │ -
72
│ │ │ │ -
73 out[0][0] = sign_[0] * (in[0] - 1.0);
│ │ │ │ -
74 out[0][1] = 0;
│ │ │ │ -
75 out[0][2] = 0;
│ │ │ │ -
76 out[1][0] = sign_[1] * in[0];
│ │ │ │ -
77 out[1][1] = 0;
│ │ │ │ -
78 out[1][2] = 0;
│ │ │ │ -
79 out[2][0] = 0;
│ │ │ │ -
80 out[2][1] = sign_[2] * (in[1] - 1.0);
│ │ │ │ -
81 out[2][2] = 0;
│ │ │ │ -
82 out[3][0] = 0;
│ │ │ │ -
83 out[3][1] = sign_[3] * in[1];
│ │ │ │ -
84 out[3][2] = 0;
│ │ │ │ -
85 out[4][0] = 0;
│ │ │ │ -
86 out[4][1] = 0;
│ │ │ │ -
87 out[4][2] = sign_[4] * (in[2] - 1.0);
│ │ │ │ -
88 out[5][0] = 0;
│ │ │ │ -
89 out[5][1] = 0;
│ │ │ │ -
90 out[5][2] = sign_[5] * in[2];
│ │ │ │ -
91 out[6][0] = 6.0 * in[0] * in[1] - 3 * in[0]-6 * in[1] + 3.0;
│ │ │ │ -
92 out[6][1] = -3.0 * in[1] * in[1] + 3 * in[1];
│ │ │ │ -
93 out[6][2] = 0;
│ │ │ │ -
94 out[7][0] = -6.0 * in[0] * in[1] + 3 * in[0];
│ │ │ │ -
95 out[7][1] = 3.0 * in[1] * in[1] - 3 * in[1];
│ │ │ │ -
96 out[7][2] = 0;
│ │ │ │ -
97 out[8][0] = 3.0 * in[0] * in[0] - 3 * in[0];
│ │ │ │ -
98 out[8][1] = -6.0 * in[0] * in[1] + 3 * in[1]+6 * in[0]-3.0;
│ │ │ │ -
99 out[8][2] = 0;
│ │ │ │ -
100 out[9][0] = -3.0 * in[0] * in[0] + 3 * in[0];
│ │ │ │ -
101 out[9][1] = 6.0 * in[0] * in[1] - 3 * in[1];
│ │ │ │ -
102 out[9][2] = 0;
│ │ │ │ -
103 out[10][0] = -3.0 * in[0] * in[0] + 3 * in[0];
│ │ │ │ -
104 out[10][1] = 0;
│ │ │ │ -
105 out[10][2] = 6.0 * in[0] * in[2]-6 * in[0]-3 * in[2] + 3.0;
│ │ │ │ -
106 out[11][0] = 3.0 * in[0] * in[0]-3 * in[0];
│ │ │ │ -
107 out[11][1] = 0;
│ │ │ │ -
108 out[11][2] = -6.0 * in[0] * in[2] + 3 * in[2];
│ │ │ │ -
109 out[12][0] = -6.0 * in[0] * in[2]+6 * in[2] + 3 * in[0]-3.0;
│ │ │ │ -
110 out[12][1] = 0;
│ │ │ │ -
111 out[12][2] = 3.0 * in[2] * in[2]-3 * in[2];
│ │ │ │ -
112 out[13][0] = -3 * in[0]+6 * in[0] * in[2];
│ │ │ │ -
113 out[13][1] = 0;
│ │ │ │ -
114 out[13][2] = -3.0 * in[2] * in[2] + 3 * in[2];
│ │ │ │ -
115 out[14][0] = 0;
│ │ │ │ -
116 out[14][1] = 6.0 * in[1] * in[2]-3 * in[1]-6 * in[2] + 3.0;
│ │ │ │ -
117 out[14][2] = -3 * in[2] * in[2] + 3 * in[2];
│ │ │ │ -
118 out[15][0] = 0;
│ │ │ │ -
119 out[15][1] = -6.0 * in[1] * in[2] + 3 * in[1];
│ │ │ │ -
120 out[15][2] = 3.0 * in[2] * in[2]-3 * in[2];
│ │ │ │ -
121 out[16][0] = 0;
│ │ │ │ -
122 out[16][1] = 3.0 * in[1] * in[1]-3 * in[1];
│ │ │ │ -
123 out[16][2] = -6.0 * in[1] * in[2] + 3 * in[2]+6 * in[1]-3.0;
│ │ │ │ -
124 out[17][0] = 0;
│ │ │ │ -
125 out[17][1] = -3.0 * in[1] * in[1] + 3 * in[1];
│ │ │ │ -
126 out[17][2] = 6.0 * in[1] * in[2] - 3.0 * in[2];
│ │ │ │ -
127 }
│ │ │ │ -
│ │ │ │ -
128
│ │ │ │ -
│ │ │ │ -
135 inline void evaluateJacobian(const typename Traits::DomainType& in,
│ │ │ │ -
136 std::vector<typename Traits::JacobianType>& out) const
│ │ │ │ -
137 {
│ │ │ │ -
138 out.resize(size());
│ │ │ │ -
139
│ │ │ │ -
140 out[0][0] = { sign_[0], 0, 0};
│ │ │ │ -
141 out[0][1] = { 0, 0, 0};
│ │ │ │ -
142 out[0][2] = { 0, 0, 0};
│ │ │ │ -
143
│ │ │ │ -
144 out[1][0] = { sign_[1], 0, 0};
│ │ │ │ -
145 out[1][1] = { 0, 0, 0};
│ │ │ │ -
146 out[1][2] = { 0, 0, 0};
│ │ │ │ -
147
│ │ │ │ -
148 out[2][0] = { 0, 0, 0};
│ │ │ │ -
149 out[2][1] = { 0, sign_[2], 0};
│ │ │ │ -
150 out[2][2] = { 0, 0, 0};
│ │ │ │ -
151
│ │ │ │ -
152 out[3][0] = { 0, 0, 0};
│ │ │ │ -
153 out[3][1] = { 0, sign_[3], 0};
│ │ │ │ -
154 out[3][2] = { 0, 0, 0};
│ │ │ │ -
155
│ │ │ │ -
156 out[4][0] = { 0, 0, 0};
│ │ │ │ -
157 out[4][1] = { 0, 0, 0};
│ │ │ │ -
158 out[4][2] = { 0, 0, sign_[4]};
│ │ │ │ -
159
│ │ │ │ -
160 out[5][0] = { 0, 0, 0};
│ │ │ │ -
161 out[5][1] = { 0, 0, 0};
│ │ │ │ -
162 out[5][2] = { 0, 0, sign_[5]};
│ │ │ │ -
163
│ │ │ │ -
164 out[6][0] = { 6*in[1]-3, 6*in[0]-6, 0};
│ │ │ │ -
165 out[6][1] = { 0, -6*in[1]+3, 0};
│ │ │ │ -
166 out[6][2] = { 0, 0, 0};
│ │ │ │ -
167
│ │ │ │ -
168 out[7][0] = {-6*in[1]+3, -6*in[0], 0};
│ │ │ │ -
169 out[7][1] = { 0, 6*in[1]-3, 0};
│ │ │ │ -
170 out[7][2] = { 0, 0, 0};
│ │ │ │ -
171
│ │ │ │ -
172 out[8][0] = { 6*in[0]-3, 0, 0};
│ │ │ │ -
173 out[8][1] = {-6*in[1]+6, -6*in[0]+3, 0};
│ │ │ │ -
174 out[8][2] = { 0, 0, 0};
│ │ │ │ -
175
│ │ │ │ -
176 out[9][0] = {-6*in[0]+3, 0, 0};
│ │ │ │ -
177 out[9][1] = { 6*in[1], 6*in[0]-3, 0};
│ │ │ │ -
178 out[9][2] = { 0, 0, 0};
│ │ │ │ -
179
│ │ │ │ -
180 out[10][0] = {-6*in[0]+3, 0, 0};
│ │ │ │ -
181 out[10][1] = { 0, 0, 0};
│ │ │ │ -
182 out[10][2] = { 6*in[2]-6, 0, 6*in[0]-3};
│ │ │ │ -
183
│ │ │ │ -
184 out[11][0] = { 6*in[0]-3, 0, 0};
│ │ │ │ -
185 out[11][1] = { 0, 0, 0};
│ │ │ │ -
186 out[11][2] = { -6*in[2], 0, -6*in[0]+3};
│ │ │ │ -
187
│ │ │ │ -
188 out[12][0] = {-6*in[2]+3, 0, -6*in[0]+6};
│ │ │ │ -
189 out[12][1] = { 0, 0, 0};
│ │ │ │ -
190 out[12][2] = { 0, 0, 6*in[2]-3};
│ │ │ │ -
191
│ │ │ │ -
192 out[13][0] = { 6*in[2]-3, 0, 6*in[0]};
│ │ │ │ -
193 out[13][1] = { 0, 0, 0};
│ │ │ │ -
194 out[13][2] = { 0, 0, -6*in[2]+3};
│ │ │ │ -
195
│ │ │ │ -
196 out[14][0] = { 0, 0, 0};
│ │ │ │ -
197 out[14][1] = { 0, 6*in[2]-3, 6*in[1]-6};
│ │ │ │ -
198 out[14][2] = { 0, 0, -6*in[2]+3};
│ │ │ │ -
199
│ │ │ │ -
200 out[15][0] = { 0, 0, 0};
│ │ │ │ -
201 out[15][1] = { 0, -6*in[2]+3, -6*in[1]};
│ │ │ │ -
202 out[15][2] = { 0, 0, 6*in[2]-3};
│ │ │ │ -
203
│ │ │ │ -
204 out[16][0] = { 0, 0, 0};
│ │ │ │ -
205 out[16][1] = { 0, 6*in[1]-3, 0};
│ │ │ │ -
206 out[16][2] = { 0, -6*in[2]+6, -6*in[1]+3};
│ │ │ │ -
207
│ │ │ │ -
208 out[17][0] = { 0, 0, 0};
│ │ │ │ -
209 out[17][1] = { 0, -6*in[1]+3, 0};
│ │ │ │ -
210 out[17][2] = { 0, 6*in[2], 6*in[1]-3};
│ │ │ │ -
211 }
│ │ │ │ -
│ │ │ │ -
212
│ │ │ │ -
│ │ │ │ -
214 void partial (const std::array<unsigned int, 3>& order,
│ │ │ │ -
215 const typename Traits::DomainType& in, // position
│ │ │ │ -
216 std::vector<typename Traits::RangeType>& out) const // return value
│ │ │ │ -
217 {
│ │ │ │ -
218 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
│ │ │ │ -
219 if (totalOrder == 0) {
│ │ │ │ -
220 evaluateFunction(in, out);
│ │ │ │ -
221 } else if (totalOrder == 1) {
│ │ │ │ -
222 out.resize(size());
│ │ │ │ -
223 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
│ │ │ │ -
224
│ │ │ │ -
225 switch (direction) {
│ │ │ │ -
226 case 0:
│ │ │ │ -
227 out[0] = { sign_[0], 0, 0};
│ │ │ │ -
228 out[1] = { sign_[1], 0, 0};
│ │ │ │ -
229 out[2] = { 0, 0, 0};
│ │ │ │ -
230 out[3] = { 0, 0, 0};
│ │ │ │ -
231 out[4] = { 0, 0, 0};
│ │ │ │ -
232 out[5] = { 0, 0, 0};
│ │ │ │ -
233 out[6] = { 6*in[1]-3, 0, 0};
│ │ │ │ -
234 out[7] = {-6*in[1]+3, 0, 0};
│ │ │ │ -
235 out[8] = { 6*in[0]-3, -6*in[1]+6, 0};
│ │ │ │ -
236 out[9] = {-6*in[0]+3, 6*in[1], 0};
│ │ │ │ -
237 out[10] = {-6*in[0]+3, 0, 6*in[2]-6};
│ │ │ │ -
238 out[11] = { 6*in[0]-3, 0, -6*in[2]};
│ │ │ │ -
239 out[12] = {-6*in[2]+3, 0, 0};
│ │ │ │ -
240 out[13] = { 6*in[2]-3, 0, 0};
│ │ │ │ -
241 out[14] = { 0, 0, 0};
│ │ │ │ -
242 out[15] = { 0, 0, 0};
│ │ │ │ -
243 out[16] = { 0, 0, 0};
│ │ │ │ -
244 out[17] = { 0, 0, 0};
│ │ │ │ -
245 break;
│ │ │ │ -
246 case 1:
│ │ │ │ -
247 out[0] = { 0, 0, 0};
│ │ │ │ -
248 out[1] = { 0, 0, 0};
│ │ │ │ -
249 out[2] = { 0, sign_[2], 0};
│ │ │ │ -
250 out[3] = { 0, sign_[3], 0};
│ │ │ │ -
251 out[4] = { 0, 0, 0};
│ │ │ │ -
252 out[5] = { 0, 0, 0};
│ │ │ │ -
253 out[6] = { 6*in[0]-6, -6*in[1]+3, 0};
│ │ │ │ -
254 out[7] = { -6*in[0], 6*in[1]-3, 0};
│ │ │ │ -
255 out[8] = { 0, -6*in[0]+3, 0};
│ │ │ │ -
256 out[9] = { 0, 6*in[0]-3, 0};
│ │ │ │ -
257 out[10] = { 0, 0, 0};
│ │ │ │ -
258 out[11] = { 0, 0, 0};
│ │ │ │ -
259 out[12] = { 0, 0, 0};
│ │ │ │ -
260 out[13] = { 0, 0, 0};
│ │ │ │ -
261 out[14] = { 0, 6*in[2]-3, 0};
│ │ │ │ -
262 out[15] = { 0, -6*in[2]+3, 0};
│ │ │ │ -
263 out[16] = { 0, 6*in[1]-3, -6*in[2]+6};
│ │ │ │ -
264 out[17] = { 0, -6*in[1]+3, 6*in[2]};
│ │ │ │ -
265 break;
│ │ │ │ -
266 case 2:
│ │ │ │ -
267 out[0] = { 0, 0, 0};
│ │ │ │ -
268 out[1] = { 0, 0, 0};
│ │ │ │ -
269 out[2] = { 0, 0, 0};
│ │ │ │ -
270 out[3] = { 0, 0, 0};
│ │ │ │ -
271 out[4] = { 0, 0, sign_[4]};
│ │ │ │ -
272 out[5] = { 0, 0, sign_[5]};
│ │ │ │ -
273 out[6] = { 0, 0, 0};
│ │ │ │ -
274 out[7] = { 0, 0, 0};
│ │ │ │ -
275 out[8] = { 0, 0, 0};
│ │ │ │ -
276 out[9] = { 0, 0, 0};
│ │ │ │ -
277 out[10] = { 0, 0, 6*in[0]-3};
│ │ │ │ -
278 out[11] = { 0, 0, -6*in[0]+3};
│ │ │ │ -
279 out[12] = {-6*in[0]+6, 0, 6*in[2]-3};
│ │ │ │ -
280 out[13] = { 6*in[0], 0, -6*in[2]+3};
│ │ │ │ -
281 out[14] = { 0, 6*in[1]-6, -6*in[2]+3};
│ │ │ │ -
282 out[15] = { 0, -6*in[1], 6*in[2]-3};
│ │ │ │ -
283 out[16] = { 0, 0, -6*in[1]+3};
│ │ │ │ -
284 out[17] = { 0, 0, 6*in[1]-3};
│ │ │ │ -
285 break;
│ │ │ │ -
286 default:
│ │ │ │ -
287 DUNE_THROW(RangeError, "Component out of range.");
│ │ │ │ -
288 }
│ │ │ │ -
289 } else {
│ │ │ │ -
290 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
│ │ │ │ -
291 }
│ │ │ │ -
292 }
│ │ │ │ -
│ │ │ │ -
293
│ │ │ │ -
│ │ │ │ -
295 unsigned int order() const
│ │ │ │ -
296 {
│ │ │ │ -
297 return 2;
│ │ │ │ -
298 }
│ │ │ │ -
│ │ │ │ -
299
│ │ │ │ -
300 private:
│ │ │ │ -
301 std::array<R,6> sign_;
│ │ │ │ -
302 };
│ │ │ │ -
│ │ │ │ -
303} // end namespace Dune
│ │ │ │ -
304#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH
│ │ │ │ +
15namespace Dune
│ │ │ │ +
16{
│ │ │ │ +
25 template<class D, class R>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
27 {
│ │ │ │ +
28
│ │ │ │ +
29 public:
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
34
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
37 {}
│ │ │ │ +
│ │ │ │ +
38
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
45 : basis(s)
│ │ │ │ +
46 , interpolation(s)
│ │ │ │ +
47 {}
│ │ │ │ +
│ │ │ │ +
48
│ │ │ │ +
│ │ │ │ +
49 const typename Traits::LocalBasisType& localBasis() const
│ │ │ │ +
50 {
│ │ │ │ +
51 return basis;
│ │ │ │ +
52 }
│ │ │ │ +
│ │ │ │ +
53
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
55 {
│ │ │ │ +
56 return coefficients;
│ │ │ │ +
57 }
│ │ │ │ +
│ │ │ │ +
58
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
60 {
│ │ │ │ +
61 return interpolation;
│ │ │ │ +
62 }
│ │ │ │ +
│ │ │ │ +
63
│ │ │ │ +
│ │ │ │ +
65 unsigned int size () const
│ │ │ │ +
66 {
│ │ │ │ +
67 return basis.size();
│ │ │ │ +
68 }
│ │ │ │ +
│ │ │ │ +
69
│ │ │ │ +
│ │ │ │ +
70 static constexpr GeometryType type()
│ │ │ │ +
71 {
│ │ │ │ +
72 return GeometryTypes::hexahedron;
│ │ │ │ +
73 }
│ │ │ │ +
│ │ │ │ +
74
│ │ │ │ +
75 private:
│ │ │ │ + │ │ │ │ +
77 BDM1Cube3DLocalCoefficients coefficients;
│ │ │ │ + │ │ │ │ +
79 };
│ │ │ │ +
│ │ │ │ +
80} // end namespace Dune
│ │ │ │ +
81#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on hexahedron.
Definition brezzidouglasmarini1cube3d.hh:27
│ │ │ │ +
BDM1Cube3DLocalFiniteElement()
Standard constructor.
Definition brezzidouglasmarini1cube3d.hh:36
│ │ │ │ +
unsigned int size() const
Number of shape functions in this finite element.
Definition brezzidouglasmarini1cube3d.hh:65
│ │ │ │ +
const Traits::LocalCoefficientsType & localCoefficients() const
Definition brezzidouglasmarini1cube3d.hh:54
│ │ │ │ +
static constexpr GeometryType type()
Definition brezzidouglasmarini1cube3d.hh:70
│ │ │ │ +
LocalFiniteElementTraits< BDM1Cube3DLocalBasis< D, R >, BDM1Cube3DLocalCoefficients, BDM1Cube3DLocalInterpolation< BDM1Cube3DLocalBasis< D, R > > > Traits
Definition brezzidouglasmarini1cube3d.hh:33
│ │ │ │ +
const Traits::LocalInterpolationType & localInterpolation() const
Definition brezzidouglasmarini1cube3d.hh:59
│ │ │ │ +
BDM1Cube3DLocalFiniteElement(int s)
Make set number s, where 0 <= s < 64.
Definition brezzidouglasmarini1cube3d.hh:44
│ │ │ │ +
const Traits::LocalBasisType & localBasis() const
Definition brezzidouglasmarini1cube3d.hh:49
│ │ │ │
First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:31
│ │ │ │ -
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:135
│ │ │ │ -
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:68
│ │ │ │ -
LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
Definition brezzidouglasmarini1cube3dlocalbasis.hh:36
│ │ │ │ -
void partial(const std::array< unsigned int, 3 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of all shape functions.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:214
│ │ │ │ -
BDM1Cube3DLocalBasis(std::bitset< 6 > s)
Make set number s, where 0 <= s < 64.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:50
│ │ │ │ -
unsigned int order() const
Polynomial order of the shape functions.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:295
│ │ │ │ -
BDM1Cube3DLocalBasis()
Standard constructor.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:39
│ │ │ │ -
unsigned int size() const
number of shape functions
Definition brezzidouglasmarini1cube3dlocalbasis.hh:57
│ │ │ │ -
Type traits for LocalBasisVirtualInterface.
Definition common/localbasis.hh:35
│ │ │ │ -
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │ +
Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra.
Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:24
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:26
│ │ │ │ +
traits helper struct
Definition localfiniteelementtraits.hh:13
│ │ │ │ +
LB LocalBasisType
Definition localfiniteelementtraits.hh:16
│ │ │ │ +
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:20
│ │ │ │ +
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:24
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,334 +1,139 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d │ │ │ │ │ -brezzidouglasmarini1cube3dlocalbasis.hh │ │ │ │ │ +brezzidouglasmarini1cube3d.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ -9#include │ │ │ │ │ -10#include │ │ │ │ │ -11#include │ │ │ │ │ -12 │ │ │ │ │ -13#include │ │ │ │ │ +8#include │ │ │ │ │ +9 │ │ │ │ │ +10#include "../common/localfiniteelementtraits.hh" │ │ │ │ │ +11#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ +12#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h" │ │ │ │ │ +13#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h" │ │ │ │ │ 14 │ │ │ │ │ -15#include "../../common/localbasis.hh" │ │ │ │ │ -16 │ │ │ │ │ -17namespace _D_u_n_e │ │ │ │ │ -18{ │ │ │ │ │ -29 template │ │ │ │ │ -_3_0 class _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -31 { │ │ │ │ │ -32 │ │ │ │ │ -33 public: │ │ │ │ │ -34 typedef _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_<_D_,_3_,_D_u_n_e_:_:_F_i_e_l_d_V_e_c_t_o_r_<_D_,_3_>, │ │ │ │ │ -35 R,3,Dune::FieldVector, │ │ │ │ │ -_3_6 Dune::FieldMatrix > _T_r_a_i_t_s; │ │ │ │ │ -37 │ │ │ │ │ -_3_9 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s() │ │ │ │ │ -40 { │ │ │ │ │ -41 for (size_t i=0; i<6; i++) │ │ │ │ │ -42 sign_[i] = 1.0; │ │ │ │ │ -43 } │ │ │ │ │ -44 │ │ │ │ │ -_5_0 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s(std::bitset<6> s) │ │ │ │ │ -51 { │ │ │ │ │ -52 for (size_t i=0; i<6; i++) │ │ │ │ │ -53 sign_[i] = s[i] ? -1.0 : 1.0; │ │ │ │ │ -54 } │ │ │ │ │ -55 │ │ │ │ │ -_5_7 unsigned int _s_i_z_e() const │ │ │ │ │ -58 { │ │ │ │ │ -59 return 18; │ │ │ │ │ -60 } │ │ │ │ │ -61 │ │ │ │ │ -_6_8 inline void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ -69 std::vector& out) const │ │ │ │ │ -70 { │ │ │ │ │ -71 out.resize(_s_i_z_e()); │ │ │ │ │ -72 │ │ │ │ │ -73 out[0][0] = sign_[0] * (in[0] - 1.0); │ │ │ │ │ -74 out[0][1] = 0; │ │ │ │ │ -75 out[0][2] = 0; │ │ │ │ │ -76 out[1][0] = sign_[1] * in[0]; │ │ │ │ │ -77 out[1][1] = 0; │ │ │ │ │ -78 out[1][2] = 0; │ │ │ │ │ -79 out[2][0] = 0; │ │ │ │ │ -80 out[2][1] = sign_[2] * (in[1] - 1.0); │ │ │ │ │ -81 out[2][2] = 0; │ │ │ │ │ -82 out[3][0] = 0; │ │ │ │ │ -83 out[3][1] = sign_[3] * in[1]; │ │ │ │ │ -84 out[3][2] = 0; │ │ │ │ │ -85 out[4][0] = 0; │ │ │ │ │ -86 out[4][1] = 0; │ │ │ │ │ -87 out[4][2] = sign_[4] * (in[2] - 1.0); │ │ │ │ │ -88 out[5][0] = 0; │ │ │ │ │ -89 out[5][1] = 0; │ │ │ │ │ -90 out[5][2] = sign_[5] * in[2]; │ │ │ │ │ -91 out[6][0] = 6.0 * in[0] * in[1] - 3 * in[0]-6 * in[1] + 3.0; │ │ │ │ │ -92 out[6][1] = -3.0 * in[1] * in[1] + 3 * in[1]; │ │ │ │ │ -93 out[6][2] = 0; │ │ │ │ │ -94 out[7][0] = -6.0 * in[0] * in[1] + 3 * in[0]; │ │ │ │ │ -95 out[7][1] = 3.0 * in[1] * in[1] - 3 * in[1]; │ │ │ │ │ -96 out[7][2] = 0; │ │ │ │ │ -97 out[8][0] = 3.0 * in[0] * in[0] - 3 * in[0]; │ │ │ │ │ -98 out[8][1] = -6.0 * in[0] * in[1] + 3 * in[1]+6 * in[0]-3.0; │ │ │ │ │ -99 out[8][2] = 0; │ │ │ │ │ -100 out[9][0] = -3.0 * in[0] * in[0] + 3 * in[0]; │ │ │ │ │ -101 out[9][1] = 6.0 * in[0] * in[1] - 3 * in[1]; │ │ │ │ │ -102 out[9][2] = 0; │ │ │ │ │ -103 out[10][0] = -3.0 * in[0] * in[0] + 3 * in[0]; │ │ │ │ │ -104 out[10][1] = 0; │ │ │ │ │ -105 out[10][2] = 6.0 * in[0] * in[2]-6 * in[0]-3 * in[2] + 3.0; │ │ │ │ │ -106 out[11][0] = 3.0 * in[0] * in[0]-3 * in[0]; │ │ │ │ │ -107 out[11][1] = 0; │ │ │ │ │ -108 out[11][2] = -6.0 * in[0] * in[2] + 3 * in[2]; │ │ │ │ │ -109 out[12][0] = -6.0 * in[0] * in[2]+6 * in[2] + 3 * in[0]-3.0; │ │ │ │ │ -110 out[12][1] = 0; │ │ │ │ │ -111 out[12][2] = 3.0 * in[2] * in[2]-3 * in[2]; │ │ │ │ │ -112 out[13][0] = -3 * in[0]+6 * in[0] * in[2]; │ │ │ │ │ -113 out[13][1] = 0; │ │ │ │ │ -114 out[13][2] = -3.0 * in[2] * in[2] + 3 * in[2]; │ │ │ │ │ -115 out[14][0] = 0; │ │ │ │ │ -116 out[14][1] = 6.0 * in[1] * in[2]-3 * in[1]-6 * in[2] + 3.0; │ │ │ │ │ -117 out[14][2] = -3 * in[2] * in[2] + 3 * in[2]; │ │ │ │ │ -118 out[15][0] = 0; │ │ │ │ │ -119 out[15][1] = -6.0 * in[1] * in[2] + 3 * in[1]; │ │ │ │ │ -120 out[15][2] = 3.0 * in[2] * in[2]-3 * in[2]; │ │ │ │ │ -121 out[16][0] = 0; │ │ │ │ │ -122 out[16][1] = 3.0 * in[1] * in[1]-3 * in[1]; │ │ │ │ │ -123 out[16][2] = -6.0 * in[1] * in[2] + 3 * in[2]+6 * in[1]-3.0; │ │ │ │ │ -124 out[17][0] = 0; │ │ │ │ │ -125 out[17][1] = -3.0 * in[1] * in[1] + 3 * in[1]; │ │ │ │ │ -126 out[17][2] = 6.0 * in[1] * in[2] - 3.0 * in[2]; │ │ │ │ │ -127 } │ │ │ │ │ -128 │ │ │ │ │ -_1_3_5 inline void _e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n(const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ -136 std::vector& out) const │ │ │ │ │ -137 { │ │ │ │ │ -138 out.resize(_s_i_z_e()); │ │ │ │ │ -139 │ │ │ │ │ -140 out[0][0] = { sign_[0], 0, 0}; │ │ │ │ │ -141 out[0][1] = { 0, 0, 0}; │ │ │ │ │ -142 out[0][2] = { 0, 0, 0}; │ │ │ │ │ -143 │ │ │ │ │ -144 out[1][0] = { sign_[1], 0, 0}; │ │ │ │ │ -145 out[1][1] = { 0, 0, 0}; │ │ │ │ │ -146 out[1][2] = { 0, 0, 0}; │ │ │ │ │ -147 │ │ │ │ │ -148 out[2][0] = { 0, 0, 0}; │ │ │ │ │ -149 out[2][1] = { 0, sign_[2], 0}; │ │ │ │ │ -150 out[2][2] = { 0, 0, 0}; │ │ │ │ │ -151 │ │ │ │ │ -152 out[3][0] = { 0, 0, 0}; │ │ │ │ │ -153 out[3][1] = { 0, sign_[3], 0}; │ │ │ │ │ -154 out[3][2] = { 0, 0, 0}; │ │ │ │ │ -155 │ │ │ │ │ -156 out[4][0] = { 0, 0, 0}; │ │ │ │ │ -157 out[4][1] = { 0, 0, 0}; │ │ │ │ │ -158 out[4][2] = { 0, 0, sign_[4]}; │ │ │ │ │ -159 │ │ │ │ │ -160 out[5][0] = { 0, 0, 0}; │ │ │ │ │ -161 out[5][1] = { 0, 0, 0}; │ │ │ │ │ -162 out[5][2] = { 0, 0, sign_[5]}; │ │ │ │ │ -163 │ │ │ │ │ -164 out[6][0] = { 6*in[1]-3, 6*in[0]-6, 0}; │ │ │ │ │ -165 out[6][1] = { 0, -6*in[1]+3, 0}; │ │ │ │ │ -166 out[6][2] = { 0, 0, 0}; │ │ │ │ │ -167 │ │ │ │ │ -168 out[7][0] = {-6*in[1]+3, -6*in[0], 0}; │ │ │ │ │ -169 out[7][1] = { 0, 6*in[1]-3, 0}; │ │ │ │ │ -170 out[7][2] = { 0, 0, 0}; │ │ │ │ │ -171 │ │ │ │ │ -172 out[8][0] = { 6*in[0]-3, 0, 0}; │ │ │ │ │ -173 out[8][1] = {-6*in[1]+6, -6*in[0]+3, 0}; │ │ │ │ │ -174 out[8][2] = { 0, 0, 0}; │ │ │ │ │ -175 │ │ │ │ │ -176 out[9][0] = {-6*in[0]+3, 0, 0}; │ │ │ │ │ -177 out[9][1] = { 6*in[1], 6*in[0]-3, 0}; │ │ │ │ │ -178 out[9][2] = { 0, 0, 0}; │ │ │ │ │ -179 │ │ │ │ │ -180 out[10][0] = {-6*in[0]+3, 0, 0}; │ │ │ │ │ -181 out[10][1] = { 0, 0, 0}; │ │ │ │ │ -182 out[10][2] = { 6*in[2]-6, 0, 6*in[0]-3}; │ │ │ │ │ -183 │ │ │ │ │ -184 out[11][0] = { 6*in[0]-3, 0, 0}; │ │ │ │ │ -185 out[11][1] = { 0, 0, 0}; │ │ │ │ │ -186 out[11][2] = { -6*in[2], 0, -6*in[0]+3}; │ │ │ │ │ -187 │ │ │ │ │ -188 out[12][0] = {-6*in[2]+3, 0, -6*in[0]+6}; │ │ │ │ │ -189 out[12][1] = { 0, 0, 0}; │ │ │ │ │ -190 out[12][2] = { 0, 0, 6*in[2]-3}; │ │ │ │ │ -191 │ │ │ │ │ -192 out[13][0] = { 6*in[2]-3, 0, 6*in[0]}; │ │ │ │ │ -193 out[13][1] = { 0, 0, 0}; │ │ │ │ │ -194 out[13][2] = { 0, 0, -6*in[2]+3}; │ │ │ │ │ -195 │ │ │ │ │ -196 out[14][0] = { 0, 0, 0}; │ │ │ │ │ -197 out[14][1] = { 0, 6*in[2]-3, 6*in[1]-6}; │ │ │ │ │ -198 out[14][2] = { 0, 0, -6*in[2]+3}; │ │ │ │ │ -199 │ │ │ │ │ -200 out[15][0] = { 0, 0, 0}; │ │ │ │ │ -201 out[15][1] = { 0, -6*in[2]+3, -6*in[1]}; │ │ │ │ │ -202 out[15][2] = { 0, 0, 6*in[2]-3}; │ │ │ │ │ -203 │ │ │ │ │ -204 out[16][0] = { 0, 0, 0}; │ │ │ │ │ -205 out[16][1] = { 0, 6*in[1]-3, 0}; │ │ │ │ │ -206 out[16][2] = { 0, -6*in[2]+6, -6*in[1]+3}; │ │ │ │ │ -207 │ │ │ │ │ -208 out[17][0] = { 0, 0, 0}; │ │ │ │ │ -209 out[17][1] = { 0, -6*in[1]+3, 0}; │ │ │ │ │ -210 out[17][2] = { 0, 6*in[2], 6*in[1]-3}; │ │ │ │ │ -211 } │ │ │ │ │ -212 │ │ │ │ │ -_2_1_4 void _p_a_r_t_i_a_l (const std::array& _o_r_d_e_r, │ │ │ │ │ -215 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, // position │ │ │ │ │ -216 std::vector& out) const // return value │ │ │ │ │ -217 { │ │ │ │ │ -218 auto totalOrder = std::accumulate(_o_r_d_e_r.begin(), _o_r_d_e_r.end(), 0); │ │ │ │ │ -219 if (totalOrder == 0) { │ │ │ │ │ -220 _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(in, out); │ │ │ │ │ -221 } else if (totalOrder == 1) { │ │ │ │ │ -222 out.resize(_s_i_z_e()); │ │ │ │ │ -223 auto const direction = std::distance(_o_r_d_e_r.begin(), std::find(_o_r_d_e_r.begin │ │ │ │ │ -(), _o_r_d_e_r.end(), 1)); │ │ │ │ │ -224 │ │ │ │ │ -225 switch (direction) { │ │ │ │ │ -226 case 0: │ │ │ │ │ -227 out[0] = { sign_[0], 0, 0}; │ │ │ │ │ -228 out[1] = { sign_[1], 0, 0}; │ │ │ │ │ -229 out[2] = { 0, 0, 0}; │ │ │ │ │ -230 out[3] = { 0, 0, 0}; │ │ │ │ │ -231 out[4] = { 0, 0, 0}; │ │ │ │ │ -232 out[5] = { 0, 0, 0}; │ │ │ │ │ -233 out[6] = { 6*in[1]-3, 0, 0}; │ │ │ │ │ -234 out[7] = {-6*in[1]+3, 0, 0}; │ │ │ │ │ -235 out[8] = { 6*in[0]-3, -6*in[1]+6, 0}; │ │ │ │ │ -236 out[9] = {-6*in[0]+3, 6*in[1], 0}; │ │ │ │ │ -237 out[10] = {-6*in[0]+3, 0, 6*in[2]-6}; │ │ │ │ │ -238 out[11] = { 6*in[0]-3, 0, -6*in[2]}; │ │ │ │ │ -239 out[12] = {-6*in[2]+3, 0, 0}; │ │ │ │ │ -240 out[13] = { 6*in[2]-3, 0, 0}; │ │ │ │ │ -241 out[14] = { 0, 0, 0}; │ │ │ │ │ -242 out[15] = { 0, 0, 0}; │ │ │ │ │ -243 out[16] = { 0, 0, 0}; │ │ │ │ │ -244 out[17] = { 0, 0, 0}; │ │ │ │ │ -245 break; │ │ │ │ │ -246 case 1: │ │ │ │ │ -247 out[0] = { 0, 0, 0}; │ │ │ │ │ -248 out[1] = { 0, 0, 0}; │ │ │ │ │ -249 out[2] = { 0, sign_[2], 0}; │ │ │ │ │ -250 out[3] = { 0, sign_[3], 0}; │ │ │ │ │ -251 out[4] = { 0, 0, 0}; │ │ │ │ │ -252 out[5] = { 0, 0, 0}; │ │ │ │ │ -253 out[6] = { 6*in[0]-6, -6*in[1]+3, 0}; │ │ │ │ │ -254 out[7] = { -6*in[0], 6*in[1]-3, 0}; │ │ │ │ │ -255 out[8] = { 0, -6*in[0]+3, 0}; │ │ │ │ │ -256 out[9] = { 0, 6*in[0]-3, 0}; │ │ │ │ │ -257 out[10] = { 0, 0, 0}; │ │ │ │ │ -258 out[11] = { 0, 0, 0}; │ │ │ │ │ -259 out[12] = { 0, 0, 0}; │ │ │ │ │ -260 out[13] = { 0, 0, 0}; │ │ │ │ │ -261 out[14] = { 0, 6*in[2]-3, 0}; │ │ │ │ │ -262 out[15] = { 0, -6*in[2]+3, 0}; │ │ │ │ │ -263 out[16] = { 0, 6*in[1]-3, -6*in[2]+6}; │ │ │ │ │ -264 out[17] = { 0, -6*in[1]+3, 6*in[2]}; │ │ │ │ │ -265 break; │ │ │ │ │ -266 case 2: │ │ │ │ │ -267 out[0] = { 0, 0, 0}; │ │ │ │ │ -268 out[1] = { 0, 0, 0}; │ │ │ │ │ -269 out[2] = { 0, 0, 0}; │ │ │ │ │ -270 out[3] = { 0, 0, 0}; │ │ │ │ │ -271 out[4] = { 0, 0, sign_[4]}; │ │ │ │ │ -272 out[5] = { 0, 0, sign_[5]}; │ │ │ │ │ -273 out[6] = { 0, 0, 0}; │ │ │ │ │ -274 out[7] = { 0, 0, 0}; │ │ │ │ │ -275 out[8] = { 0, 0, 0}; │ │ │ │ │ -276 out[9] = { 0, 0, 0}; │ │ │ │ │ -277 out[10] = { 0, 0, 6*in[0]-3}; │ │ │ │ │ -278 out[11] = { 0, 0, -6*in[0]+3}; │ │ │ │ │ -279 out[12] = {-6*in[0]+6, 0, 6*in[2]-3}; │ │ │ │ │ -280 out[13] = { 6*in[0], 0, -6*in[2]+3}; │ │ │ │ │ -281 out[14] = { 0, 6*in[1]-6, -6*in[2]+3}; │ │ │ │ │ -282 out[15] = { 0, -6*in[1], 6*in[2]-3}; │ │ │ │ │ -283 out[16] = { 0, 0, -6*in[1]+3}; │ │ │ │ │ -284 out[17] = { 0, 0, 6*in[1]-3}; │ │ │ │ │ -285 break; │ │ │ │ │ -286 default: │ │ │ │ │ -287 DUNE_THROW(RangeError, "Component out of range."); │ │ │ │ │ -288 } │ │ │ │ │ -289 } else { │ │ │ │ │ -290 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented"); │ │ │ │ │ -291 } │ │ │ │ │ -292 } │ │ │ │ │ -293 │ │ │ │ │ -_2_9_5 unsigned int _o_r_d_e_r() const │ │ │ │ │ -296 { │ │ │ │ │ -297 return 2; │ │ │ │ │ -298 } │ │ │ │ │ -299 │ │ │ │ │ -300 private: │ │ │ │ │ -301 std::array sign_; │ │ │ │ │ -302 }; │ │ │ │ │ -303} // end namespace Dune │ │ │ │ │ -304#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH │ │ │ │ │ +15namespace _D_u_n_e │ │ │ │ │ +16{ │ │ │ │ │ +25 template │ │ │ │ │ +_2_6 class _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +27 { │ │ │ │ │ +28 │ │ │ │ │ +29 public: │ │ │ │ │ +30 typedef _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s< │ │ │ │ │ +31 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_>, │ │ │ │ │ +32 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s, │ │ │ │ │ +_3_3 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> > > _T_r_a_i_t_s; │ │ │ │ │ +34 │ │ │ │ │ +_3_6 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t() │ │ │ │ │ +37 {} │ │ │ │ │ +38 │ │ │ │ │ +_4_4 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(int s) │ │ │ │ │ +45 : basis(s) │ │ │ │ │ +46 , interpolation(s) │ │ │ │ │ +47 {} │ │ │ │ │ +48 │ │ │ │ │ +_4_9 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e& _l_o_c_a_l_B_a_s_i_s() const │ │ │ │ │ +50 { │ │ │ │ │ +51 return basis; │ │ │ │ │ +52 } │ │ │ │ │ +53 │ │ │ │ │ +_5_4 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e& _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s() const │ │ │ │ │ +55 { │ │ │ │ │ +56 return coefficients; │ │ │ │ │ +57 } │ │ │ │ │ +58 │ │ │ │ │ +_5_9 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e& _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n() const │ │ │ │ │ +60 { │ │ │ │ │ +61 return interpolation; │ │ │ │ │ +62 } │ │ │ │ │ +63 │ │ │ │ │ +_6_5 unsigned int _s_i_z_e () const │ │ │ │ │ +66 { │ │ │ │ │ +67 return basis.size(); │ │ │ │ │ +68 } │ │ │ │ │ +69 │ │ │ │ │ +_7_0 static constexpr GeometryType _t_y_p_e() │ │ │ │ │ +71 { │ │ │ │ │ +72 return GeometryTypes::hexahedron; │ │ │ │ │ +73 } │ │ │ │ │ +74 │ │ │ │ │ +75 private: │ │ │ │ │ +76 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> basis; │ │ │ │ │ +77 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s coefficients; │ │ │ │ │ +78 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> > interpolation; │ │ │ │ │ +79 }; │ │ │ │ │ +80} // end namespace Dune │ │ │ │ │ +81#endif / │ │ │ │ │ +/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_l_o_c_a_l_b_a_s_i_s_._h_h │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on hexahedron. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3d.hh:27 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BDM1Cube3DLocalFiniteElement() │ │ │ │ │ +Standard constructor. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3d.hh:36 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_s_i_z_e │ │ │ │ │ +unsigned int size() const │ │ │ │ │ +Number of shape functions in this finite element. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3d.hh:65 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +const Traits::LocalCoefficientsType & localCoefficients() const │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3d.hh:54 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_t_y_p_e │ │ │ │ │ +static constexpr GeometryType type() │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3d.hh:70 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s │ │ │ │ │ +LocalFiniteElementTraits< BDM1Cube3DLocalBasis< D, R >, │ │ │ │ │ +BDM1Cube3DLocalCoefficients, BDM1Cube3DLocalInterpolation< │ │ │ │ │ +BDM1Cube3DLocalBasis< D, R > > > Traits │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3d.hh:33 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +const Traits::LocalInterpolationType & localInterpolation() const │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3d.hh:59 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BDM1Cube3DLocalFiniteElement(int s) │ │ │ │ │ +Make set number s, where 0 <= s < 64. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3d.hh:44 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_B_a_s_i_s │ │ │ │ │ +const Traits::LocalBasisType & localBasis() const │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3d.hh:49 │ │ │ │ │ _D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. │ │ │ │ │ DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:31 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n │ │ │ │ │ -void evaluateJacobian(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ -typename Traits::JacobianType > &out) const │ │ │ │ │ -Evaluate Jacobian of all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:135 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n │ │ │ │ │ -void evaluateFunction(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ -typename Traits::RangeType > &out) const │ │ │ │ │ -Evaluate all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:68 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_T_r_a_i_t_s │ │ │ │ │ -LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, │ │ │ │ │ -3 >, Dune::FieldMatrix< R, 3, 3 > > Traits │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:36 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_p_a_r_t_i_a_l │ │ │ │ │ -void partial(const std::array< unsigned int, 3 > &order, const typename │ │ │ │ │ -Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const │ │ │ │ │ -Evaluate partial derivatives of all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:214 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -BDM1Cube3DLocalBasis(std::bitset< 6 > s) │ │ │ │ │ -Make set number s, where 0 <= s < 64. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:50 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_o_r_d_e_r │ │ │ │ │ -unsigned int order() const │ │ │ │ │ -Polynomial order of the shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:295 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -BDM1Cube3DLocalBasis() │ │ │ │ │ -Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:39 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_s_i_z_e │ │ │ │ │ -unsigned int size() const │ │ │ │ │ -number of shape functions │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:57 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s │ │ │ │ │ -Type traits for LocalBasisVirtualInterface. │ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:35 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e │ │ │ │ │ -D DomainType │ │ │ │ │ -domain type │ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:43 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalcoefficients.hh:24 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalinterpolation.hh:26 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s │ │ │ │ │ +traits helper struct │ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:13 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e │ │ │ │ │ +LB LocalBasisType │ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:16 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e │ │ │ │ │ +LC LocalCoefficientsType │ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:20 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e │ │ │ │ │ +LI LocalInterpolationType │ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:24 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00083.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube2d.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,33 +65,36 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference
│ │ │ │ +
brezzidouglasmarini1cube2d.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <vector>
│ │ │ │ -#include <dune/geometry/quadraturerules.hh>
│ │ │ │ + │ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM1Simplex2DLocalInterpolation< LB >
 First order Brezzi-Douglas-Marini shape functions on the reference triangle. More...
class  Dune::BDM1Cube2DLocalFiniteElement< D, R >
 First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,23 +1,27 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ +brezzidouglasmarini1cube2d.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ +#include "_._._/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h" │ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h" │ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_ _L_B_ _> │ │ │ │ │ -  First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ - triangle. _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_ _> │ │ │ │ │ +  First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ + _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00083_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1simplex2dlocalinterpolation.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube2d.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,130 +70,123 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarini1simplex2dlocalinterpolation.hh
│ │ │ │ +
brezzidouglasmarini1cube2d.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
│ │ │ │
7
│ │ │ │ -
8#include <vector>
│ │ │ │ +
8#include <dune/geometry/type.hh>
│ │ │ │
9
│ │ │ │ -
10#include <dune/geometry/quadraturerules.hh>
│ │ │ │ -
11
│ │ │ │ -
12namespace Dune
│ │ │ │ -
13{
│ │ │ │ -
22 template<class LB>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
24 {
│ │ │ │ -
25
│ │ │ │ -
26 public:
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
29 {
│ │ │ │ -
30 sign0 = sign1 = sign2 = 1.0;
│ │ │ │ -
31 }
│ │ │ │ -
│ │ │ │ -
32
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
39 {
│ │ │ │ -
40 using std::sqrt;
│ │ │ │ -
41 sign0 = sign1 = sign2 = 1.0;
│ │ │ │ -
42 if (s & 1)
│ │ │ │ -
43 {
│ │ │ │ -
44 sign0 = -1.0;
│ │ │ │ -
45 }
│ │ │ │ -
46 if (s & 2)
│ │ │ │ -
47 {
│ │ │ │ -
48 sign1 = -1.0;
│ │ │ │ -
49 }
│ │ │ │ -
50 if (s & 4)
│ │ │ │ -
51 {
│ │ │ │ -
52 sign2 = -1.0;
│ │ │ │ -
53 }
│ │ │ │ -
54
│ │ │ │ -
55 n0[0] = 0.0;
│ │ │ │ -
56 n0[1] = -1.0;
│ │ │ │ -
57 n1[0] = -1.0;
│ │ │ │ -
58 n1[1] = 0.0;
│ │ │ │ -
59 n2[0] = 1.0/sqrt(2.0);
│ │ │ │ -
60 n2[1] = 1.0/sqrt(2.0);
│ │ │ │ -
61 c0 = 0.5*n0[0] - 1.0*n0[1];
│ │ │ │ -
62 c1 = -1.0*n1[0] + 0.5*n1[1];
│ │ │ │ -
63 c2 = 0.5*n2[0] + 0.5*n2[1];
│ │ │ │ -
64 }
│ │ │ │ -
│ │ │ │ -
65
│ │ │ │ -
74 template<typename F, typename C>
│ │ │ │ -
│ │ │ │ -
75 void interpolate (const F& f, std::vector<C>& out) const
│ │ │ │ -
76 {
│ │ │ │ -
77 // f gives v*outer normal at a point on the edge!
│ │ │ │ -
78 typedef typename LB::Traits::RangeFieldType Scalar;
│ │ │ │ -
79
│ │ │ │ -
80 out.resize(6);
│ │ │ │ -
81 fill(out.begin(), out.end(), 0.0);
│ │ │ │ -
82
│ │ │ │ -
83 const int qOrder = 4;
│ │ │ │ -
84 const Dune::QuadratureRule<Scalar,1>& rule = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder);
│ │ │ │ -
85
│ │ │ │ -
86 for (typename Dune::QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
│ │ │ │ -
87 {
│ │ │ │ -
88 Scalar qPos = it->position();
│ │ │ │ -
89 typename LB::Traits::DomainType localPos;
│ │ │ │ -
90
│ │ │ │ -
91 localPos[0] = qPos;
│ │ │ │ -
92 localPos[1] = 0.0;
│ │ │ │ -
93 auto y = f(localPos);
│ │ │ │ -
94 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;
│ │ │ │ -
95 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight()/c0;
│ │ │ │ -
96
│ │ │ │ -
97 localPos[0] = 0.0;
│ │ │ │ -
98 localPos[1] = qPos;
│ │ │ │ -
99 y = f(localPos);
│ │ │ │ -
100 out[1] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1/c1;
│ │ │ │ -
101 out[4] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight()/c1;
│ │ │ │ -
102
│ │ │ │ -
103 localPos[0] = 1.0 - qPos;
│ │ │ │ -
104 localPos[1] = qPos;
│ │ │ │ -
105 y = f(localPos);
│ │ │ │ -
106 out[2] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;
│ │ │ │ -
107 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(2.0*qPos - 1.0)*it->weight()/c2;
│ │ │ │ -
108 }
│ │ │ │ -
109 }
│ │ │ │ -
│ │ │ │ -
110
│ │ │ │ -
111 private:
│ │ │ │ -
112 typename LB::Traits::RangeFieldType sign0,sign1,sign2;
│ │ │ │ -
113 typename LB::Traits::DomainType n0,n1,n2;
│ │ │ │ -
114 typename LB::Traits::RangeFieldType c0,c1,c2;
│ │ │ │ -
115 };
│ │ │ │ -
│ │ │ │ -
116}
│ │ │ │ -
117
│ │ │ │ -
118#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
│ │ │ │ +
10#include "../common/localfiniteelementtraits.hh"
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
14
│ │ │ │ +
15namespace Dune
│ │ │ │ +
16{
│ │ │ │ +
25 template<class D, class R>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
27 {
│ │ │ │ +
28
│ │ │ │ +
29 public:
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
34
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
37 {}
│ │ │ │ +
│ │ │ │ +
38
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
45 basis(s),
│ │ │ │ +
46 interpolation(s)
│ │ │ │ +
47 {}
│ │ │ │ +
│ │ │ │ +
48
│ │ │ │ +
│ │ │ │ +
49 const typename Traits::LocalBasisType& localBasis () const
│ │ │ │ +
50 {
│ │ │ │ +
51 return basis;
│ │ │ │ +
52 }
│ │ │ │ +
│ │ │ │ +
53
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
55 {
│ │ │ │ +
56 return coefficients;
│ │ │ │ +
57 }
│ │ │ │ +
│ │ │ │ +
58
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
60 {
│ │ │ │ +
61 return interpolation;
│ │ │ │ +
62 }
│ │ │ │ +
│ │ │ │ +
63
│ │ │ │ +
│ │ │ │ +
65 unsigned int size () const
│ │ │ │ +
66 {
│ │ │ │ +
67 return basis.size();
│ │ │ │ +
68 }
│ │ │ │ +
│ │ │ │ +
69
│ │ │ │ +
│ │ │ │ +
70 static constexpr GeometryType type ()
│ │ │ │ +
71 {
│ │ │ │ +
72 return GeometryTypes::quadrilateral;
│ │ │ │ +
73 }
│ │ │ │ +
│ │ │ │ +
74
│ │ │ │ +
75 private:
│ │ │ │ + │ │ │ │ +
77 BDM1Cube2DLocalCoefficients coefficients;
│ │ │ │ + │ │ │ │ +
79 };
│ │ │ │ +
│ │ │ │ +
80}
│ │ │ │ +
81#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on the reference triangle.
Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:24
│ │ │ │ -
void interpolate(const F &f, std::vector< C > &out) const
Interpolate a given function with shape functions.
Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:75
│ │ │ │ -
BDM1Simplex2DLocalInterpolation(unsigned int s)
Make set number s, where 0 <= s < 8.
Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:38
│ │ │ │ -
BDM1Simplex2DLocalInterpolation()
Standard constructor.
Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:28
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini1cube2d.hh:27
│ │ │ │ +
const Traits::LocalBasisType & localBasis() const
Definition brezzidouglasmarini1cube2d.hh:49
│ │ │ │ +
LocalFiniteElementTraits< BDM1Cube2DLocalBasis< D, R >, BDM1Cube2DLocalCoefficients, BDM1Cube2DLocalInterpolation< BDM1Cube2DLocalBasis< D, R > > > Traits
Definition brezzidouglasmarini1cube2d.hh:33
│ │ │ │ +
static constexpr GeometryType type()
Definition brezzidouglasmarini1cube2d.hh:70
│ │ │ │ +
const Traits::LocalCoefficientsType & localCoefficients() const
Definition brezzidouglasmarini1cube2d.hh:54
│ │ │ │ +
unsigned int size() const
Number of shape functions in this finite element.
Definition brezzidouglasmarini1cube2d.hh:65
│ │ │ │ +
const Traits::LocalInterpolationType & localInterpolation() const
Definition brezzidouglasmarini1cube2d.hh:59
│ │ │ │ +
BDM1Cube2DLocalFiniteElement()
Standard constructor.
Definition brezzidouglasmarini1cube2d.hh:36
│ │ │ │ +
BDM1Cube2DLocalFiniteElement(int s)
Make set number s, where 0 <= s < 16.
Definition brezzidouglasmarini1cube2d.hh:44
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:30
│ │ │ │ +
Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.
Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:24
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:25
│ │ │ │ +
traits helper struct
Definition localfiniteelementtraits.hh:13
│ │ │ │ +
LB LocalBasisType
Definition localfiniteelementtraits.hh:16
│ │ │ │ +
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:20
│ │ │ │ +
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:24
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,131 +1,141 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d │ │ │ │ │ -brezzidouglasmarini1simplex2dlocalinterpolation.hh │ │ │ │ │ +brezzidouglasmarini1cube2d.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef │ │ │ │ │ -DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH │ │ │ │ │ -6#define │ │ │ │ │ -DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ +8#include │ │ │ │ │ 9 │ │ │ │ │ -10#include │ │ │ │ │ -11 │ │ │ │ │ -12namespace _D_u_n_e │ │ │ │ │ -13{ │ │ │ │ │ -22 template │ │ │ │ │ -_2_3 class _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -24 { │ │ │ │ │ -25 │ │ │ │ │ -26 public: │ │ │ │ │ -_2_8 _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n () │ │ │ │ │ -29 { │ │ │ │ │ -30 sign0 = sign1 = sign2 = 1.0; │ │ │ │ │ -31 } │ │ │ │ │ -32 │ │ │ │ │ -_3_8 _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n (unsigned int s) │ │ │ │ │ -39 { │ │ │ │ │ -40 using std::sqrt; │ │ │ │ │ -41 sign0 = sign1 = sign2 = 1.0; │ │ │ │ │ -42 if (s & 1) │ │ │ │ │ -43 { │ │ │ │ │ -44 sign0 = -1.0; │ │ │ │ │ -45 } │ │ │ │ │ -46 if (s & 2) │ │ │ │ │ -47 { │ │ │ │ │ -48 sign1 = -1.0; │ │ │ │ │ -49 } │ │ │ │ │ -50 if (s & 4) │ │ │ │ │ -51 { │ │ │ │ │ -52 sign2 = -1.0; │ │ │ │ │ -53 } │ │ │ │ │ -54 │ │ │ │ │ -55 n0[0] = 0.0; │ │ │ │ │ -56 n0[1] = -1.0; │ │ │ │ │ -57 n1[0] = -1.0; │ │ │ │ │ -58 n1[1] = 0.0; │ │ │ │ │ -59 n2[0] = 1.0/sqrt(2.0); │ │ │ │ │ -60 n2[1] = 1.0/sqrt(2.0); │ │ │ │ │ -61 c0 = 0.5*n0[0] - 1.0*n0[1]; │ │ │ │ │ -62 c1 = -1.0*n1[0] + 0.5*n1[1]; │ │ │ │ │ -63 c2 = 0.5*n2[0] + 0.5*n2[1]; │ │ │ │ │ -64 } │ │ │ │ │ -65 │ │ │ │ │ -74 template │ │ │ │ │ -_7_5 void _i_n_t_e_r_p_o_l_a_t_e (const F& f, std::vector& out) const │ │ │ │ │ -76 { │ │ │ │ │ -77 // f gives v*outer normal at a point on the edge! │ │ │ │ │ -78 typedef typename LB::Traits::RangeFieldType Scalar; │ │ │ │ │ -79 │ │ │ │ │ -80 out.resize(6); │ │ │ │ │ -81 fill(out.begin(), out.end(), 0.0); │ │ │ │ │ -82 │ │ │ │ │ -83 const int qOrder = 4; │ │ │ │ │ -84 const Dune::QuadratureRule& rule = Dune:: │ │ │ │ │ -QuadratureRules::rule(Dune::GeometryTypes::simplex(1), qOrder); │ │ │ │ │ -85 │ │ │ │ │ -86 for (typename Dune::QuadratureRule::const_iterator it=rule.begin │ │ │ │ │ -(); it!=rule.end(); ++it) │ │ │ │ │ -87 { │ │ │ │ │ -88 Scalar qPos = it->position(); │ │ │ │ │ -89 typename LB::Traits::DomainType localPos; │ │ │ │ │ -90 │ │ │ │ │ -91 localPos[0] = qPos; │ │ │ │ │ -92 localPos[1] = 0.0; │ │ │ │ │ -93 auto y = f(localPos); │ │ │ │ │ -94 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0; │ │ │ │ │ -95 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight()/c0; │ │ │ │ │ -96 │ │ │ │ │ -97 localPos[0] = 0.0; │ │ │ │ │ -98 localPos[1] = qPos; │ │ │ │ │ -99 y = f(localPos); │ │ │ │ │ -100 out[1] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1/c1; │ │ │ │ │ -101 out[4] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight()/c1; │ │ │ │ │ -102 │ │ │ │ │ -103 localPos[0] = 1.0 - qPos; │ │ │ │ │ -104 localPos[1] = qPos; │ │ │ │ │ -105 y = f(localPos); │ │ │ │ │ -106 out[2] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2; │ │ │ │ │ -107 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(2.0*qPos - 1.0)*it->weight()/c2; │ │ │ │ │ -108 } │ │ │ │ │ -109 } │ │ │ │ │ -110 │ │ │ │ │ -111 private: │ │ │ │ │ -112 typename LB::Traits::RangeFieldType sign0,sign1,sign2; │ │ │ │ │ -113 typename LB::Traits::DomainType n0,n1,n2; │ │ │ │ │ -114 typename LB::Traits::RangeFieldType c0,c1,c2; │ │ │ │ │ -115 }; │ │ │ │ │ -116} │ │ │ │ │ -117 │ │ │ │ │ -118#endif / │ │ │ │ │ -/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH │ │ │ │ │ +10#include "../common/localfiniteelementtraits.hh" │ │ │ │ │ +11#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ +12#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h" │ │ │ │ │ +13#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h" │ │ │ │ │ +14 │ │ │ │ │ +15namespace _D_u_n_e │ │ │ │ │ +16{ │ │ │ │ │ +25 template │ │ │ │ │ +_2_6 class _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +27 { │ │ │ │ │ +28 │ │ │ │ │ +29 public: │ │ │ │ │ +30 typedef _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s< │ │ │ │ │ +31 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_>, │ │ │ │ │ +32 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s, │ │ │ │ │ +_3_3 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> > > _T_r_a_i_t_s; │ │ │ │ │ +34 │ │ │ │ │ +_3_6 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t () │ │ │ │ │ +37 {} │ │ │ │ │ +38 │ │ │ │ │ +_4_4 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t (int s) : │ │ │ │ │ +45 basis(s), │ │ │ │ │ +46 interpolation(s) │ │ │ │ │ +47 {} │ │ │ │ │ +48 │ │ │ │ │ +_4_9 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e& _l_o_c_a_l_B_a_s_i_s () const │ │ │ │ │ +50 { │ │ │ │ │ +51 return basis; │ │ │ │ │ +52 } │ │ │ │ │ +53 │ │ │ │ │ +_5_4 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e& _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () const │ │ │ │ │ +55 { │ │ │ │ │ +56 return coefficients; │ │ │ │ │ +57 } │ │ │ │ │ +58 │ │ │ │ │ +_5_9 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e& _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n () const │ │ │ │ │ +60 { │ │ │ │ │ +61 return interpolation; │ │ │ │ │ +62 } │ │ │ │ │ +63 │ │ │ │ │ +_6_5 unsigned int _s_i_z_e () const │ │ │ │ │ +66 { │ │ │ │ │ +67 return basis.size(); │ │ │ │ │ +68 } │ │ │ │ │ +69 │ │ │ │ │ +_7_0 static constexpr GeometryType _t_y_p_e () │ │ │ │ │ +71 { │ │ │ │ │ +72 return GeometryTypes::quadrilateral; │ │ │ │ │ +73 } │ │ │ │ │ +74 │ │ │ │ │ +75 private: │ │ │ │ │ +76 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> basis; │ │ │ │ │ +77 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s coefficients; │ │ │ │ │ +78 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> > interpolation; │ │ │ │ │ +79 }; │ │ │ │ │ +80} │ │ │ │ │ +81#endif / │ │ │ │ │ +/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_b_a_s_i_s_._h_h │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -First order Brezzi-Douglas-Marini shape functions on the reference triangle. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalinterpolation.hh:24 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ -void interpolate(const F &f, std::vector< C > &out) const │ │ │ │ │ -Interpolate a given function with shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalinterpolation.hh:75 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -BDM1Simplex2DLocalInterpolation(unsigned int s) │ │ │ │ │ -Make set number s, where 0 <= s < 8. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalinterpolation.hh:38 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -BDM1Simplex2DLocalInterpolation() │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:27 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_B_a_s_i_s │ │ │ │ │ +const Traits::LocalBasisType & localBasis() const │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:49 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s │ │ │ │ │ +LocalFiniteElementTraits< BDM1Cube2DLocalBasis< D, R >, │ │ │ │ │ +BDM1Cube2DLocalCoefficients, BDM1Cube2DLocalInterpolation< │ │ │ │ │ +BDM1Cube2DLocalBasis< D, R > > > Traits │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:33 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_t_y_p_e │ │ │ │ │ +static constexpr GeometryType type() │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:70 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +const Traits::LocalCoefficientsType & localCoefficients() const │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:54 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_s_i_z_e │ │ │ │ │ +unsigned int size() const │ │ │ │ │ +Number of shape functions in this finite element. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:65 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +const Traits::LocalInterpolationType & localInterpolation() const │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:59 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BDM1Cube2DLocalFiniteElement() │ │ │ │ │ Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalinterpolation.hh:28 │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:36 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BDM1Cube2DLocalFiniteElement(int s) │ │ │ │ │ +Make set number s, where 0 <= s < 16. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:44 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ +quadrilateral. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:30 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalcoefficients.hh:24 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ +quadrilateral. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalinterpolation.hh:25 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s │ │ │ │ │ +traits helper struct │ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:13 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e │ │ │ │ │ +LB LocalBasisType │ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:16 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e │ │ │ │ │ +LC LocalCoefficientsType │ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:20 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e │ │ │ │ │ +LI LocalInterpolationType │ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:24 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00086.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1simplex2dlocalbasis.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,37 +65,33 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini1simplex2dlocalbasis.hh File Reference
│ │ │ │ +
brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <array>
│ │ │ │ -#include <bitset>
│ │ │ │ -#include <numeric>
│ │ │ │ -#include <vector>
│ │ │ │ -#include <dune/common/fmatrix.hh>
│ │ │ │ -#include "../../common/localbasis.hh"
│ │ │ │ +
#include <vector>
│ │ │ │ +#include <dune/geometry/quadraturerules.hh>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM1Simplex2DLocalBasis< D, R >
 First order Brezzi-Douglas-Marini shape functions on the reference triangle. More...
class  Dune::BDM1Cube3DLocalInterpolation< LB >
 First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,27 +1,23 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini1simplex2dlocalbasis.hh File Reference │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ +brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference │ │ │ │ │ #include │ │ │ │ │ -#include │ │ │ │ │ -#include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_<_ _D_,_ _R_ _> │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_ _L_B_ _> │ │ │ │ │   First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ - triangle. _M_o_r_e_._._. │ │ │ │ │ + hexahedron. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00086_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1simplex2dlocalbasis.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube3dlocalinterpolation.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,215 +70,134 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarini1simplex2dlocalbasis.hh
│ │ │ │ +
brezzidouglasmarini1cube3dlocalinterpolation.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH
│ │ │ │
7
│ │ │ │ -
8#include <array>
│ │ │ │ -
9#include <bitset>
│ │ │ │ -
10#include <numeric>
│ │ │ │ -
11#include <vector>
│ │ │ │ -
12
│ │ │ │ -
13#include <dune/common/fmatrix.hh>
│ │ │ │ +
8#include <vector>
│ │ │ │ +
9
│ │ │ │ +
10#include <dune/geometry/quadraturerules.hh>
│ │ │ │ +
11
│ │ │ │ +
12namespace Dune
│ │ │ │ +
13{
│ │ │ │
14
│ │ │ │ -
15#include "../../common/localbasis.hh"
│ │ │ │ -
16
│ │ │ │ -
17namespace Dune
│ │ │ │ -
18{
│ │ │ │ -
28 template<class D, class R>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
30 {
│ │ │ │ -
31
│ │ │ │ -
32 public:
│ │ │ │ -
33 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
│ │ │ │ -
34 Dune::FieldMatrix<R,2,2> > Traits;
│ │ │ │ -
35
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
38 {
│ │ │ │ -
39 for (size_t i=0; i<3; i++)
│ │ │ │ -
40 sign_[i] = 1.0;
│ │ │ │ -
41 }
│ │ │ │ -
│ │ │ │ -
42
│ │ │ │ -
│ │ │ │ -
48 BDM1Simplex2DLocalBasis (std::bitset<3> s)
│ │ │ │ -
49 {
│ │ │ │ -
50 for (size_t i=0; i<3; i++)
│ │ │ │ -
51 sign_[i] = s[i] ? -1.0 : 1.0;
│ │ │ │ -
52 }
│ │ │ │ -
│ │ │ │ -
53
│ │ │ │ -
│ │ │ │ -
55 unsigned int size () const
│ │ │ │ -
56 {
│ │ │ │ -
57 return 6;
│ │ │ │ -
58 }
│ │ │ │ -
│ │ │ │ -
59
│ │ │ │ -
│ │ │ │ -
66 inline void evaluateFunction (const typename Traits::DomainType& in,
│ │ │ │ -
67 std::vector<typename Traits::RangeType>& out) const
│ │ │ │ -
68 {
│ │ │ │ -
69 out.resize(6);
│ │ │ │ -
70
│ │ │ │ -
71 out[0][0] = sign_[0]*in[0];
│ │ │ │ -
72 out[0][1] = sign_[0]*(in[1] - 1.0);
│ │ │ │ -
73 out[1][0] = sign_[1]*(in[0] - 1.0);
│ │ │ │ -
74 out[1][1] = sign_[1]*in[1];
│ │ │ │ -
75 out[2][0] = sign_[2]*in[0];
│ │ │ │ -
76 out[2][1] = sign_[2]*in[1];
│ │ │ │ -
77 out[3][0] = 3.0*in[0];
│ │ │ │ -
78 out[3][1] = 3.0 - 6.0*in[0] - 3.0*in[1];
│ │ │ │ -
79 out[4][0] = -3.0 + 3.0*in[0] + 6.0*in[1];
│ │ │ │ -
80 out[4][1] = -3.0*in[1];
│ │ │ │ -
81 out[5][0] = -3.0*in[0];
│ │ │ │ -
82 out[5][1] = 3.0*in[1];
│ │ │ │ -
83 }
│ │ │ │ -
│ │ │ │ -
84
│ │ │ │ -
│ │ │ │ -
91 inline void evaluateJacobian (const typename Traits::DomainType& in,
│ │ │ │ -
92 std::vector<typename Traits::JacobianType>& out) const
│ │ │ │ -
93 {
│ │ │ │ -
94 out.resize(6);
│ │ │ │ -
95
│ │ │ │ -
96 out[0][0][0] = sign_[0];
│ │ │ │ -
97 out[0][0][1] = 0.0;
│ │ │ │ -
98 out[0][1][0] = 0.0;
│ │ │ │ -
99 out[0][1][1] = sign_[0];
│ │ │ │ -
100
│ │ │ │ -
101 out[1][0][0] = sign_[1];
│ │ │ │ -
102 out[1][0][1] = 0.0;
│ │ │ │ -
103 out[1][1][0] = 0.0;
│ │ │ │ -
104 out[1][1][1] = sign_[1];
│ │ │ │ -
105
│ │ │ │ -
106 out[2][0][0] = sign_[2];
│ │ │ │ -
107 out[2][0][1] = 0.0;
│ │ │ │ -
108 out[2][1][0] = 0.0;
│ │ │ │ -
109 out[2][1][1] = sign_[2];
│ │ │ │ +
24 template<class LB>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
26 {
│ │ │ │ +
27
│ │ │ │ +
28 public:
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
31 {
│ │ │ │ +
32 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
│ │ │ │ +
33 }
│ │ │ │ +
│ │ │ │ +
34
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
41 {
│ │ │ │ +
42 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
│ │ │ │ +
43 if (s & 1)
│ │ │ │ +
44 {
│ │ │ │ +
45 sign0 = -1.0;
│ │ │ │ +
46 }
│ │ │ │ +
47 if (s & 2)
│ │ │ │ +
48 {
│ │ │ │ +
49 sign1 = -1.0;
│ │ │ │ +
50 }
│ │ │ │ +
51 if (s & 4)
│ │ │ │ +
52 {
│ │ │ │ +
53 sign2 = -1.0;
│ │ │ │ +
54 }
│ │ │ │ +
55 if (s & 8)
│ │ │ │ +
56 {
│ │ │ │ +
57 sign3 = -1.0;
│ │ │ │ +
58 }
│ │ │ │ +
59 if (s & 16)
│ │ │ │ +
60 {
│ │ │ │ +
61 sign4 = -1.0;
│ │ │ │ +
62 }
│ │ │ │ +
63 if (s & 32)
│ │ │ │ +
64 {
│ │ │ │ +
65 sign5 = -1.0;
│ │ │ │ +
66 }
│ │ │ │ +
67
│ │ │ │ +
68 n0[0] = -1.0;
│ │ │ │ +
69 n0[1] = 0.0;
│ │ │ │ +
70 n0[2] = 0.0;
│ │ │ │ +
71 n1[0] = 1.0;
│ │ │ │ +
72 n1[1] = 0.0;
│ │ │ │ +
73 n1[2] = 0.0;
│ │ │ │ +
74 n2[0] = 0.0;
│ │ │ │ +
75 n2[1] = -1.0;
│ │ │ │ +
76 n2[2] = 0.0;
│ │ │ │ +
77 n3[0] = 0.0;
│ │ │ │ +
78 n3[1] = 1.0;
│ │ │ │ +
79 n3[2] = 0.0;
│ │ │ │ +
80 n4[0] = 0.0;
│ │ │ │ +
81 n4[1] = 0.0;
│ │ │ │ +
82 n4[2] = -1.0;
│ │ │ │ +
83 n5[0] = 0.0;
│ │ │ │ +
84 n5[1] = 0.0;
│ │ │ │ +
85 n5[2] = 1.0;
│ │ │ │ +
86 }
│ │ │ │ +
│ │ │ │ +
87
│ │ │ │ +
96 template<typename F, typename C>
│ │ │ │ +
│ │ │ │ +
97 void interpolate(const F& f, std::vector<C>& out) const
│ │ │ │ +
98 {
│ │ │ │ +
99 // f gives v*outer normal at a point on the edge!
│ │ │ │ +
100 typedef typename LB::Traits::RangeFieldType Scalar;
│ │ │ │ +
101 //typedef typename LB::Traits::DomainFieldType Vector;
│ │ │ │ +
102
│ │ │ │ +
103 DUNE_THROW( NotImplemented, "Interpolation for BDM1Cube3D finite elements is not implemented." );
│ │ │ │ +
104
│ │ │ │ +
105 out.resize(18);
│ │ │ │ +
106 fill(out.begin(), out.end(), 0.0);
│ │ │ │ +
107
│ │ │ │ +
108 const int qOrder = 4;
│ │ │ │ +
109 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
│ │ │ │
110
│ │ │ │ -
111 out[3][0][0] = 3.0;
│ │ │ │ -
112 out[3][0][1] = 0.0;
│ │ │ │ -
113 out[3][1][0] = -6.0;
│ │ │ │ -
114 out[3][1][1] = -3.0;
│ │ │ │ -
115
│ │ │ │ -
116 out[4][0][0] = 3.0;
│ │ │ │ -
117 out[4][0][1] = 6.0;
│ │ │ │ -
118 out[4][1][0] = 0.0;
│ │ │ │ -
119 out[4][1][1] = -3.0;
│ │ │ │ -
120
│ │ │ │ -
121 out[5][0][0] = -3.0;
│ │ │ │ -
122 out[5][0][1] = 0.0;
│ │ │ │ -
123 out[5][1][0] = 0.0;
│ │ │ │ -
124 out[5][1][1] = 3.0;
│ │ │ │ -
125 }
│ │ │ │ -
│ │ │ │ -
126
│ │ │ │ -
│ │ │ │ -
128 void partial (const std::array<unsigned int, 2>& order,
│ │ │ │ -
129 const typename Traits::DomainType& in, // position
│ │ │ │ -
130 std::vector<typename Traits::RangeType>& out) const // return value
│ │ │ │ -
131 {
│ │ │ │ -
132 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
│ │ │ │ -
133 if (totalOrder == 0) {
│ │ │ │ -
134 evaluateFunction(in, out);
│ │ │ │ -
135 } else if (totalOrder == 1) {
│ │ │ │ -
136 out.resize(size());
│ │ │ │ -
137 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
│ │ │ │ -
138
│ │ │ │ -
139 switch (direction) {
│ │ │ │ -
140 case 0:
│ │ │ │ -
141 out[0][0] = sign_[0];
│ │ │ │ -
142 out[0][1] = 0.0;
│ │ │ │ -
143
│ │ │ │ -
144 out[1][0] = sign_[1];
│ │ │ │ -
145 out[1][1] = 0.0;
│ │ │ │ -
146
│ │ │ │ -
147 out[2][0] = sign_[2];
│ │ │ │ -
148 out[2][1] = 0.0;
│ │ │ │ -
149
│ │ │ │ -
150 out[3][0] = 3.0;
│ │ │ │ -
151 out[3][1] = -6.0;
│ │ │ │ -
152
│ │ │ │ -
153 out[4][0] = 3.0;
│ │ │ │ -
154 out[4][1] = 0.0;
│ │ │ │ -
155
│ │ │ │ -
156 out[5][0] = -3.0;
│ │ │ │ -
157 out[5][1] = 0.0;
│ │ │ │ -
158 break;
│ │ │ │ -
159 case 1:
│ │ │ │ -
160 out[0][0] = 0.0;
│ │ │ │ -
161 out[0][1] = sign_[0];
│ │ │ │ -
162
│ │ │ │ -
163 out[1][0] = 0.0;
│ │ │ │ -
164 out[1][1] = sign_[1];
│ │ │ │ -
165
│ │ │ │ -
166 out[2][0] = 0.0;
│ │ │ │ -
167 out[2][1] = sign_[2];
│ │ │ │ -
168
│ │ │ │ -
169 out[3][0] = 0.0;
│ │ │ │ -
170 out[3][1] = -3.0;
│ │ │ │ -
171
│ │ │ │ -
172 out[4][0] = 6.0;
│ │ │ │ -
173 out[4][1] = -3.0;
│ │ │ │ -
174
│ │ │ │ -
175 out[5][0] = 0.0;
│ │ │ │ -
176 out[5][1] = 3.0;
│ │ │ │ -
177 break;
│ │ │ │ -
178 default:
│ │ │ │ -
179 DUNE_THROW(RangeError, "Component out of range.");
│ │ │ │ -
180 }
│ │ │ │ -
181 } else {
│ │ │ │ -
182 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
│ │ │ │ -
183 }
│ │ │ │ -
184 }
│ │ │ │ -
│ │ │ │ -
185
│ │ │ │ -
│ │ │ │ -
187 unsigned int order () const
│ │ │ │ -
188 {
│ │ │ │ -
189 return 1;
│ │ │ │ -
190 }
│ │ │ │ -
│ │ │ │ -
191
│ │ │ │ -
192 private:
│ │ │ │ -
193 std::array<R,3> sign_;
│ │ │ │ -
194 };
│ │ │ │ +
111 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
│ │ │ │ +
112 it != rule.end(); ++it)
│ │ │ │ +
113 {
│ │ │ │ +
114 // TODO: write interpolation
│ │ │ │ +
115 }
│ │ │ │ +
116 }
│ │ │ │ +
│ │ │ │ +
117
│ │ │ │ +
118 private:
│ │ │ │ +
119 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3, sign4, sign5;
│ │ │ │ +
120 typename LB::Traits::DomainType n0, n1, n2, n3, n4, n5;
│ │ │ │ +
121 };
│ │ │ │
│ │ │ │ -
195}
│ │ │ │ -
196#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │ +
122} // end namespace Dune
│ │ │ │ +
123#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on the reference triangle.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:30
│ │ │ │ -
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:91
│ │ │ │ -
unsigned int size() const
number of shape functions
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:55
│ │ │ │ -
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:66
│ │ │ │ -
LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:34
│ │ │ │ -
void partial(const std::array< unsigned int, 2 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of all shape functions.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:128
│ │ │ │ -
BDM1Simplex2DLocalBasis()
Standard constructor.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:37
│ │ │ │ -
unsigned int order() const
Polynomial order of the shape functions.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:187
│ │ │ │ -
BDM1Simplex2DLocalBasis(std::bitset< 3 > s)
Make set number s, where 0 <= s < 8.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:48
│ │ │ │ -
Type traits for LocalBasisVirtualInterface.
Definition common/localbasis.hh:35
│ │ │ │ -
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:26
│ │ │ │ +
BDM1Cube3DLocalInterpolation()
Standard constructor.
Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:30
│ │ │ │ +
void interpolate(const F &f, std::vector< C > &out) const
Interpolate a given function with shape functions.
Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:97
│ │ │ │ +
BDM1Cube3DLocalInterpolation(unsigned int s)
Make set number s, where 0 <= s < 64.
Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:40
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,228 +1,134 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d │ │ │ │ │ -brezzidouglasmarini1simplex2dlocalbasis.hh │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d │ │ │ │ │ +brezzidouglasmarini1cube3dlocalinterpolation.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ -9#include │ │ │ │ │ -10#include │ │ │ │ │ -11#include │ │ │ │ │ -12 │ │ │ │ │ -13#include │ │ │ │ │ +8#include │ │ │ │ │ +9 │ │ │ │ │ +10#include │ │ │ │ │ +11 │ │ │ │ │ +12namespace _D_u_n_e │ │ │ │ │ +13{ │ │ │ │ │ 14 │ │ │ │ │ -15#include "../../common/localbasis.hh" │ │ │ │ │ -16 │ │ │ │ │ -17namespace _D_u_n_e │ │ │ │ │ -18{ │ │ │ │ │ -28 template │ │ │ │ │ -_2_9 class _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -30 { │ │ │ │ │ -31 │ │ │ │ │ -32 public: │ │ │ │ │ -33 typedef _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_<_D_,_2_,_D_u_n_e_:_:_F_i_e_l_d_V_e_c_t_o_r_<_D_,_2_>,R,2,Dune:: │ │ │ │ │ -FieldVector, │ │ │ │ │ -_3_4 Dune::FieldMatrix > _T_r_a_i_t_s; │ │ │ │ │ -35 │ │ │ │ │ -_3_7 _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s () │ │ │ │ │ -38 { │ │ │ │ │ -39 for (size_t i=0; i<3; i++) │ │ │ │ │ -40 sign_[i] = 1.0; │ │ │ │ │ -41 } │ │ │ │ │ -42 │ │ │ │ │ -_4_8 _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s (std::bitset<3> s) │ │ │ │ │ -49 { │ │ │ │ │ -50 for (size_t i=0; i<3; i++) │ │ │ │ │ -51 sign_[i] = s[i] ? -1.0 : 1.0; │ │ │ │ │ -52 } │ │ │ │ │ -53 │ │ │ │ │ -_5_5 unsigned int _s_i_z_e () const │ │ │ │ │ +24 template │ │ │ │ │ +_2_5 class _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +26 { │ │ │ │ │ +27 │ │ │ │ │ +28 public: │ │ │ │ │ +_3_0 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n() │ │ │ │ │ +31 { │ │ │ │ │ +32 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0; │ │ │ │ │ +33 } │ │ │ │ │ +34 │ │ │ │ │ +_4_0 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n(unsigned int s) │ │ │ │ │ +41 { │ │ │ │ │ +42 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0; │ │ │ │ │ +43 if (s & 1) │ │ │ │ │ +44 { │ │ │ │ │ +45 sign0 = -1.0; │ │ │ │ │ +46 } │ │ │ │ │ +47 if (s & 2) │ │ │ │ │ +48 { │ │ │ │ │ +49 sign1 = -1.0; │ │ │ │ │ +50 } │ │ │ │ │ +51 if (s & 4) │ │ │ │ │ +52 { │ │ │ │ │ +53 sign2 = -1.0; │ │ │ │ │ +54 } │ │ │ │ │ +55 if (s & 8) │ │ │ │ │ 56 { │ │ │ │ │ -57 return 6; │ │ │ │ │ +57 sign3 = -1.0; │ │ │ │ │ 58 } │ │ │ │ │ -59 │ │ │ │ │ -_6_6 inline void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n (const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ -67 std::vector& out) const │ │ │ │ │ -68 { │ │ │ │ │ -69 out.resize(6); │ │ │ │ │ -70 │ │ │ │ │ -71 out[0][0] = sign_[0]*in[0]; │ │ │ │ │ -72 out[0][1] = sign_[0]*(in[1] - 1.0); │ │ │ │ │ -73 out[1][0] = sign_[1]*(in[0] - 1.0); │ │ │ │ │ -74 out[1][1] = sign_[1]*in[1]; │ │ │ │ │ -75 out[2][0] = sign_[2]*in[0]; │ │ │ │ │ -76 out[2][1] = sign_[2]*in[1]; │ │ │ │ │ -77 out[3][0] = 3.0*in[0]; │ │ │ │ │ -78 out[3][1] = 3.0 - 6.0*in[0] - 3.0*in[1]; │ │ │ │ │ -79 out[4][0] = -3.0 + 3.0*in[0] + 6.0*in[1]; │ │ │ │ │ -80 out[4][1] = -3.0*in[1]; │ │ │ │ │ -81 out[5][0] = -3.0*in[0]; │ │ │ │ │ -82 out[5][1] = 3.0*in[1]; │ │ │ │ │ -83 } │ │ │ │ │ -84 │ │ │ │ │ -_9_1 inline void _e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n (const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ -92 std::vector& out) const │ │ │ │ │ -93 { │ │ │ │ │ -94 out.resize(6); │ │ │ │ │ -95 │ │ │ │ │ -96 out[0][0][0] = sign_[0]; │ │ │ │ │ -97 out[0][0][1] = 0.0; │ │ │ │ │ -98 out[0][1][0] = 0.0; │ │ │ │ │ -99 out[0][1][1] = sign_[0]; │ │ │ │ │ -100 │ │ │ │ │ -101 out[1][0][0] = sign_[1]; │ │ │ │ │ -102 out[1][0][1] = 0.0; │ │ │ │ │ -103 out[1][1][0] = 0.0; │ │ │ │ │ -104 out[1][1][1] = sign_[1]; │ │ │ │ │ -105 │ │ │ │ │ -106 out[2][0][0] = sign_[2]; │ │ │ │ │ -107 out[2][0][1] = 0.0; │ │ │ │ │ -108 out[2][1][0] = 0.0; │ │ │ │ │ -109 out[2][1][1] = sign_[2]; │ │ │ │ │ +59 if (s & 16) │ │ │ │ │ +60 { │ │ │ │ │ +61 sign4 = -1.0; │ │ │ │ │ +62 } │ │ │ │ │ +63 if (s & 32) │ │ │ │ │ +64 { │ │ │ │ │ +65 sign5 = -1.0; │ │ │ │ │ +66 } │ │ │ │ │ +67 │ │ │ │ │ +68 n0[0] = -1.0; │ │ │ │ │ +69 n0[1] = 0.0; │ │ │ │ │ +70 n0[2] = 0.0; │ │ │ │ │ +71 n1[0] = 1.0; │ │ │ │ │ +72 n1[1] = 0.0; │ │ │ │ │ +73 n1[2] = 0.0; │ │ │ │ │ +74 n2[0] = 0.0; │ │ │ │ │ +75 n2[1] = -1.0; │ │ │ │ │ +76 n2[2] = 0.0; │ │ │ │ │ +77 n3[0] = 0.0; │ │ │ │ │ +78 n3[1] = 1.0; │ │ │ │ │ +79 n3[2] = 0.0; │ │ │ │ │ +80 n4[0] = 0.0; │ │ │ │ │ +81 n4[1] = 0.0; │ │ │ │ │ +82 n4[2] = -1.0; │ │ │ │ │ +83 n5[0] = 0.0; │ │ │ │ │ +84 n5[1] = 0.0; │ │ │ │ │ +85 n5[2] = 1.0; │ │ │ │ │ +86 } │ │ │ │ │ +87 │ │ │ │ │ +96 template │ │ │ │ │ +_9_7 void _i_n_t_e_r_p_o_l_a_t_e(const F& f, std::vector& out) const │ │ │ │ │ +98 { │ │ │ │ │ +99 // f gives v*outer normal at a point on the edge! │ │ │ │ │ +100 typedef typename LB::Traits::RangeFieldType Scalar; │ │ │ │ │ +101 //typedef typename LB::Traits::DomainFieldType Vector; │ │ │ │ │ +102 │ │ │ │ │ +103 DUNE_THROW( NotImplemented, "Interpolation for BDM1Cube3D finite elements │ │ │ │ │ +is not implemented." ); │ │ │ │ │ +104 │ │ │ │ │ +105 out.resize(18); │ │ │ │ │ +106 fill(out.begin(), out.end(), 0.0); │ │ │ │ │ +107 │ │ │ │ │ +108 const int qOrder = 4; │ │ │ │ │ +109 const QuadratureRule& rule = QuadratureRules::rule │ │ │ │ │ +(GeometryTypes::cube(1), qOrder); │ │ │ │ │ 110 │ │ │ │ │ -111 out[3][0][0] = 3.0; │ │ │ │ │ -112 out[3][0][1] = 0.0; │ │ │ │ │ -113 out[3][1][0] = -6.0; │ │ │ │ │ -114 out[3][1][1] = -3.0; │ │ │ │ │ -115 │ │ │ │ │ -116 out[4][0][0] = 3.0; │ │ │ │ │ -117 out[4][0][1] = 6.0; │ │ │ │ │ -118 out[4][1][0] = 0.0; │ │ │ │ │ -119 out[4][1][1] = -3.0; │ │ │ │ │ -120 │ │ │ │ │ -121 out[5][0][0] = -3.0; │ │ │ │ │ -122 out[5][0][1] = 0.0; │ │ │ │ │ -123 out[5][1][0] = 0.0; │ │ │ │ │ -124 out[5][1][1] = 3.0; │ │ │ │ │ -125 } │ │ │ │ │ -126 │ │ │ │ │ -_1_2_8 void _p_a_r_t_i_a_l (const std::array& _o_r_d_e_r, │ │ │ │ │ -129 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, // position │ │ │ │ │ -130 std::vector& out) const // return value │ │ │ │ │ -131 { │ │ │ │ │ -132 auto totalOrder = std::accumulate(_o_r_d_e_r.begin(), _o_r_d_e_r.end(), 0); │ │ │ │ │ -133 if (totalOrder == 0) { │ │ │ │ │ -134 _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(in, out); │ │ │ │ │ -135 } else if (totalOrder == 1) { │ │ │ │ │ -136 out.resize(_s_i_z_e()); │ │ │ │ │ -137 auto const direction = std::distance(_o_r_d_e_r.begin(), std::find(_o_r_d_e_r.begin │ │ │ │ │ -(), _o_r_d_e_r.end(), 1)); │ │ │ │ │ -138 │ │ │ │ │ -139 switch (direction) { │ │ │ │ │ -140 case 0: │ │ │ │ │ -141 out[0][0] = sign_[0]; │ │ │ │ │ -142 out[0][1] = 0.0; │ │ │ │ │ -143 │ │ │ │ │ -144 out[1][0] = sign_[1]; │ │ │ │ │ -145 out[1][1] = 0.0; │ │ │ │ │ -146 │ │ │ │ │ -147 out[2][0] = sign_[2]; │ │ │ │ │ -148 out[2][1] = 0.0; │ │ │ │ │ -149 │ │ │ │ │ -150 out[3][0] = 3.0; │ │ │ │ │ -151 out[3][1] = -6.0; │ │ │ │ │ -152 │ │ │ │ │ -153 out[4][0] = 3.0; │ │ │ │ │ -154 out[4][1] = 0.0; │ │ │ │ │ -155 │ │ │ │ │ -156 out[5][0] = -3.0; │ │ │ │ │ -157 out[5][1] = 0.0; │ │ │ │ │ -158 break; │ │ │ │ │ -159 case 1: │ │ │ │ │ -160 out[0][0] = 0.0; │ │ │ │ │ -161 out[0][1] = sign_[0]; │ │ │ │ │ -162 │ │ │ │ │ -163 out[1][0] = 0.0; │ │ │ │ │ -164 out[1][1] = sign_[1]; │ │ │ │ │ -165 │ │ │ │ │ -166 out[2][0] = 0.0; │ │ │ │ │ -167 out[2][1] = sign_[2]; │ │ │ │ │ -168 │ │ │ │ │ -169 out[3][0] = 0.0; │ │ │ │ │ -170 out[3][1] = -3.0; │ │ │ │ │ -171 │ │ │ │ │ -172 out[4][0] = 6.0; │ │ │ │ │ -173 out[4][1] = -3.0; │ │ │ │ │ -174 │ │ │ │ │ -175 out[5][0] = 0.0; │ │ │ │ │ -176 out[5][1] = 3.0; │ │ │ │ │ -177 break; │ │ │ │ │ -178 default: │ │ │ │ │ -179 DUNE_THROW(RangeError, "Component out of range."); │ │ │ │ │ -180 } │ │ │ │ │ -181 } else { │ │ │ │ │ -182 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented"); │ │ │ │ │ -183 } │ │ │ │ │ -184 } │ │ │ │ │ -185 │ │ │ │ │ -_1_8_7 unsigned int _o_r_d_e_r () const │ │ │ │ │ -188 { │ │ │ │ │ -189 return 1; │ │ │ │ │ -190 } │ │ │ │ │ -191 │ │ │ │ │ -192 private: │ │ │ │ │ -193 std::array sign_; │ │ │ │ │ -194 }; │ │ │ │ │ -195} │ │ │ │ │ -196#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH │ │ │ │ │ +111 for (typename QuadratureRule::const_iterator it = rule.begin(); │ │ │ │ │ +112 it != rule.end(); ++it) │ │ │ │ │ +113 { │ │ │ │ │ +114 // TODO: write interpolation │ │ │ │ │ +115 } │ │ │ │ │ +116 } │ │ │ │ │ +117 │ │ │ │ │ +118 private: │ │ │ │ │ +119 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3, sign4, │ │ │ │ │ +sign5; │ │ │ │ │ +120 typename LB::Traits::DomainType n0, n1, n2, n3, n4, n5; │ │ │ │ │ +121 }; │ │ │ │ │ +122} // end namespace Dune │ │ │ │ │ +123#endif / │ │ │ │ │ +/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -First order Brezzi-Douglas-Marini shape functions on the reference triangle. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:30 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n │ │ │ │ │ -void evaluateJacobian(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ -typename Traits::JacobianType > &out) const │ │ │ │ │ -Evaluate Jacobian of all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:91 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_s_i_z_e │ │ │ │ │ -unsigned int size() const │ │ │ │ │ -number of shape functions │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:55 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n │ │ │ │ │ -void evaluateFunction(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ -typename Traits::RangeType > &out) const │ │ │ │ │ -Evaluate all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:66 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_T_r_a_i_t_s │ │ │ │ │ -LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, │ │ │ │ │ -2 >, Dune::FieldMatrix< R, 2, 2 > > Traits │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:34 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_p_a_r_t_i_a_l │ │ │ │ │ -void partial(const std::array< unsigned int, 2 > &order, const typename │ │ │ │ │ -Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const │ │ │ │ │ -Evaluate partial derivatives of all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:128 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -BDM1Simplex2DLocalBasis() │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalinterpolation.hh:26 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +BDM1Cube3DLocalInterpolation() │ │ │ │ │ Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:37 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_o_r_d_e_r │ │ │ │ │ -unsigned int order() const │ │ │ │ │ -Polynomial order of the shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:187 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -BDM1Simplex2DLocalBasis(std::bitset< 3 > s) │ │ │ │ │ -Make set number s, where 0 <= s < 8. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:48 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s │ │ │ │ │ -Type traits for LocalBasisVirtualInterface. │ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:35 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e │ │ │ │ │ -D DomainType │ │ │ │ │ -domain type │ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:43 │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalinterpolation.hh:30 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ +void interpolate(const F &f, std::vector< C > &out) const │ │ │ │ │ +Interpolate a given function with shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalinterpolation.hh:97 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +BDM1Cube3DLocalInterpolation(unsigned int s) │ │ │ │ │ +Make set number s, where 0 <= s < 64. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalinterpolation.hh:40 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00089.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube3dlocalcoefficients.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,34 +65,34 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference
│ │ │ │ +
brezzidouglasmarini1cube3dlocalcoefficients.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include <cstddef>
│ │ │ │ #include <vector>
│ │ │ │ -#include "../../common/localkey.hh"
│ │ │ │ +#include "../../common/localkey.hh"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM1Simplex2DLocalCoefficients
 Layout map for Brezzi-Douglas-Marini-1 elements on triangles. More...
class  Dune::BDM1Cube3DLocalCoefficients
 Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,23 +1,23 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference │ │ │ │ │ +brezzidouglasmarini1cube3dlocalcoefficients.hh File Reference │ │ │ │ │ #include │ │ │ │ │ #include │ │ │ │ │ #include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -  Layout map for Brezzi-Douglas-Marini-1 elements on triangles. _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +  Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00089_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1simplex2dlocalcoefficients.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube3dlocalcoefficients.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,77 +70,78 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarini1simplex2dlocalcoefficients.hh
│ │ │ │ +
brezzidouglasmarini1cube3dlocalcoefficients.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH
│ │ │ │
7
│ │ │ │
8#include <cstddef>
│ │ │ │
9#include <vector>
│ │ │ │
10
│ │ │ │
11#include "../../common/localkey.hh"
│ │ │ │
12
│ │ │ │
13namespace Dune
│ │ │ │
14{
│ │ │ │
15
│ │ │ │
│ │ │ │ - │ │ │ │ + │ │ │ │
24 {
│ │ │ │
25
│ │ │ │
26 public:
│ │ │ │
│ │ │ │ - │ │ │ │ + │ │ │ │
29 {
│ │ │ │ -
30 for (std::size_t i=0; i<3; i++)
│ │ │ │ +
30 for (std::size_t i = 0; i < 6; ++i)
│ │ │ │
31 {
│ │ │ │
32 li[i] = LocalKey(i,1,0);
│ │ │ │ -
33 li[3 + i] = LocalKey(i,1,1);
│ │ │ │ -
34 }
│ │ │ │ -
35 }
│ │ │ │ -
│ │ │ │ -
36
│ │ │ │ -
│ │ │ │ -
38 std::size_t size () const
│ │ │ │ -
39 {
│ │ │ │ -
40 return 6;
│ │ │ │ -
41 }
│ │ │ │ -
│ │ │ │ -
42
│ │ │ │ -
│ │ │ │ -
44 const LocalKey& localKey (std::size_t i) const
│ │ │ │ -
45 {
│ │ │ │ -
46 return li[i];
│ │ │ │ -
47 }
│ │ │ │ -
│ │ │ │ -
48
│ │ │ │ -
49 private:
│ │ │ │ -
50 std::vector<LocalKey> li;
│ │ │ │ -
51 };
│ │ │ │ +
33 li[i + 6] = LocalKey(i,1,1);
│ │ │ │ +
34 li[i + 12] = LocalKey(i,1,2);
│ │ │ │ +
35 }
│ │ │ │ +
36 }
│ │ │ │ +
│ │ │ │ +
37
│ │ │ │ +
│ │ │ │ +
39 std::size_t size() const
│ │ │ │ +
40 {
│ │ │ │ +
41 return 18;
│ │ │ │ +
42 }
│ │ │ │ +
│ │ │ │ +
43
│ │ │ │ +
│ │ │ │ +
45 const LocalKey& localKey(std::size_t i) const
│ │ │ │ +
46 {
│ │ │ │ +
47 return li[i];
│ │ │ │ +
48 }
│ │ │ │ +
│ │ │ │ +
49
│ │ │ │ +
50 private:
│ │ │ │ +
51 std::vector<LocalKey> li;
│ │ │ │ +
52 };
│ │ │ │
│ │ │ │ -
52}
│ │ │ │ -
53#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
53} // end namespace Dune
│ │ │ │ +
54#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
Layout map for Brezzi-Douglas-Marini-1 elements on triangles.
Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:24
│ │ │ │ -
BDM1Simplex2DLocalCoefficients()
Standard constructor.
Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:28
│ │ │ │ -
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:44
│ │ │ │ -
std::size_t size() const
number of coefficients
Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:38
│ │ │ │ +
Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra.
Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:24
│ │ │ │ +
std::size_t size() const
number of coefficients
Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:39
│ │ │ │ +
BDM1Cube3DLocalCoefficients()
Standard constructor.
Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:28
│ │ │ │ +
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:45
│ │ │ │
Describe position of one degree of freedom.
Definition localkey.hh:24
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,79 +1,78 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d │ │ │ │ │ -brezzidouglasmarini1simplex2dlocalcoefficients.hh │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d │ │ │ │ │ +brezzidouglasmarini1cube3dlocalcoefficients.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef │ │ │ │ │ -DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ -6#define │ │ │ │ │ -DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH │ │ │ │ │ 7 │ │ │ │ │ 8#include │ │ │ │ │ 9#include │ │ │ │ │ 10 │ │ │ │ │ 11#include "../../common/localkey.hh" │ │ │ │ │ 12 │ │ │ │ │ 13namespace _D_u_n_e │ │ │ │ │ 14{ │ │ │ │ │ 15 │ │ │ │ │ -_2_3 class _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +_2_3 class _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ 24 { │ │ │ │ │ 25 │ │ │ │ │ 26 public: │ │ │ │ │ -_2_8 _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () : li(6) │ │ │ │ │ +_2_8 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s() : li(18) │ │ │ │ │ 29 { │ │ │ │ │ -30 for (std::size_t i=0; i<3; i++) │ │ │ │ │ +30 for (std::size_t i = 0; i < 6; ++i) │ │ │ │ │ 31 { │ │ │ │ │ 32 li[i] = _L_o_c_a_l_K_e_y(i,1,0); │ │ │ │ │ -33 li[3 + i] = _L_o_c_a_l_K_e_y(i,1,1); │ │ │ │ │ -34 } │ │ │ │ │ +33 li[i + 6] = _L_o_c_a_l_K_e_y(i,1,1); │ │ │ │ │ +34 li[i + 12] = _L_o_c_a_l_K_e_y(i,1,2); │ │ │ │ │ 35 } │ │ │ │ │ -36 │ │ │ │ │ -_3_8 std::size_t _s_i_z_e () const │ │ │ │ │ -39 { │ │ │ │ │ -40 return 6; │ │ │ │ │ -41 } │ │ │ │ │ -42 │ │ │ │ │ -_4_4 const _L_o_c_a_l_K_e_y& _l_o_c_a_l_K_e_y (std::size_t i) const │ │ │ │ │ -45 { │ │ │ │ │ -46 return li[i]; │ │ │ │ │ -47 } │ │ │ │ │ -48 │ │ │ │ │ -49 private: │ │ │ │ │ -50 std::vector li; │ │ │ │ │ -51 }; │ │ │ │ │ -52} │ │ │ │ │ -53#endif / │ │ │ │ │ -/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +36 } │ │ │ │ │ +37 │ │ │ │ │ +_3_9 std::size_t _s_i_z_e() const │ │ │ │ │ +40 { │ │ │ │ │ +41 return 18; │ │ │ │ │ +42 } │ │ │ │ │ +43 │ │ │ │ │ +_4_5 const _L_o_c_a_l_K_e_y& _l_o_c_a_l_K_e_y(std::size_t i) const │ │ │ │ │ +46 { │ │ │ │ │ +47 return li[i]; │ │ │ │ │ +48 } │ │ │ │ │ +49 │ │ │ │ │ +50 private: │ │ │ │ │ +51 std::vector li; │ │ │ │ │ +52 }; │ │ │ │ │ +53} // end namespace Dune │ │ │ │ │ +54#endif / │ │ │ │ │ +/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -Layout map for Brezzi-Douglas-Marini-1 elements on triangles. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalcoefficients.hh:24 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -BDM1Simplex2DLocalCoefficients() │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalcoefficients.hh:24 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_s_i_z_e │ │ │ │ │ +std::size_t size() const │ │ │ │ │ +number of coefficients │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalcoefficients.hh:39 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +BDM1Cube3DLocalCoefficients() │ │ │ │ │ Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalcoefficients.hh:28 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_l_o_c_a_l_K_e_y │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalcoefficients.hh:28 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_l_o_c_a_l_K_e_y │ │ │ │ │ const LocalKey & localKey(std::size_t i) const │ │ │ │ │ get i'th index │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalcoefficients.hh:44 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_s_i_z_e │ │ │ │ │ -std::size_t size() const │ │ │ │ │ -number of coefficients │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalcoefficients.hh:38 │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalcoefficients.hh:45 │ │ │ │ │ _D_u_n_e_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ Describe position of one degree of freedom. │ │ │ │ │ DDeeffiinniittiioonn localkey.hh:24 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00092.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2simplex2d.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube3dlocalbasis.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,36 +65,37 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini2simplex2d.hh File Reference
│ │ │ │ +
brezzidouglasmarini1cube3dlocalbasis.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <dune/geometry/type.hh>
│ │ │ │ -#include "../common/localfiniteelementtraits.hh"
│ │ │ │ -#include "brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalbasis.hh"
│ │ │ │ -#include "brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalcoefficients.hh"
│ │ │ │ -#include "brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalinterpolation.hh"
│ │ │ │ +
#include <array>
│ │ │ │ +#include <bitset>
│ │ │ │ +#include <numeric>
│ │ │ │ +#include <vector>
│ │ │ │ +#include <dune/common/fmatrix.hh>
│ │ │ │ +#include "../../common/localbasis.hh"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM2Simplex2DLocalFiniteElement< D, R >
 Second order Brezzi-Douglas-Marini shape functions on triangles. More...
class  Dune::BDM1Cube3DLocalBasis< D, R >
 First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,28 +1,27 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini2simplex2d.hh File Reference │ │ │ │ │ -#include │ │ │ │ │ -#include "_._._/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h" │ │ │ │ │ -#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ -#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h" │ │ │ │ │ -#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h" │ │ │ │ │ +brezzidouglasmarini1cube3dlocalbasis.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_ _> │ │ │ │ │ -  Second order Brezzi-Douglas-Marini shape functions on triangles. │ │ │ │ │ - _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_<_ _D_,_ _R_ _> │ │ │ │ │ +  First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ + hexahedron. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00092_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2simplex2d.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube3dlocalbasis.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,123 +70,322 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarini2simplex2d.hh
│ │ │ │ +
brezzidouglasmarini1cube3dlocalbasis.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH
│ │ │ │
7
│ │ │ │ -
8#include <dune/geometry/type.hh>
│ │ │ │ -
9
│ │ │ │ -
10#include "../common/localfiniteelementtraits.hh"
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ +
8#include <array>
│ │ │ │ +
9#include <bitset>
│ │ │ │ +
10#include <numeric>
│ │ │ │ +
11#include <vector>
│ │ │ │ +
12
│ │ │ │ +
13#include <dune/common/fmatrix.hh>
│ │ │ │
14
│ │ │ │ -
15namespace Dune
│ │ │ │ -
16{
│ │ │ │ -
25 template<class D, class R>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
27 {
│ │ │ │ -
28
│ │ │ │ -
29 public:
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
34
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
37 {}
│ │ │ │ -
│ │ │ │ -
38
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
45 basis(s),
│ │ │ │ -
46 interpolation(s)
│ │ │ │ -
47 {}
│ │ │ │ -
│ │ │ │ -
48
│ │ │ │ -
│ │ │ │ -
49 const typename Traits::LocalBasisType& localBasis () const
│ │ │ │ -
50 {
│ │ │ │ -
51 return basis;
│ │ │ │ -
52 }
│ │ │ │ -
│ │ │ │ -
53
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
55 {
│ │ │ │ -
56 return coefficients;
│ │ │ │ -
57 }
│ │ │ │ -
│ │ │ │ -
58
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
60 {
│ │ │ │ -
61 return interpolation;
│ │ │ │ -
62 }
│ │ │ │ -
│ │ │ │ -
63
│ │ │ │ -
│ │ │ │ -
65 unsigned int size () const
│ │ │ │ -
66 {
│ │ │ │ -
67 return basis.size();
│ │ │ │ -
68 }
│ │ │ │ -
│ │ │ │ -
69
│ │ │ │ -
│ │ │ │ -
70 static constexpr GeometryType type ()
│ │ │ │ -
71 {
│ │ │ │ -
72 return GeometryTypes::triangle;
│ │ │ │ -
73 }
│ │ │ │ -
│ │ │ │ -
74
│ │ │ │ -
75 private:
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
79 };
│ │ │ │ -
│ │ │ │ -
80}
│ │ │ │ -
81#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ +
15#include "../../common/localbasis.hh"
│ │ │ │ +
16
│ │ │ │ +
17namespace Dune
│ │ │ │ +
18{
│ │ │ │ +
29 template<class D, class R>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
31 {
│ │ │ │ +
32
│ │ │ │ +
33 public:
│ │ │ │ + │ │ │ │ +
35 R,3,Dune::FieldVector<R,3>,
│ │ │ │ +
36 Dune::FieldMatrix<R,3,3> > Traits;
│ │ │ │ +
37
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
40 {
│ │ │ │ +
41 for (size_t i=0; i<6; i++)
│ │ │ │ +
42 sign_[i] = 1.0;
│ │ │ │ +
43 }
│ │ │ │ +
│ │ │ │ +
44
│ │ │ │ +
│ │ │ │ +
50 BDM1Cube3DLocalBasis(std::bitset<6> s)
│ │ │ │ +
51 {
│ │ │ │ +
52 for (size_t i=0; i<6; i++)
│ │ │ │ +
53 sign_[i] = s[i] ? -1.0 : 1.0;
│ │ │ │ +
54 }
│ │ │ │ +
│ │ │ │ +
55
│ │ │ │ +
│ │ │ │ +
57 unsigned int size() const
│ │ │ │ +
58 {
│ │ │ │ +
59 return 18;
│ │ │ │ +
60 }
│ │ │ │ +
│ │ │ │ +
61
│ │ │ │ +
│ │ │ │ +
68 inline void evaluateFunction(const typename Traits::DomainType& in,
│ │ │ │ +
69 std::vector<typename Traits::RangeType>& out) const
│ │ │ │ +
70 {
│ │ │ │ +
71 out.resize(size());
│ │ │ │ +
72
│ │ │ │ +
73 out[0][0] = sign_[0] * (in[0] - 1.0);
│ │ │ │ +
74 out[0][1] = 0;
│ │ │ │ +
75 out[0][2] = 0;
│ │ │ │ +
76 out[1][0] = sign_[1] * in[0];
│ │ │ │ +
77 out[1][1] = 0;
│ │ │ │ +
78 out[1][2] = 0;
│ │ │ │ +
79 out[2][0] = 0;
│ │ │ │ +
80 out[2][1] = sign_[2] * (in[1] - 1.0);
│ │ │ │ +
81 out[2][2] = 0;
│ │ │ │ +
82 out[3][0] = 0;
│ │ │ │ +
83 out[3][1] = sign_[3] * in[1];
│ │ │ │ +
84 out[3][2] = 0;
│ │ │ │ +
85 out[4][0] = 0;
│ │ │ │ +
86 out[4][1] = 0;
│ │ │ │ +
87 out[4][2] = sign_[4] * (in[2] - 1.0);
│ │ │ │ +
88 out[5][0] = 0;
│ │ │ │ +
89 out[5][1] = 0;
│ │ │ │ +
90 out[5][2] = sign_[5] * in[2];
│ │ │ │ +
91 out[6][0] = 6.0 * in[0] * in[1] - 3 * in[0]-6 * in[1] + 3.0;
│ │ │ │ +
92 out[6][1] = -3.0 * in[1] * in[1] + 3 * in[1];
│ │ │ │ +
93 out[6][2] = 0;
│ │ │ │ +
94 out[7][0] = -6.0 * in[0] * in[1] + 3 * in[0];
│ │ │ │ +
95 out[7][1] = 3.0 * in[1] * in[1] - 3 * in[1];
│ │ │ │ +
96 out[7][2] = 0;
│ │ │ │ +
97 out[8][0] = 3.0 * in[0] * in[0] - 3 * in[0];
│ │ │ │ +
98 out[8][1] = -6.0 * in[0] * in[1] + 3 * in[1]+6 * in[0]-3.0;
│ │ │ │ +
99 out[8][2] = 0;
│ │ │ │ +
100 out[9][0] = -3.0 * in[0] * in[0] + 3 * in[0];
│ │ │ │ +
101 out[9][1] = 6.0 * in[0] * in[1] - 3 * in[1];
│ │ │ │ +
102 out[9][2] = 0;
│ │ │ │ +
103 out[10][0] = -3.0 * in[0] * in[0] + 3 * in[0];
│ │ │ │ +
104 out[10][1] = 0;
│ │ │ │ +
105 out[10][2] = 6.0 * in[0] * in[2]-6 * in[0]-3 * in[2] + 3.0;
│ │ │ │ +
106 out[11][0] = 3.0 * in[0] * in[0]-3 * in[0];
│ │ │ │ +
107 out[11][1] = 0;
│ │ │ │ +
108 out[11][2] = -6.0 * in[0] * in[2] + 3 * in[2];
│ │ │ │ +
109 out[12][0] = -6.0 * in[0] * in[2]+6 * in[2] + 3 * in[0]-3.0;
│ │ │ │ +
110 out[12][1] = 0;
│ │ │ │ +
111 out[12][2] = 3.0 * in[2] * in[2]-3 * in[2];
│ │ │ │ +
112 out[13][0] = -3 * in[0]+6 * in[0] * in[2];
│ │ │ │ +
113 out[13][1] = 0;
│ │ │ │ +
114 out[13][2] = -3.0 * in[2] * in[2] + 3 * in[2];
│ │ │ │ +
115 out[14][0] = 0;
│ │ │ │ +
116 out[14][1] = 6.0 * in[1] * in[2]-3 * in[1]-6 * in[2] + 3.0;
│ │ │ │ +
117 out[14][2] = -3 * in[2] * in[2] + 3 * in[2];
│ │ │ │ +
118 out[15][0] = 0;
│ │ │ │ +
119 out[15][1] = -6.0 * in[1] * in[2] + 3 * in[1];
│ │ │ │ +
120 out[15][2] = 3.0 * in[2] * in[2]-3 * in[2];
│ │ │ │ +
121 out[16][0] = 0;
│ │ │ │ +
122 out[16][1] = 3.0 * in[1] * in[1]-3 * in[1];
│ │ │ │ +
123 out[16][2] = -6.0 * in[1] * in[2] + 3 * in[2]+6 * in[1]-3.0;
│ │ │ │ +
124 out[17][0] = 0;
│ │ │ │ +
125 out[17][1] = -3.0 * in[1] * in[1] + 3 * in[1];
│ │ │ │ +
126 out[17][2] = 6.0 * in[1] * in[2] - 3.0 * in[2];
│ │ │ │ +
127 }
│ │ │ │ +
│ │ │ │ +
128
│ │ │ │ +
│ │ │ │ +
135 inline void evaluateJacobian(const typename Traits::DomainType& in,
│ │ │ │ +
136 std::vector<typename Traits::JacobianType>& out) const
│ │ │ │ +
137 {
│ │ │ │ +
138 out.resize(size());
│ │ │ │ +
139
│ │ │ │ +
140 out[0][0] = { sign_[0], 0, 0};
│ │ │ │ +
141 out[0][1] = { 0, 0, 0};
│ │ │ │ +
142 out[0][2] = { 0, 0, 0};
│ │ │ │ +
143
│ │ │ │ +
144 out[1][0] = { sign_[1], 0, 0};
│ │ │ │ +
145 out[1][1] = { 0, 0, 0};
│ │ │ │ +
146 out[1][2] = { 0, 0, 0};
│ │ │ │ +
147
│ │ │ │ +
148 out[2][0] = { 0, 0, 0};
│ │ │ │ +
149 out[2][1] = { 0, sign_[2], 0};
│ │ │ │ +
150 out[2][2] = { 0, 0, 0};
│ │ │ │ +
151
│ │ │ │ +
152 out[3][0] = { 0, 0, 0};
│ │ │ │ +
153 out[3][1] = { 0, sign_[3], 0};
│ │ │ │ +
154 out[3][2] = { 0, 0, 0};
│ │ │ │ +
155
│ │ │ │ +
156 out[4][0] = { 0, 0, 0};
│ │ │ │ +
157 out[4][1] = { 0, 0, 0};
│ │ │ │ +
158 out[4][2] = { 0, 0, sign_[4]};
│ │ │ │ +
159
│ │ │ │ +
160 out[5][0] = { 0, 0, 0};
│ │ │ │ +
161 out[5][1] = { 0, 0, 0};
│ │ │ │ +
162 out[5][2] = { 0, 0, sign_[5]};
│ │ │ │ +
163
│ │ │ │ +
164 out[6][0] = { 6*in[1]-3, 6*in[0]-6, 0};
│ │ │ │ +
165 out[6][1] = { 0, -6*in[1]+3, 0};
│ │ │ │ +
166 out[6][2] = { 0, 0, 0};
│ │ │ │ +
167
│ │ │ │ +
168 out[7][0] = {-6*in[1]+3, -6*in[0], 0};
│ │ │ │ +
169 out[7][1] = { 0, 6*in[1]-3, 0};
│ │ │ │ +
170 out[7][2] = { 0, 0, 0};
│ │ │ │ +
171
│ │ │ │ +
172 out[8][0] = { 6*in[0]-3, 0, 0};
│ │ │ │ +
173 out[8][1] = {-6*in[1]+6, -6*in[0]+3, 0};
│ │ │ │ +
174 out[8][2] = { 0, 0, 0};
│ │ │ │ +
175
│ │ │ │ +
176 out[9][0] = {-6*in[0]+3, 0, 0};
│ │ │ │ +
177 out[9][1] = { 6*in[1], 6*in[0]-3, 0};
│ │ │ │ +
178 out[9][2] = { 0, 0, 0};
│ │ │ │ +
179
│ │ │ │ +
180 out[10][0] = {-6*in[0]+3, 0, 0};
│ │ │ │ +
181 out[10][1] = { 0, 0, 0};
│ │ │ │ +
182 out[10][2] = { 6*in[2]-6, 0, 6*in[0]-3};
│ │ │ │ +
183
│ │ │ │ +
184 out[11][0] = { 6*in[0]-3, 0, 0};
│ │ │ │ +
185 out[11][1] = { 0, 0, 0};
│ │ │ │ +
186 out[11][2] = { -6*in[2], 0, -6*in[0]+3};
│ │ │ │ +
187
│ │ │ │ +
188 out[12][0] = {-6*in[2]+3, 0, -6*in[0]+6};
│ │ │ │ +
189 out[12][1] = { 0, 0, 0};
│ │ │ │ +
190 out[12][2] = { 0, 0, 6*in[2]-3};
│ │ │ │ +
191
│ │ │ │ +
192 out[13][0] = { 6*in[2]-3, 0, 6*in[0]};
│ │ │ │ +
193 out[13][1] = { 0, 0, 0};
│ │ │ │ +
194 out[13][2] = { 0, 0, -6*in[2]+3};
│ │ │ │ +
195
│ │ │ │ +
196 out[14][0] = { 0, 0, 0};
│ │ │ │ +
197 out[14][1] = { 0, 6*in[2]-3, 6*in[1]-6};
│ │ │ │ +
198 out[14][2] = { 0, 0, -6*in[2]+3};
│ │ │ │ +
199
│ │ │ │ +
200 out[15][0] = { 0, 0, 0};
│ │ │ │ +
201 out[15][1] = { 0, -6*in[2]+3, -6*in[1]};
│ │ │ │ +
202 out[15][2] = { 0, 0, 6*in[2]-3};
│ │ │ │ +
203
│ │ │ │ +
204 out[16][0] = { 0, 0, 0};
│ │ │ │ +
205 out[16][1] = { 0, 6*in[1]-3, 0};
│ │ │ │ +
206 out[16][2] = { 0, -6*in[2]+6, -6*in[1]+3};
│ │ │ │ +
207
│ │ │ │ +
208 out[17][0] = { 0, 0, 0};
│ │ │ │ +
209 out[17][1] = { 0, -6*in[1]+3, 0};
│ │ │ │ +
210 out[17][2] = { 0, 6*in[2], 6*in[1]-3};
│ │ │ │ +
211 }
│ │ │ │ +
│ │ │ │ +
212
│ │ │ │ +
│ │ │ │ +
214 void partial (const std::array<unsigned int, 3>& order,
│ │ │ │ +
215 const typename Traits::DomainType& in, // position
│ │ │ │ +
216 std::vector<typename Traits::RangeType>& out) const // return value
│ │ │ │ +
217 {
│ │ │ │ +
218 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
│ │ │ │ +
219 if (totalOrder == 0) {
│ │ │ │ +
220 evaluateFunction(in, out);
│ │ │ │ +
221 } else if (totalOrder == 1) {
│ │ │ │ +
222 out.resize(size());
│ │ │ │ +
223 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
│ │ │ │ +
224
│ │ │ │ +
225 switch (direction) {
│ │ │ │ +
226 case 0:
│ │ │ │ +
227 out[0] = { sign_[0], 0, 0};
│ │ │ │ +
228 out[1] = { sign_[1], 0, 0};
│ │ │ │ +
229 out[2] = { 0, 0, 0};
│ │ │ │ +
230 out[3] = { 0, 0, 0};
│ │ │ │ +
231 out[4] = { 0, 0, 0};
│ │ │ │ +
232 out[5] = { 0, 0, 0};
│ │ │ │ +
233 out[6] = { 6*in[1]-3, 0, 0};
│ │ │ │ +
234 out[7] = {-6*in[1]+3, 0, 0};
│ │ │ │ +
235 out[8] = { 6*in[0]-3, -6*in[1]+6, 0};
│ │ │ │ +
236 out[9] = {-6*in[0]+3, 6*in[1], 0};
│ │ │ │ +
237 out[10] = {-6*in[0]+3, 0, 6*in[2]-6};
│ │ │ │ +
238 out[11] = { 6*in[0]-3, 0, -6*in[2]};
│ │ │ │ +
239 out[12] = {-6*in[2]+3, 0, 0};
│ │ │ │ +
240 out[13] = { 6*in[2]-3, 0, 0};
│ │ │ │ +
241 out[14] = { 0, 0, 0};
│ │ │ │ +
242 out[15] = { 0, 0, 0};
│ │ │ │ +
243 out[16] = { 0, 0, 0};
│ │ │ │ +
244 out[17] = { 0, 0, 0};
│ │ │ │ +
245 break;
│ │ │ │ +
246 case 1:
│ │ │ │ +
247 out[0] = { 0, 0, 0};
│ │ │ │ +
248 out[1] = { 0, 0, 0};
│ │ │ │ +
249 out[2] = { 0, sign_[2], 0};
│ │ │ │ +
250 out[3] = { 0, sign_[3], 0};
│ │ │ │ +
251 out[4] = { 0, 0, 0};
│ │ │ │ +
252 out[5] = { 0, 0, 0};
│ │ │ │ +
253 out[6] = { 6*in[0]-6, -6*in[1]+3, 0};
│ │ │ │ +
254 out[7] = { -6*in[0], 6*in[1]-3, 0};
│ │ │ │ +
255 out[8] = { 0, -6*in[0]+3, 0};
│ │ │ │ +
256 out[9] = { 0, 6*in[0]-3, 0};
│ │ │ │ +
257 out[10] = { 0, 0, 0};
│ │ │ │ +
258 out[11] = { 0, 0, 0};
│ │ │ │ +
259 out[12] = { 0, 0, 0};
│ │ │ │ +
260 out[13] = { 0, 0, 0};
│ │ │ │ +
261 out[14] = { 0, 6*in[2]-3, 0};
│ │ │ │ +
262 out[15] = { 0, -6*in[2]+3, 0};
│ │ │ │ +
263 out[16] = { 0, 6*in[1]-3, -6*in[2]+6};
│ │ │ │ +
264 out[17] = { 0, -6*in[1]+3, 6*in[2]};
│ │ │ │ +
265 break;
│ │ │ │ +
266 case 2:
│ │ │ │ +
267 out[0] = { 0, 0, 0};
│ │ │ │ +
268 out[1] = { 0, 0, 0};
│ │ │ │ +
269 out[2] = { 0, 0, 0};
│ │ │ │ +
270 out[3] = { 0, 0, 0};
│ │ │ │ +
271 out[4] = { 0, 0, sign_[4]};
│ │ │ │ +
272 out[5] = { 0, 0, sign_[5]};
│ │ │ │ +
273 out[6] = { 0, 0, 0};
│ │ │ │ +
274 out[7] = { 0, 0, 0};
│ │ │ │ +
275 out[8] = { 0, 0, 0};
│ │ │ │ +
276 out[9] = { 0, 0, 0};
│ │ │ │ +
277 out[10] = { 0, 0, 6*in[0]-3};
│ │ │ │ +
278 out[11] = { 0, 0, -6*in[0]+3};
│ │ │ │ +
279 out[12] = {-6*in[0]+6, 0, 6*in[2]-3};
│ │ │ │ +
280 out[13] = { 6*in[0], 0, -6*in[2]+3};
│ │ │ │ +
281 out[14] = { 0, 6*in[1]-6, -6*in[2]+3};
│ │ │ │ +
282 out[15] = { 0, -6*in[1], 6*in[2]-3};
│ │ │ │ +
283 out[16] = { 0, 0, -6*in[1]+3};
│ │ │ │ +
284 out[17] = { 0, 0, 6*in[1]-3};
│ │ │ │ +
285 break;
│ │ │ │ +
286 default:
│ │ │ │ +
287 DUNE_THROW(RangeError, "Component out of range.");
│ │ │ │ +
288 }
│ │ │ │ +
289 } else {
│ │ │ │ +
290 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
│ │ │ │ +
291 }
│ │ │ │ +
292 }
│ │ │ │ +
│ │ │ │ +
293
│ │ │ │ +
│ │ │ │ +
295 unsigned int order() const
│ │ │ │ +
296 {
│ │ │ │ +
297 return 2;
│ │ │ │ +
298 }
│ │ │ │ +
│ │ │ │ +
299
│ │ │ │ +
300 private:
│ │ │ │ +
301 std::array<R,6> sign_;
│ │ │ │ +
302 };
│ │ │ │ +
│ │ │ │ +
303} // end namespace Dune
│ │ │ │ +
304#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
Second order Brezzi-Douglas-Marini shape functions on triangles.
Definition brezzidouglasmarini2simplex2d.hh:27
│ │ │ │ -
const Traits::LocalCoefficientsType & localCoefficients() const
Definition brezzidouglasmarini2simplex2d.hh:54
│ │ │ │ -
LocalFiniteElementTraits< BDM2Simplex2DLocalBasis< D, R >, BDM2Simplex2DLocalCoefficients, BDM2Simplex2DLocalInterpolation< BDM2Simplex2DLocalBasis< D, R > > > Traits
Definition brezzidouglasmarini2simplex2d.hh:33
│ │ │ │ -
BDM2Simplex2DLocalFiniteElement()
Standard constructor.
Definition brezzidouglasmarini2simplex2d.hh:36
│ │ │ │ -
static constexpr GeometryType type()
Definition brezzidouglasmarini2simplex2d.hh:70
│ │ │ │ -
const Traits::LocalBasisType & localBasis() const
Definition brezzidouglasmarini2simplex2d.hh:49
│ │ │ │ -
const Traits::LocalInterpolationType & localInterpolation() const
Definition brezzidouglasmarini2simplex2d.hh:59
│ │ │ │ -
BDM2Simplex2DLocalFiniteElement(int s)
Make set number s, where 0 <= s < 8.
Definition brezzidouglasmarini2simplex2d.hh:44
│ │ │ │ -
unsigned int size() const
Number of shape functions in this finite element.
Definition brezzidouglasmarini2simplex2d.hh:65
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:30
│ │ │ │ -
Layout map for Brezzi-Douglas-Marini-2 elements on triangles.
Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:24
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on triangles.
Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:25
│ │ │ │ -
traits helper struct
Definition localfiniteelementtraits.hh:13
│ │ │ │ -
LB LocalBasisType
Definition localfiniteelementtraits.hh:16
│ │ │ │ -
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:20
│ │ │ │ -
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:24
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:31
│ │ │ │ +
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:135
│ │ │ │ +
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:68
│ │ │ │ +
LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
Definition brezzidouglasmarini1cube3dlocalbasis.hh:36
│ │ │ │ +
void partial(const std::array< unsigned int, 3 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of all shape functions.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:214
│ │ │ │ +
BDM1Cube3DLocalBasis(std::bitset< 6 > s)
Make set number s, where 0 <= s < 64.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:50
│ │ │ │ +
unsigned int order() const
Polynomial order of the shape functions.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:295
│ │ │ │ +
BDM1Cube3DLocalBasis()
Standard constructor.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:39
│ │ │ │ +
unsigned int size() const
number of shape functions
Definition brezzidouglasmarini1cube3dlocalbasis.hh:57
│ │ │ │ +
Type traits for LocalBasisVirtualInterface.
Definition common/localbasis.hh:35
│ │ │ │ +
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,143 +1,334 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ -brezzidouglasmarini2simplex2d.hh │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d │ │ │ │ │ +brezzidouglasmarini1cube3dlocalbasis.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef │ │ │ │ │ -DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH │ │ │ │ │ -6#define │ │ │ │ │ -DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ -9 │ │ │ │ │ -10#include "../common/localfiniteelementtraits.hh" │ │ │ │ │ -11#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ -12#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h" │ │ │ │ │ -13#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h" │ │ │ │ │ +8#include │ │ │ │ │ +9#include │ │ │ │ │ +10#include │ │ │ │ │ +11#include │ │ │ │ │ +12 │ │ │ │ │ +13#include │ │ │ │ │ 14 │ │ │ │ │ -15namespace _D_u_n_e │ │ │ │ │ -16{ │ │ │ │ │ -25 template │ │ │ │ │ -_2_6 class _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -27 { │ │ │ │ │ -28 │ │ │ │ │ -29 public: │ │ │ │ │ -30 typedef _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s< │ │ │ │ │ -31 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_>, │ │ │ │ │ -32 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s, │ │ │ │ │ -_3_3 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> > > _T_r_a_i_t_s; │ │ │ │ │ -34 │ │ │ │ │ -_3_6 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t () │ │ │ │ │ -37 {} │ │ │ │ │ -38 │ │ │ │ │ -_4_4 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t (int s) : │ │ │ │ │ -45 basis(s), │ │ │ │ │ -46 interpolation(s) │ │ │ │ │ -47 {} │ │ │ │ │ -48 │ │ │ │ │ -_4_9 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e& _l_o_c_a_l_B_a_s_i_s () const │ │ │ │ │ -50 { │ │ │ │ │ -51 return basis; │ │ │ │ │ -52 } │ │ │ │ │ -53 │ │ │ │ │ -_5_4 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e& _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () const │ │ │ │ │ -55 { │ │ │ │ │ -56 return coefficients; │ │ │ │ │ -57 } │ │ │ │ │ -58 │ │ │ │ │ -_5_9 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e& _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n () const │ │ │ │ │ -60 { │ │ │ │ │ -61 return interpolation; │ │ │ │ │ -62 } │ │ │ │ │ -63 │ │ │ │ │ -_6_5 unsigned int _s_i_z_e () const │ │ │ │ │ -66 { │ │ │ │ │ -67 return basis.size(); │ │ │ │ │ -68 } │ │ │ │ │ -69 │ │ │ │ │ -_7_0 static constexpr GeometryType _t_y_p_e () │ │ │ │ │ -71 { │ │ │ │ │ -72 return GeometryTypes::triangle; │ │ │ │ │ -73 } │ │ │ │ │ -74 │ │ │ │ │ -75 private: │ │ │ │ │ -76 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> basis; │ │ │ │ │ -77 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s coefficients; │ │ │ │ │ -78 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> > │ │ │ │ │ -interpolation; │ │ │ │ │ -79 }; │ │ │ │ │ -80} │ │ │ │ │ -81#endif / │ │ │ │ │ -/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_b_a_s_i_s_._h_h │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h │ │ │ │ │ +15#include "../../common/localbasis.hh" │ │ │ │ │ +16 │ │ │ │ │ +17namespace _D_u_n_e │ │ │ │ │ +18{ │ │ │ │ │ +29 template │ │ │ │ │ +_3_0 class _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +31 { │ │ │ │ │ +32 │ │ │ │ │ +33 public: │ │ │ │ │ +34 typedef _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_<_D_,_3_,_D_u_n_e_:_:_F_i_e_l_d_V_e_c_t_o_r_<_D_,_3_>, │ │ │ │ │ +35 R,3,Dune::FieldVector, │ │ │ │ │ +_3_6 Dune::FieldMatrix > _T_r_a_i_t_s; │ │ │ │ │ +37 │ │ │ │ │ +_3_9 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s() │ │ │ │ │ +40 { │ │ │ │ │ +41 for (size_t i=0; i<6; i++) │ │ │ │ │ +42 sign_[i] = 1.0; │ │ │ │ │ +43 } │ │ │ │ │ +44 │ │ │ │ │ +_5_0 _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s(std::bitset<6> s) │ │ │ │ │ +51 { │ │ │ │ │ +52 for (size_t i=0; i<6; i++) │ │ │ │ │ +53 sign_[i] = s[i] ? -1.0 : 1.0; │ │ │ │ │ +54 } │ │ │ │ │ +55 │ │ │ │ │ +_5_7 unsigned int _s_i_z_e() const │ │ │ │ │ +58 { │ │ │ │ │ +59 return 18; │ │ │ │ │ +60 } │ │ │ │ │ +61 │ │ │ │ │ +_6_8 inline void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ +69 std::vector& out) const │ │ │ │ │ +70 { │ │ │ │ │ +71 out.resize(_s_i_z_e()); │ │ │ │ │ +72 │ │ │ │ │ +73 out[0][0] = sign_[0] * (in[0] - 1.0); │ │ │ │ │ +74 out[0][1] = 0; │ │ │ │ │ +75 out[0][2] = 0; │ │ │ │ │ +76 out[1][0] = sign_[1] * in[0]; │ │ │ │ │ +77 out[1][1] = 0; │ │ │ │ │ +78 out[1][2] = 0; │ │ │ │ │ +79 out[2][0] = 0; │ │ │ │ │ +80 out[2][1] = sign_[2] * (in[1] - 1.0); │ │ │ │ │ +81 out[2][2] = 0; │ │ │ │ │ +82 out[3][0] = 0; │ │ │ │ │ +83 out[3][1] = sign_[3] * in[1]; │ │ │ │ │ +84 out[3][2] = 0; │ │ │ │ │ +85 out[4][0] = 0; │ │ │ │ │ +86 out[4][1] = 0; │ │ │ │ │ +87 out[4][2] = sign_[4] * (in[2] - 1.0); │ │ │ │ │ +88 out[5][0] = 0; │ │ │ │ │ +89 out[5][1] = 0; │ │ │ │ │ +90 out[5][2] = sign_[5] * in[2]; │ │ │ │ │ +91 out[6][0] = 6.0 * in[0] * in[1] - 3 * in[0]-6 * in[1] + 3.0; │ │ │ │ │ +92 out[6][1] = -3.0 * in[1] * in[1] + 3 * in[1]; │ │ │ │ │ +93 out[6][2] = 0; │ │ │ │ │ +94 out[7][0] = -6.0 * in[0] * in[1] + 3 * in[0]; │ │ │ │ │ +95 out[7][1] = 3.0 * in[1] * in[1] - 3 * in[1]; │ │ │ │ │ +96 out[7][2] = 0; │ │ │ │ │ +97 out[8][0] = 3.0 * in[0] * in[0] - 3 * in[0]; │ │ │ │ │ +98 out[8][1] = -6.0 * in[0] * in[1] + 3 * in[1]+6 * in[0]-3.0; │ │ │ │ │ +99 out[8][2] = 0; │ │ │ │ │ +100 out[9][0] = -3.0 * in[0] * in[0] + 3 * in[0]; │ │ │ │ │ +101 out[9][1] = 6.0 * in[0] * in[1] - 3 * in[1]; │ │ │ │ │ +102 out[9][2] = 0; │ │ │ │ │ +103 out[10][0] = -3.0 * in[0] * in[0] + 3 * in[0]; │ │ │ │ │ +104 out[10][1] = 0; │ │ │ │ │ +105 out[10][2] = 6.0 * in[0] * in[2]-6 * in[0]-3 * in[2] + 3.0; │ │ │ │ │ +106 out[11][0] = 3.0 * in[0] * in[0]-3 * in[0]; │ │ │ │ │ +107 out[11][1] = 0; │ │ │ │ │ +108 out[11][2] = -6.0 * in[0] * in[2] + 3 * in[2]; │ │ │ │ │ +109 out[12][0] = -6.0 * in[0] * in[2]+6 * in[2] + 3 * in[0]-3.0; │ │ │ │ │ +110 out[12][1] = 0; │ │ │ │ │ +111 out[12][2] = 3.0 * in[2] * in[2]-3 * in[2]; │ │ │ │ │ +112 out[13][0] = -3 * in[0]+6 * in[0] * in[2]; │ │ │ │ │ +113 out[13][1] = 0; │ │ │ │ │ +114 out[13][2] = -3.0 * in[2] * in[2] + 3 * in[2]; │ │ │ │ │ +115 out[14][0] = 0; │ │ │ │ │ +116 out[14][1] = 6.0 * in[1] * in[2]-3 * in[1]-6 * in[2] + 3.0; │ │ │ │ │ +117 out[14][2] = -3 * in[2] * in[2] + 3 * in[2]; │ │ │ │ │ +118 out[15][0] = 0; │ │ │ │ │ +119 out[15][1] = -6.0 * in[1] * in[2] + 3 * in[1]; │ │ │ │ │ +120 out[15][2] = 3.0 * in[2] * in[2]-3 * in[2]; │ │ │ │ │ +121 out[16][0] = 0; │ │ │ │ │ +122 out[16][1] = 3.0 * in[1] * in[1]-3 * in[1]; │ │ │ │ │ +123 out[16][2] = -6.0 * in[1] * in[2] + 3 * in[2]+6 * in[1]-3.0; │ │ │ │ │ +124 out[17][0] = 0; │ │ │ │ │ +125 out[17][1] = -3.0 * in[1] * in[1] + 3 * in[1]; │ │ │ │ │ +126 out[17][2] = 6.0 * in[1] * in[2] - 3.0 * in[2]; │ │ │ │ │ +127 } │ │ │ │ │ +128 │ │ │ │ │ +_1_3_5 inline void _e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n(const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ +136 std::vector& out) const │ │ │ │ │ +137 { │ │ │ │ │ +138 out.resize(_s_i_z_e()); │ │ │ │ │ +139 │ │ │ │ │ +140 out[0][0] = { sign_[0], 0, 0}; │ │ │ │ │ +141 out[0][1] = { 0, 0, 0}; │ │ │ │ │ +142 out[0][2] = { 0, 0, 0}; │ │ │ │ │ +143 │ │ │ │ │ +144 out[1][0] = { sign_[1], 0, 0}; │ │ │ │ │ +145 out[1][1] = { 0, 0, 0}; │ │ │ │ │ +146 out[1][2] = { 0, 0, 0}; │ │ │ │ │ +147 │ │ │ │ │ +148 out[2][0] = { 0, 0, 0}; │ │ │ │ │ +149 out[2][1] = { 0, sign_[2], 0}; │ │ │ │ │ +150 out[2][2] = { 0, 0, 0}; │ │ │ │ │ +151 │ │ │ │ │ +152 out[3][0] = { 0, 0, 0}; │ │ │ │ │ +153 out[3][1] = { 0, sign_[3], 0}; │ │ │ │ │ +154 out[3][2] = { 0, 0, 0}; │ │ │ │ │ +155 │ │ │ │ │ +156 out[4][0] = { 0, 0, 0}; │ │ │ │ │ +157 out[4][1] = { 0, 0, 0}; │ │ │ │ │ +158 out[4][2] = { 0, 0, sign_[4]}; │ │ │ │ │ +159 │ │ │ │ │ +160 out[5][0] = { 0, 0, 0}; │ │ │ │ │ +161 out[5][1] = { 0, 0, 0}; │ │ │ │ │ +162 out[5][2] = { 0, 0, sign_[5]}; │ │ │ │ │ +163 │ │ │ │ │ +164 out[6][0] = { 6*in[1]-3, 6*in[0]-6, 0}; │ │ │ │ │ +165 out[6][1] = { 0, -6*in[1]+3, 0}; │ │ │ │ │ +166 out[6][2] = { 0, 0, 0}; │ │ │ │ │ +167 │ │ │ │ │ +168 out[7][0] = {-6*in[1]+3, -6*in[0], 0}; │ │ │ │ │ +169 out[7][1] = { 0, 6*in[1]-3, 0}; │ │ │ │ │ +170 out[7][2] = { 0, 0, 0}; │ │ │ │ │ +171 │ │ │ │ │ +172 out[8][0] = { 6*in[0]-3, 0, 0}; │ │ │ │ │ +173 out[8][1] = {-6*in[1]+6, -6*in[0]+3, 0}; │ │ │ │ │ +174 out[8][2] = { 0, 0, 0}; │ │ │ │ │ +175 │ │ │ │ │ +176 out[9][0] = {-6*in[0]+3, 0, 0}; │ │ │ │ │ +177 out[9][1] = { 6*in[1], 6*in[0]-3, 0}; │ │ │ │ │ +178 out[9][2] = { 0, 0, 0}; │ │ │ │ │ +179 │ │ │ │ │ +180 out[10][0] = {-6*in[0]+3, 0, 0}; │ │ │ │ │ +181 out[10][1] = { 0, 0, 0}; │ │ │ │ │ +182 out[10][2] = { 6*in[2]-6, 0, 6*in[0]-3}; │ │ │ │ │ +183 │ │ │ │ │ +184 out[11][0] = { 6*in[0]-3, 0, 0}; │ │ │ │ │ +185 out[11][1] = { 0, 0, 0}; │ │ │ │ │ +186 out[11][2] = { -6*in[2], 0, -6*in[0]+3}; │ │ │ │ │ +187 │ │ │ │ │ +188 out[12][0] = {-6*in[2]+3, 0, -6*in[0]+6}; │ │ │ │ │ +189 out[12][1] = { 0, 0, 0}; │ │ │ │ │ +190 out[12][2] = { 0, 0, 6*in[2]-3}; │ │ │ │ │ +191 │ │ │ │ │ +192 out[13][0] = { 6*in[2]-3, 0, 6*in[0]}; │ │ │ │ │ +193 out[13][1] = { 0, 0, 0}; │ │ │ │ │ +194 out[13][2] = { 0, 0, -6*in[2]+3}; │ │ │ │ │ +195 │ │ │ │ │ +196 out[14][0] = { 0, 0, 0}; │ │ │ │ │ +197 out[14][1] = { 0, 6*in[2]-3, 6*in[1]-6}; │ │ │ │ │ +198 out[14][2] = { 0, 0, -6*in[2]+3}; │ │ │ │ │ +199 │ │ │ │ │ +200 out[15][0] = { 0, 0, 0}; │ │ │ │ │ +201 out[15][1] = { 0, -6*in[2]+3, -6*in[1]}; │ │ │ │ │ +202 out[15][2] = { 0, 0, 6*in[2]-3}; │ │ │ │ │ +203 │ │ │ │ │ +204 out[16][0] = { 0, 0, 0}; │ │ │ │ │ +205 out[16][1] = { 0, 6*in[1]-3, 0}; │ │ │ │ │ +206 out[16][2] = { 0, -6*in[2]+6, -6*in[1]+3}; │ │ │ │ │ +207 │ │ │ │ │ +208 out[17][0] = { 0, 0, 0}; │ │ │ │ │ +209 out[17][1] = { 0, -6*in[1]+3, 0}; │ │ │ │ │ +210 out[17][2] = { 0, 6*in[2], 6*in[1]-3}; │ │ │ │ │ +211 } │ │ │ │ │ +212 │ │ │ │ │ +_2_1_4 void _p_a_r_t_i_a_l (const std::array& _o_r_d_e_r, │ │ │ │ │ +215 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, // position │ │ │ │ │ +216 std::vector& out) const // return value │ │ │ │ │ +217 { │ │ │ │ │ +218 auto totalOrder = std::accumulate(_o_r_d_e_r.begin(), _o_r_d_e_r.end(), 0); │ │ │ │ │ +219 if (totalOrder == 0) { │ │ │ │ │ +220 _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(in, out); │ │ │ │ │ +221 } else if (totalOrder == 1) { │ │ │ │ │ +222 out.resize(_s_i_z_e()); │ │ │ │ │ +223 auto const direction = std::distance(_o_r_d_e_r.begin(), std::find(_o_r_d_e_r.begin │ │ │ │ │ +(), _o_r_d_e_r.end(), 1)); │ │ │ │ │ +224 │ │ │ │ │ +225 switch (direction) { │ │ │ │ │ +226 case 0: │ │ │ │ │ +227 out[0] = { sign_[0], 0, 0}; │ │ │ │ │ +228 out[1] = { sign_[1], 0, 0}; │ │ │ │ │ +229 out[2] = { 0, 0, 0}; │ │ │ │ │ +230 out[3] = { 0, 0, 0}; │ │ │ │ │ +231 out[4] = { 0, 0, 0}; │ │ │ │ │ +232 out[5] = { 0, 0, 0}; │ │ │ │ │ +233 out[6] = { 6*in[1]-3, 0, 0}; │ │ │ │ │ +234 out[7] = {-6*in[1]+3, 0, 0}; │ │ │ │ │ +235 out[8] = { 6*in[0]-3, -6*in[1]+6, 0}; │ │ │ │ │ +236 out[9] = {-6*in[0]+3, 6*in[1], 0}; │ │ │ │ │ +237 out[10] = {-6*in[0]+3, 0, 6*in[2]-6}; │ │ │ │ │ +238 out[11] = { 6*in[0]-3, 0, -6*in[2]}; │ │ │ │ │ +239 out[12] = {-6*in[2]+3, 0, 0}; │ │ │ │ │ +240 out[13] = { 6*in[2]-3, 0, 0}; │ │ │ │ │ +241 out[14] = { 0, 0, 0}; │ │ │ │ │ +242 out[15] = { 0, 0, 0}; │ │ │ │ │ +243 out[16] = { 0, 0, 0}; │ │ │ │ │ +244 out[17] = { 0, 0, 0}; │ │ │ │ │ +245 break; │ │ │ │ │ +246 case 1: │ │ │ │ │ +247 out[0] = { 0, 0, 0}; │ │ │ │ │ +248 out[1] = { 0, 0, 0}; │ │ │ │ │ +249 out[2] = { 0, sign_[2], 0}; │ │ │ │ │ +250 out[3] = { 0, sign_[3], 0}; │ │ │ │ │ +251 out[4] = { 0, 0, 0}; │ │ │ │ │ +252 out[5] = { 0, 0, 0}; │ │ │ │ │ +253 out[6] = { 6*in[0]-6, -6*in[1]+3, 0}; │ │ │ │ │ +254 out[7] = { -6*in[0], 6*in[1]-3, 0}; │ │ │ │ │ +255 out[8] = { 0, -6*in[0]+3, 0}; │ │ │ │ │ +256 out[9] = { 0, 6*in[0]-3, 0}; │ │ │ │ │ +257 out[10] = { 0, 0, 0}; │ │ │ │ │ +258 out[11] = { 0, 0, 0}; │ │ │ │ │ +259 out[12] = { 0, 0, 0}; │ │ │ │ │ +260 out[13] = { 0, 0, 0}; │ │ │ │ │ +261 out[14] = { 0, 6*in[2]-3, 0}; │ │ │ │ │ +262 out[15] = { 0, -6*in[2]+3, 0}; │ │ │ │ │ +263 out[16] = { 0, 6*in[1]-3, -6*in[2]+6}; │ │ │ │ │ +264 out[17] = { 0, -6*in[1]+3, 6*in[2]}; │ │ │ │ │ +265 break; │ │ │ │ │ +266 case 2: │ │ │ │ │ +267 out[0] = { 0, 0, 0}; │ │ │ │ │ +268 out[1] = { 0, 0, 0}; │ │ │ │ │ +269 out[2] = { 0, 0, 0}; │ │ │ │ │ +270 out[3] = { 0, 0, 0}; │ │ │ │ │ +271 out[4] = { 0, 0, sign_[4]}; │ │ │ │ │ +272 out[5] = { 0, 0, sign_[5]}; │ │ │ │ │ +273 out[6] = { 0, 0, 0}; │ │ │ │ │ +274 out[7] = { 0, 0, 0}; │ │ │ │ │ +275 out[8] = { 0, 0, 0}; │ │ │ │ │ +276 out[9] = { 0, 0, 0}; │ │ │ │ │ +277 out[10] = { 0, 0, 6*in[0]-3}; │ │ │ │ │ +278 out[11] = { 0, 0, -6*in[0]+3}; │ │ │ │ │ +279 out[12] = {-6*in[0]+6, 0, 6*in[2]-3}; │ │ │ │ │ +280 out[13] = { 6*in[0], 0, -6*in[2]+3}; │ │ │ │ │ +281 out[14] = { 0, 6*in[1]-6, -6*in[2]+3}; │ │ │ │ │ +282 out[15] = { 0, -6*in[1], 6*in[2]-3}; │ │ │ │ │ +283 out[16] = { 0, 0, -6*in[1]+3}; │ │ │ │ │ +284 out[17] = { 0, 0, 6*in[1]-3}; │ │ │ │ │ +285 break; │ │ │ │ │ +286 default: │ │ │ │ │ +287 DUNE_THROW(RangeError, "Component out of range."); │ │ │ │ │ +288 } │ │ │ │ │ +289 } else { │ │ │ │ │ +290 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented"); │ │ │ │ │ +291 } │ │ │ │ │ +292 } │ │ │ │ │ +293 │ │ │ │ │ +_2_9_5 unsigned int _o_r_d_e_r() const │ │ │ │ │ +296 { │ │ │ │ │ +297 return 2; │ │ │ │ │ +298 } │ │ │ │ │ +299 │ │ │ │ │ +300 private: │ │ │ │ │ +301 std::array sign_; │ │ │ │ │ +302 }; │ │ │ │ │ +303} // end namespace Dune │ │ │ │ │ +304#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -Second order Brezzi-Douglas-Marini shape functions on triangles. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:27 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -const Traits::LocalCoefficientsType & localCoefficients() const │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:54 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s │ │ │ │ │ -LocalFiniteElementTraits< BDM2Simplex2DLocalBasis< D, R >, │ │ │ │ │ -BDM2Simplex2DLocalCoefficients, BDM2Simplex2DLocalInterpolation< │ │ │ │ │ -BDM2Simplex2DLocalBasis< D, R > > > Traits │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:33 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -BDM2Simplex2DLocalFiniteElement() │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:31 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n │ │ │ │ │ +void evaluateJacobian(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ +typename Traits::JacobianType > &out) const │ │ │ │ │ +Evaluate Jacobian of all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:135 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n │ │ │ │ │ +void evaluateFunction(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ +typename Traits::RangeType > &out) const │ │ │ │ │ +Evaluate all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:68 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_T_r_a_i_t_s │ │ │ │ │ +LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, │ │ │ │ │ +3 >, Dune::FieldMatrix< R, 3, 3 > > Traits │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:36 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_p_a_r_t_i_a_l │ │ │ │ │ +void partial(const std::array< unsigned int, 3 > &order, const typename │ │ │ │ │ +Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const │ │ │ │ │ +Evaluate partial derivatives of all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:214 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +BDM1Cube3DLocalBasis(std::bitset< 6 > s) │ │ │ │ │ +Make set number s, where 0 <= s < 64. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:50 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_o_r_d_e_r │ │ │ │ │ +unsigned int order() const │ │ │ │ │ +Polynomial order of the shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:295 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +BDM1Cube3DLocalBasis() │ │ │ │ │ Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:36 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_t_y_p_e │ │ │ │ │ -static constexpr GeometryType type() │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:70 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_B_a_s_i_s │ │ │ │ │ -const Traits::LocalBasisType & localBasis() const │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:49 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -const Traits::LocalInterpolationType & localInterpolation() const │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:59 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -BDM2Simplex2DLocalFiniteElement(int s) │ │ │ │ │ -Make set number s, where 0 <= s < 8. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:44 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_s_i_z_e │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:39 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_B_a_s_i_s_:_:_s_i_z_e │ │ │ │ │ unsigned int size() const │ │ │ │ │ -Number of shape functions in this finite element. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:65 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:30 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -Layout map for Brezzi-Douglas-Marini-2 elements on triangles. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalcoefficients.hh:24 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -First order Brezzi-Douglas-Marini shape functions on triangles. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalinterpolation.hh:25 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s │ │ │ │ │ -traits helper struct │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:13 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e │ │ │ │ │ -LB LocalBasisType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:16 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e │ │ │ │ │ -LC LocalCoefficientsType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:20 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e │ │ │ │ │ -LI LocalInterpolationType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:24 │ │ │ │ │ +number of shape functions │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3dlocalbasis.hh:57 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s │ │ │ │ │ +Type traits for LocalBasisVirtualInterface. │ │ │ │ │ +DDeeffiinniittiioonn common/localbasis.hh:35 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e │ │ │ │ │ +D DomainType │ │ │ │ │ +domain type │ │ │ │ │ +DDeeffiinniittiioonn common/localbasis.hh:43 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00095.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2simplex2dlocalbasis.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarinisimplex.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,37 +65,36 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini2simplex2dlocalbasis.hh File Reference
│ │ │ │ +
brezzidouglasmarinisimplex.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <array>
│ │ │ │ -#include <bitset>
│ │ │ │ -#include <numeric>
│ │ │ │ -#include <vector>
│ │ │ │ -#include <dune/common/fmatrix.hh>
│ │ │ │ -#include "../../common/localbasis.hh"
│ │ │ │ + │ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM2Simplex2DLocalBasis< D, R >
 First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
class  Dune::BrezziDouglasMariniSimplexLocalFiniteElement< D, R, 2, 1 >
 Brezzi-Douglas-Marini local finite elements for simplices with dimension 2 and order 1. More...
 
class  Dune::BrezziDouglasMariniSimplexLocalFiniteElement< D, R, 2, 2 >
 Brezzi-Douglas-Marini local finite elements for simplices with dimension 2 and order 2. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,27 +1,28 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini2simplex2dlocalbasis.hh File Reference │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ +brezzidouglasmarinisimplex.hh File Reference │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d_._h_h> │ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_._h_h> │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_<_ _D_,_ _R_ _> │ │ │ │ │ -  First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ - _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _1_ _> │ │ │ │ │ +  Brezzi-Douglas-Marini local finite elements for simplices with │ │ │ │ │ + dimension 2 and order 1. _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ +class   _D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _2_ _> │ │ │ │ │ +  Brezzi-Douglas-Marini local finite elements for simplices with │ │ │ │ │ + dimension 2 and order 2. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00095_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2simplex2dlocalbasis.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarinisimplex.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,334 +70,88 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarini2simplex2dlocalbasis.hh
│ │ │ │ +
brezzidouglasmarinisimplex.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH
│ │ │ │
7
│ │ │ │ -
8#include <array>
│ │ │ │ -
9#include <bitset>
│ │ │ │ -
10#include <numeric>
│ │ │ │ -
11#include <vector>
│ │ │ │ -
12
│ │ │ │ -
13#include <dune/common/fmatrix.hh>
│ │ │ │ -
14
│ │ │ │ -
15#include "../../common/localbasis.hh"
│ │ │ │ -
16
│ │ │ │ -
17namespace Dune
│ │ │ │ -
18{
│ │ │ │ + │ │ │ │ + │ │ │ │ +
10
│ │ │ │ +
11
│ │ │ │ +
12namespace Dune
│ │ │ │ +
13{
│ │ │ │ +
22 template<class D, class R, unsigned int dim, unsigned int order>
│ │ │ │ + │ │ │ │ +
24
│ │ │ │
28 template<class D, class R>
│ │ │ │
│ │ │ │ - │ │ │ │ -
30 {
│ │ │ │ -
31
│ │ │ │ + │ │ │ │ + │ │ │ │ +
31 {
│ │ │ │
32 public:
│ │ │ │ - │ │ │ │ -
34 R,2,Dune::FieldVector<R,2>,
│ │ │ │ -
35 Dune::FieldMatrix<R,2,2> > Traits;
│ │ │ │ -
36
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
39 {
│ │ │ │ -
40 for (size_t i=0; i<3; i++)
│ │ │ │ -
41 sign_[i] = 1.0;
│ │ │ │ -
42 }
│ │ │ │ -
│ │ │ │ -
43
│ │ │ │ -
│ │ │ │ -
49 BDM2Simplex2DLocalBasis(std::bitset<3> s)
│ │ │ │ -
50 {
│ │ │ │ -
51 for (size_t i=0; i<3; i++)
│ │ │ │ -
52 sign_[i] = s[i] ? -1.0 : 1.0;
│ │ │ │ -
53 }
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
35 {}
│ │ │ │
│ │ │ │ -
54
│ │ │ │ +
36
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ +
44 {}
│ │ │ │ +
│ │ │ │ +
45 };
│ │ │ │ +
│ │ │ │ +
46
│ │ │ │ +
50 template<class D, class R>
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ +
53 {
│ │ │ │ +
54 public:
│ │ │ │
│ │ │ │ -
56 unsigned int size() const
│ │ │ │ -
57 {
│ │ │ │ -
58 return 12;
│ │ │ │ -
59 }
│ │ │ │ -
│ │ │ │ -
60
│ │ │ │ -
│ │ │ │ -
67 inline void evaluateFunction(const typename Traits::DomainType& in,
│ │ │ │ -
68 std::vector<typename Traits::RangeType>& out) const
│ │ │ │ -
69 {
│ │ │ │ -
70 out.resize(size());
│ │ │ │ -
71
│ │ │ │ -
72 out[0][0] = sign_[0]*(-2*in[0]*in[1] + in[0]*in[0]);
│ │ │ │ -
73 out[0][1] = sign_[0]*(-1 + 6*in[1] -2*in[0]*in[1] - 5*in[1]*in[1]);
│ │ │ │ -
74
│ │ │ │ -
75 out[1][0] = 1.5*in[0] + 3*in[0]*in[1] - 4.5*in[0]*in[0];
│ │ │ │ -
76 out[1][1] = -3 + 6*in[0] + 10.5*in[1] - 15*in[0]*in[1] - 7.5*in[1]*in[1];
│ │ │ │ -
77
│ │ │ │ -
78 out[2][0] = sign_[0]*(-7.5*in[0] + 5*in[0]*in[1] + 12.5*in[0]*in[0]);
│ │ │ │ -
79 out[2][1] = sign_[0]*(-5 + 30*in[0] + 7.5*in[1] - 25*in[0]*in[1] - 30*in[0]*in[0] - 2.5*in[1]*in[1]);
│ │ │ │ -
80
│ │ │ │ -
81
│ │ │ │ -
82
│ │ │ │ -
83 out[3][0] = sign_[1]*(-1 + 6*in[0] - 2*in[0]*in[1] - 5*in[0]*in[0]);
│ │ │ │ -
84 out[3][1] = sign_[1]*(-2*in[0]*in[1] + in[1]*in[1]);
│ │ │ │ -
85
│ │ │ │ -
86 out[4][0] = 3 - 10.5*in[0] - 6*in[1] + 15*in[0]*in[1] + 7.5*in[0]*in[0];
│ │ │ │ -
87 out[4][1] = -1.5*in[1] - 3*in[0]*in[1] + 4.5*in[1]*in[1];
│ │ │ │ -
88
│ │ │ │ -
89 out[5][0] = sign_[1]*(-5 + 7.5*in[0] + 30*in[1] - 25*in[0]*in[1] - 2.5*in[0]*in[0] - 30*in[1]*in[1]);
│ │ │ │ -
90 out[5][1] = sign_[1]*(-7.5*in[1] + 5*in[0]*in[1] + 12.5*in[1]*in[1]);
│ │ │ │ -
91
│ │ │ │ -
92
│ │ │ │ -
93
│ │ │ │ -
94 out[6][0] = sign_[2]*(-3*in[0] + 4*in[0]*in[1] + 4*in[0]*in[0]);
│ │ │ │ -
95 out[6][1] = sign_[2]*(-3*in[1] + 4*in[0]*in[1] + 4*in[1]*in[1]);
│ │ │ │ -
96
│ │ │ │ -
97 out[7][0] = -3*in[0] + 6*in[0]*in[0];
│ │ │ │ -
98 out[7][1] = 3*in[1] - 6*in[1]*in[1];
│ │ │ │ -
99
│ │ │ │ -
100 out[8][0] = sign_[2]*(-10*in[0]*in[1] + 5*in[0]*in[0]);
│ │ │ │ -
101 out[8][1] = sign_[2]*(-10*in[0]*in[1] + 5*in[1]*in[1]);
│ │ │ │ -
102
│ │ │ │ -
103
│ │ │ │ -
104
│ │ │ │ -
105 out[9][0] = 18*in[0] - 12*in[0]*in[1] - 18*in[0]*in[0];
│ │ │ │ -
106 out[9][1] = 6*in[1] - 12*in[0]*in[1] - 6*in[1]*in[1];
│ │ │ │ -
107
│ │ │ │ -
108 out[10][0] = 6*in[0] - 12*in[0]*in[1] - 6*in[0]*in[0];
│ │ │ │ -
109 out[10][1] = 18*in[1] - 12*in[0]*in[1] - 18*in[1]*in[1];
│ │ │ │ -
110
│ │ │ │ -
111 out[11][0] = 90*in[0] - 180*in[0]*in[1] - 90*in[0]*in[0];
│ │ │ │ -
112 out[11][1] = -90*in[1] + 180*in[0]*in[1] + 90*in[1]*in[1];
│ │ │ │ -
113 }
│ │ │ │ -
│ │ │ │ -
114
│ │ │ │ -
│ │ │ │ -
121 inline void evaluateJacobian(const typename Traits::DomainType& in,
│ │ │ │ -
122 std::vector<typename Traits::JacobianType>& out) const
│ │ │ │ -
123 {
│ │ │ │ -
124 out.resize(size());
│ │ │ │ -
125
│ │ │ │ -
126 out[0][0][0] = sign_[0]*(-2*in[1] + 2*in[0]);
│ │ │ │ -
127 out[0][0][1] = sign_[0]*(-2*in[0]);
│ │ │ │ -
128
│ │ │ │ -
129 out[0][1][0] = sign_[0]*(-2*in[1]);
│ │ │ │ -
130 out[0][1][1] = sign_[0]*(6 -2*in[0] - 10*in[1]);
│ │ │ │ -
131
│ │ │ │ -
132
│ │ │ │ -
133 out[1][0][0] = 1.5 + 3*in[1] - 9*in[0];
│ │ │ │ -
134 out[1][0][1] = 3*in[0];
│ │ │ │ -
135
│ │ │ │ -
136 out[1][1][0] = 6 - 15*in[1];
│ │ │ │ -
137 out[1][1][1] = 10.5 - 15*in[0] - 15*in[1];
│ │ │ │ -
138
│ │ │ │ -
139
│ │ │ │ -
140 out[2][0][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]);
│ │ │ │ -
141 out[2][0][1] = sign_[0]*(5*in[0]);
│ │ │ │ -
142
│ │ │ │ -
143 out[2][1][0] = sign_[0]*(30 - 25*in[1] - 60*in[0]);
│ │ │ │ -
144 out[2][1][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]);
│ │ │ │ -
145
│ │ │ │ -
146
│ │ │ │ -
147
│ │ │ │ -
148 out[3][0][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]);
│ │ │ │ -
149 out[3][0][1] = sign_[1]*(-2*in[0]);
│ │ │ │ -
150
│ │ │ │ -
151 out[3][1][0] = sign_[1]*(-2*in[1]);
│ │ │ │ -
152 out[3][1][1] = sign_[1]*(-2*in[0] + 2*in[1]);
│ │ │ │ -
153
│ │ │ │ -
154
│ │ │ │ -
155 out[4][0][0] = -10.5 + 15*in[1] + 15*in[0];
│ │ │ │ -
156 out[4][0][1] = -6 + 15*in[0];
│ │ │ │ -
157
│ │ │ │ -
158 out[4][1][0] = -3*in[1];
│ │ │ │ -
159 out[4][1][1] = -1.5 - 3*in[0] + 9*in[1];
│ │ │ │ -
160
│ │ │ │ -
161
│ │ │ │ -
162 out[5][0][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]);
│ │ │ │ -
163 out[5][0][1] = sign_[1]*(30 - 25*in[0] - 60*in[1]);
│ │ │ │ -
164
│ │ │ │ -
165 out[5][1][0] = sign_[1]*(5*in[1]);
│ │ │ │ -
166 out[5][1][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]);
│ │ │ │ -
167
│ │ │ │ -
168
│ │ │ │ -
169
│ │ │ │ -
170 out[6][0][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]);
│ │ │ │ -
171 out[6][0][1] = sign_[2]*(4*in[0]);
│ │ │ │ -
172
│ │ │ │ -
173 out[6][1][0] = sign_[2]*(4*in[1]);
│ │ │ │ -
174 out[6][1][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]);
│ │ │ │ -
175
│ │ │ │ -
176
│ │ │ │ -
177 out[7][0][0] = -3 + 12*in[0];
│ │ │ │ -
178 out[7][0][1] = 0;
│ │ │ │ -
179
│ │ │ │ -
180 out[7][1][0] = 0;
│ │ │ │ -
181 out[7][1][1] = 3 - 12*in[1];
│ │ │ │ -
182
│ │ │ │ -
183
│ │ │ │ -
184 out[8][0][0] = sign_[2]*(-10*in[1] + 10*in[0]);
│ │ │ │ -
185 out[8][0][1] = sign_[2]*(-10*in[0]);
│ │ │ │ -
186
│ │ │ │ -
187 out[8][1][0] = sign_[2]*(-10*in[1]);
│ │ │ │ -
188 out[8][1][1] = sign_[2]*(-10*in[0] + 10*in[1]);
│ │ │ │ -
189
│ │ │ │ -
190
│ │ │ │ -
191 out[9][0][0] = 18 - 12*in[1] - 36*in[0];
│ │ │ │ -
192 out[9][0][1] = -12*in[0];
│ │ │ │ -
193
│ │ │ │ -
194 out[9][1][0] = -12*in[1];
│ │ │ │ -
195 out[9][1][1] = 6 - 12*in[0] - 12*in[1];
│ │ │ │ -
196
│ │ │ │ -
197 out[10][0][0] = 6 - 12*in[1] - 12*in[0];
│ │ │ │ -
198 out[10][0][1] = -12*in[0];
│ │ │ │ -
199
│ │ │ │ -
200 out[10][1][0] = -12*in[1];
│ │ │ │ -
201 out[10][1][1] = 18 - 12*in[0] - 36*in[1];
│ │ │ │ -
202
│ │ │ │ -
203 out[11][0][0] = 90 - 180*in[1] - 180*in[0];
│ │ │ │ -
204 out[11][0][1] = -180*in[0];
│ │ │ │ -
205
│ │ │ │ -
206 out[11][1][0] = 180*in[1];
│ │ │ │ -
207 out[11][1][1] = -90 + 180*in[0] + 180*in[1];
│ │ │ │ -
208 }
│ │ │ │ -
│ │ │ │ -
209
│ │ │ │ -
│ │ │ │ -
211 void partial (const std::array<unsigned int, 2>& order,
│ │ │ │ -
212 const typename Traits::DomainType& in, // position
│ │ │ │ -
213 std::vector<typename Traits::RangeType>& out) const // return value
│ │ │ │ -
214 {
│ │ │ │ -
215 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
│ │ │ │ -
216 if (totalOrder == 0) {
│ │ │ │ -
217 evaluateFunction(in, out);
│ │ │ │ -
218 } else if (totalOrder == 1) {
│ │ │ │ -
219 out.resize(size());
│ │ │ │ -
220 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
│ │ │ │ -
221
│ │ │ │ -
222 switch (direction) {
│ │ │ │ -
223 case 0:
│ │ │ │ -
224 out[0][0] = sign_[0]*(-2*in[1] + 2*in[0]);
│ │ │ │ -
225 out[0][1] = sign_[0]*(-2*in[1]);
│ │ │ │ -
226
│ │ │ │ -
227 out[1][0] = 1.5 + 3*in[1] - 9*in[0];
│ │ │ │ -
228 out[1][1] = 6 - 15*in[1];
│ │ │ │ -
229
│ │ │ │ -
230 out[2][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]);
│ │ │ │ -
231 out[2][1] = sign_[0]*(30 - 25*in[1] - 60*in[0]);
│ │ │ │ -
232
│ │ │ │ -
233 out[3][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]);
│ │ │ │ -
234 out[3][1] = sign_[1]*(-2*in[1]);
│ │ │ │ -
235
│ │ │ │ -
236 out[4][0] = -10.5 + 15*in[1] + 15*in[0];
│ │ │ │ -
237 out[4][1] = -3*in[1];
│ │ │ │ -
238
│ │ │ │ -
239 out[5][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]);
│ │ │ │ -
240 out[5][1] = sign_[1]*(5*in[1]);
│ │ │ │ -
241
│ │ │ │ -
242 out[6][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]);
│ │ │ │ -
243 out[6][1] = sign_[2]*(4*in[1]);
│ │ │ │ -
244
│ │ │ │ -
245 out[7][0] = -3 + 12*in[0];
│ │ │ │ -
246 out[7][1] = 0;
│ │ │ │ -
247
│ │ │ │ -
248 out[8][0] = sign_[2]*(-10*in[1] + 10*in[0]);
│ │ │ │ -
249 out[8][1] = sign_[2]*(-10*in[1]);
│ │ │ │ -
250
│ │ │ │ -
251 out[9][0] = 18 - 12*in[1] - 36*in[0];
│ │ │ │ -
252 out[9][1] = -12*in[1];
│ │ │ │ -
253
│ │ │ │ -
254 out[10][0] = 6 - 12*in[1] - 12*in[0];
│ │ │ │ -
255 out[10][1] = -12*in[1];
│ │ │ │ -
256
│ │ │ │ -
257 out[11][0] = 90 - 180*in[1] - 180*in[0];
│ │ │ │ -
258 out[11][1] = 180*in[1];
│ │ │ │ -
259 break;
│ │ │ │ -
260 case 1:
│ │ │ │ -
261 out[0][0] = sign_[0]*(-2*in[0]);
│ │ │ │ -
262 out[0][1] = sign_[0]*(6 -2*in[0] - 10*in[1]);
│ │ │ │ -
263
│ │ │ │ -
264 out[1][0] = 3*in[0];
│ │ │ │ -
265 out[1][1] = 10.5 - 15*in[0] - 15*in[1];
│ │ │ │ -
266
│ │ │ │ -
267 out[2][0] = sign_[0]*(5*in[0]);
│ │ │ │ -
268 out[2][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]);
│ │ │ │ -
269
│ │ │ │ -
270 out[3][0] = sign_[1]*(-2*in[0]);
│ │ │ │ -
271 out[3][1] = sign_[1]*(-2*in[0] + 2*in[1]);
│ │ │ │ -
272
│ │ │ │ -
273 out[4][0] = -6 + 15*in[0];
│ │ │ │ -
274 out[4][1] = -1.5 - 3*in[0] + 9*in[1];
│ │ │ │ -
275
│ │ │ │ -
276 out[5][0] = sign_[1]*(30 - 25*in[0] - 60*in[1]);
│ │ │ │ -
277 out[5][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]);
│ │ │ │ -
278
│ │ │ │ -
279 out[6][0] = sign_[2]*(4*in[0]);
│ │ │ │ -
280 out[6][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]);
│ │ │ │ -
281
│ │ │ │ -
282 out[7][0] = 0;
│ │ │ │ -
283 out[7][1] = 3 - 12*in[1];
│ │ │ │ -
284
│ │ │ │ -
285 out[8][0] = sign_[2]*(-10*in[0]);
│ │ │ │ -
286 out[8][1] = sign_[2]*(-10*in[0] + 10*in[1]);
│ │ │ │ -
287
│ │ │ │ -
288 out[9][0] = -12*in[0];
│ │ │ │ -
289 out[9][1] = 6 - 12*in[0] - 12*in[1];
│ │ │ │ -
290
│ │ │ │ -
291 out[10][0] = -12*in[0];
│ │ │ │ -
292 out[10][1] = 18 - 12*in[0] - 36*in[1];
│ │ │ │ -
293
│ │ │ │ -
294 out[11][0] = -180*in[0];
│ │ │ │ -
295 out[11][1] = -90 + 180*in[0] + 180*in[1];
│ │ │ │ -
296 break;
│ │ │ │ -
297 default:
│ │ │ │ -
298 DUNE_THROW(RangeError, "Component out of range.");
│ │ │ │ -
299 }
│ │ │ │ -
300 } else {
│ │ │ │ -
301 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
│ │ │ │ -
302 }
│ │ │ │ -
303 }
│ │ │ │ -
│ │ │ │ -
304
│ │ │ │ -
│ │ │ │ -
306 unsigned int order() const
│ │ │ │ -
307 {
│ │ │ │ -
308 return 2; // TODO: check whether this is not order 3
│ │ │ │ -
309 }
│ │ │ │ -
│ │ │ │ -
310
│ │ │ │ -
311 private:
│ │ │ │ -
312 std::array<R,3> sign_;
│ │ │ │ -
313 };
│ │ │ │ + │ │ │ │ +
57 {}
│ │ │ │
│ │ │ │ -
314} // end namespace Dune
│ │ │ │ -
315#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │ +
58
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ +
66 {}
│ │ │ │ +
│ │ │ │ +
67 };
│ │ │ │ +
│ │ │ │ +
68
│ │ │ │ +
69} // namespace Dune
│ │ │ │ +
70
│ │ │ │ +
71#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH
│ │ │ │ + │ │ │ │ + │ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:30
│ │ │ │ -
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:121
│ │ │ │ -
BDM2Simplex2DLocalBasis(std::bitset< 3 > s)
Make set number s, where 0 <= s < 8.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:49
│ │ │ │ -
void partial(const std::array< unsigned int, 2 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of all shape functions.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:211
│ │ │ │ -
unsigned int size() const
number of shape functions
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:56
│ │ │ │ -
LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:35
│ │ │ │ -
BDM2Simplex2DLocalBasis()
Standard constructor.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:38
│ │ │ │ -
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:67
│ │ │ │ -
unsigned int order() const
Polynomial order of the shape functions.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:306
│ │ │ │ -
Type traits for LocalBasisVirtualInterface.
Definition common/localbasis.hh:35
│ │ │ │ -
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on triangles.
Definition brezzidouglasmarini1simplex2d.hh:28
│ │ │ │ +
Second order Brezzi-Douglas-Marini shape functions on triangles.
Definition brezzidouglasmarini2simplex2d.hh:27
│ │ │ │ +
Brezzi-Douglas-Marini local finite element for simplices.
Definition brezzidouglasmarinisimplex.hh:23
│ │ │ │ +
BrezziDouglasMariniSimplexLocalFiniteElement(int s)
Constructor with a set of edge orientations.
Definition brezzidouglasmarinisimplex.hh:42
│ │ │ │ +
BrezziDouglasMariniSimplexLocalFiniteElement()
Default constructor.
Definition brezzidouglasmarinisimplex.hh:34
│ │ │ │ +
BrezziDouglasMariniSimplexLocalFiniteElement(int s)
Constructor with a set of edge orientations.
Definition brezzidouglasmarinisimplex.hh:64
│ │ │ │ +
BrezziDouglasMariniSimplexLocalFiniteElement()
Default constructor.
Definition brezzidouglasmarinisimplex.hh:56
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,348 +1,93 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d │ │ │ │ │ -brezzidouglasmarini2simplex2dlocalbasis.hh │ │ │ │ │ +brezzidouglasmarinisimplex.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ -9#include │ │ │ │ │ -10#include │ │ │ │ │ -11#include │ │ │ │ │ -12 │ │ │ │ │ -13#include │ │ │ │ │ -14 │ │ │ │ │ -15#include "../../common/localbasis.hh" │ │ │ │ │ -16 │ │ │ │ │ -17namespace _D_u_n_e │ │ │ │ │ -18{ │ │ │ │ │ +8#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d_._h_h> │ │ │ │ │ +9#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_._h_h> │ │ │ │ │ +10 │ │ │ │ │ +11 │ │ │ │ │ +12namespace _D_u_n_e │ │ │ │ │ +13{ │ │ │ │ │ +22 template │ │ │ │ │ +_2_3 class _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t; │ │ │ │ │ +24 │ │ │ │ │ 28 template │ │ │ │ │ -_2_9 class _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -30 { │ │ │ │ │ -31 │ │ │ │ │ +_2_9 class _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +30 : public _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +31 { │ │ │ │ │ 32 public: │ │ │ │ │ -33 typedef _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_<_D_,_2_,_D_u_n_e_:_:_F_i_e_l_d_V_e_c_t_o_r_<_D_,_2_>, │ │ │ │ │ -34 R,2,Dune::FieldVector, │ │ │ │ │ -_3_5 Dune::FieldMatrix > _T_r_a_i_t_s; │ │ │ │ │ +_3_4 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t() │ │ │ │ │ +35 {} │ │ │ │ │ 36 │ │ │ │ │ -_3_8 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s() │ │ │ │ │ -39 { │ │ │ │ │ -40 for (size_t i=0; i<3; i++) │ │ │ │ │ -41 sign_[i] = 1.0; │ │ │ │ │ -42 } │ │ │ │ │ -43 │ │ │ │ │ -_4_9 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s(std::bitset<3> s) │ │ │ │ │ -50 { │ │ │ │ │ -51 for (size_t i=0; i<3; i++) │ │ │ │ │ -52 sign_[i] = s[i] ? -1.0 : 1.0; │ │ │ │ │ -53 } │ │ │ │ │ -54 │ │ │ │ │ -_5_6 unsigned int _s_i_z_e() const │ │ │ │ │ -57 { │ │ │ │ │ -58 return 12; │ │ │ │ │ -59 } │ │ │ │ │ -60 │ │ │ │ │ -_6_7 inline void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ -68 std::vector& out) const │ │ │ │ │ -69 { │ │ │ │ │ -70 out.resize(_s_i_z_e()); │ │ │ │ │ -71 │ │ │ │ │ -72 out[0][0] = sign_[0]*(-2*in[0]*in[1] + in[0]*in[0]); │ │ │ │ │ -73 out[0][1] = sign_[0]*(-1 + 6*in[1] -2*in[0]*in[1] - 5*in[1]*in[1]); │ │ │ │ │ -74 │ │ │ │ │ -75 out[1][0] = 1.5*in[0] + 3*in[0]*in[1] - 4.5*in[0]*in[0]; │ │ │ │ │ -76 out[1][1] = -3 + 6*in[0] + 10.5*in[1] - 15*in[0]*in[1] - 7.5*in[1]*in[1]; │ │ │ │ │ -77 │ │ │ │ │ -78 out[2][0] = sign_[0]*(-7.5*in[0] + 5*in[0]*in[1] + 12.5*in[0]*in[0]); │ │ │ │ │ -79 out[2][1] = sign_[0]*(-5 + 30*in[0] + 7.5*in[1] - 25*in[0]*in[1] - 30*in │ │ │ │ │ -[0]*in[0] - 2.5*in[1]*in[1]); │ │ │ │ │ -80 │ │ │ │ │ -81 │ │ │ │ │ -82 │ │ │ │ │ -83 out[3][0] = sign_[1]*(-1 + 6*in[0] - 2*in[0]*in[1] - 5*in[0]*in[0]); │ │ │ │ │ -84 out[3][1] = sign_[1]*(-2*in[0]*in[1] + in[1]*in[1]); │ │ │ │ │ -85 │ │ │ │ │ -86 out[4][0] = 3 - 10.5*in[0] - 6*in[1] + 15*in[0]*in[1] + 7.5*in[0]*in[0]; │ │ │ │ │ -87 out[4][1] = -1.5*in[1] - 3*in[0]*in[1] + 4.5*in[1]*in[1]; │ │ │ │ │ -88 │ │ │ │ │ -89 out[5][0] = sign_[1]*(-5 + 7.5*in[0] + 30*in[1] - 25*in[0]*in[1] - 2.5*in │ │ │ │ │ -[0]*in[0] - 30*in[1]*in[1]); │ │ │ │ │ -90 out[5][1] = sign_[1]*(-7.5*in[1] + 5*in[0]*in[1] + 12.5*in[1]*in[1]); │ │ │ │ │ -91 │ │ │ │ │ -92 │ │ │ │ │ -93 │ │ │ │ │ -94 out[6][0] = sign_[2]*(-3*in[0] + 4*in[0]*in[1] + 4*in[0]*in[0]); │ │ │ │ │ -95 out[6][1] = sign_[2]*(-3*in[1] + 4*in[0]*in[1] + 4*in[1]*in[1]); │ │ │ │ │ -96 │ │ │ │ │ -97 out[7][0] = -3*in[0] + 6*in[0]*in[0]; │ │ │ │ │ -98 out[7][1] = 3*in[1] - 6*in[1]*in[1]; │ │ │ │ │ -99 │ │ │ │ │ -100 out[8][0] = sign_[2]*(-10*in[0]*in[1] + 5*in[0]*in[0]); │ │ │ │ │ -101 out[8][1] = sign_[2]*(-10*in[0]*in[1] + 5*in[1]*in[1]); │ │ │ │ │ -102 │ │ │ │ │ -103 │ │ │ │ │ -104 │ │ │ │ │ -105 out[9][0] = 18*in[0] - 12*in[0]*in[1] - 18*in[0]*in[0]; │ │ │ │ │ -106 out[9][1] = 6*in[1] - 12*in[0]*in[1] - 6*in[1]*in[1]; │ │ │ │ │ -107 │ │ │ │ │ -108 out[10][0] = 6*in[0] - 12*in[0]*in[1] - 6*in[0]*in[0]; │ │ │ │ │ -109 out[10][1] = 18*in[1] - 12*in[0]*in[1] - 18*in[1]*in[1]; │ │ │ │ │ -110 │ │ │ │ │ -111 out[11][0] = 90*in[0] - 180*in[0]*in[1] - 90*in[0]*in[0]; │ │ │ │ │ -112 out[11][1] = -90*in[1] + 180*in[0]*in[1] + 90*in[1]*in[1]; │ │ │ │ │ -113 } │ │ │ │ │ -114 │ │ │ │ │ -_1_2_1 inline void _e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n(const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ -122 std::vector& out) const │ │ │ │ │ -123 { │ │ │ │ │ -124 out.resize(_s_i_z_e()); │ │ │ │ │ -125 │ │ │ │ │ -126 out[0][0][0] = sign_[0]*(-2*in[1] + 2*in[0]); │ │ │ │ │ -127 out[0][0][1] = sign_[0]*(-2*in[0]); │ │ │ │ │ -128 │ │ │ │ │ -129 out[0][1][0] = sign_[0]*(-2*in[1]); │ │ │ │ │ -130 out[0][1][1] = sign_[0]*(6 -2*in[0] - 10*in[1]); │ │ │ │ │ -131 │ │ │ │ │ -132 │ │ │ │ │ -133 out[1][0][0] = 1.5 + 3*in[1] - 9*in[0]; │ │ │ │ │ -134 out[1][0][1] = 3*in[0]; │ │ │ │ │ -135 │ │ │ │ │ -136 out[1][1][0] = 6 - 15*in[1]; │ │ │ │ │ -137 out[1][1][1] = 10.5 - 15*in[0] - 15*in[1]; │ │ │ │ │ -138 │ │ │ │ │ -139 │ │ │ │ │ -140 out[2][0][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]); │ │ │ │ │ -141 out[2][0][1] = sign_[0]*(5*in[0]); │ │ │ │ │ -142 │ │ │ │ │ -143 out[2][1][0] = sign_[0]*(30 - 25*in[1] - 60*in[0]); │ │ │ │ │ -144 out[2][1][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]); │ │ │ │ │ -145 │ │ │ │ │ -146 │ │ │ │ │ -147 │ │ │ │ │ -148 out[3][0][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]); │ │ │ │ │ -149 out[3][0][1] = sign_[1]*(-2*in[0]); │ │ │ │ │ -150 │ │ │ │ │ -151 out[3][1][0] = sign_[1]*(-2*in[1]); │ │ │ │ │ -152 out[3][1][1] = sign_[1]*(-2*in[0] + 2*in[1]); │ │ │ │ │ -153 │ │ │ │ │ -154 │ │ │ │ │ -155 out[4][0][0] = -10.5 + 15*in[1] + 15*in[0]; │ │ │ │ │ -156 out[4][0][1] = -6 + 15*in[0]; │ │ │ │ │ -157 │ │ │ │ │ -158 out[4][1][0] = -3*in[1]; │ │ │ │ │ -159 out[4][1][1] = -1.5 - 3*in[0] + 9*in[1]; │ │ │ │ │ -160 │ │ │ │ │ -161 │ │ │ │ │ -162 out[5][0][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]); │ │ │ │ │ -163 out[5][0][1] = sign_[1]*(30 - 25*in[0] - 60*in[1]); │ │ │ │ │ -164 │ │ │ │ │ -165 out[5][1][0] = sign_[1]*(5*in[1]); │ │ │ │ │ -166 out[5][1][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]); │ │ │ │ │ -167 │ │ │ │ │ -168 │ │ │ │ │ -169 │ │ │ │ │ -170 out[6][0][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]); │ │ │ │ │ -171 out[6][0][1] = sign_[2]*(4*in[0]); │ │ │ │ │ -172 │ │ │ │ │ -173 out[6][1][0] = sign_[2]*(4*in[1]); │ │ │ │ │ -174 out[6][1][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]); │ │ │ │ │ -175 │ │ │ │ │ -176 │ │ │ │ │ -177 out[7][0][0] = -3 + 12*in[0]; │ │ │ │ │ -178 out[7][0][1] = 0; │ │ │ │ │ -179 │ │ │ │ │ -180 out[7][1][0] = 0; │ │ │ │ │ -181 out[7][1][1] = 3 - 12*in[1]; │ │ │ │ │ -182 │ │ │ │ │ -183 │ │ │ │ │ -184 out[8][0][0] = sign_[2]*(-10*in[1] + 10*in[0]); │ │ │ │ │ -185 out[8][0][1] = sign_[2]*(-10*in[0]); │ │ │ │ │ -186 │ │ │ │ │ -187 out[8][1][0] = sign_[2]*(-10*in[1]); │ │ │ │ │ -188 out[8][1][1] = sign_[2]*(-10*in[0] + 10*in[1]); │ │ │ │ │ -189 │ │ │ │ │ -190 │ │ │ │ │ -191 out[9][0][0] = 18 - 12*in[1] - 36*in[0]; │ │ │ │ │ -192 out[9][0][1] = -12*in[0]; │ │ │ │ │ -193 │ │ │ │ │ -194 out[9][1][0] = -12*in[1]; │ │ │ │ │ -195 out[9][1][1] = 6 - 12*in[0] - 12*in[1]; │ │ │ │ │ -196 │ │ │ │ │ -197 out[10][0][0] = 6 - 12*in[1] - 12*in[0]; │ │ │ │ │ -198 out[10][0][1] = -12*in[0]; │ │ │ │ │ -199 │ │ │ │ │ -200 out[10][1][0] = -12*in[1]; │ │ │ │ │ -201 out[10][1][1] = 18 - 12*in[0] - 36*in[1]; │ │ │ │ │ -202 │ │ │ │ │ -203 out[11][0][0] = 90 - 180*in[1] - 180*in[0]; │ │ │ │ │ -204 out[11][0][1] = -180*in[0]; │ │ │ │ │ -205 │ │ │ │ │ -206 out[11][1][0] = 180*in[1]; │ │ │ │ │ -207 out[11][1][1] = -90 + 180*in[0] + 180*in[1]; │ │ │ │ │ -208 } │ │ │ │ │ -209 │ │ │ │ │ -_2_1_1 void _p_a_r_t_i_a_l (const std::array& _o_r_d_e_r, │ │ │ │ │ -212 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, // position │ │ │ │ │ -213 std::vector& out) const // return value │ │ │ │ │ -214 { │ │ │ │ │ -215 auto totalOrder = std::accumulate(_o_r_d_e_r.begin(), _o_r_d_e_r.end(), 0); │ │ │ │ │ -216 if (totalOrder == 0) { │ │ │ │ │ -217 _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(in, out); │ │ │ │ │ -218 } else if (totalOrder == 1) { │ │ │ │ │ -219 out.resize(_s_i_z_e()); │ │ │ │ │ -220 auto const direction = std::distance(_o_r_d_e_r.begin(), std::find(_o_r_d_e_r.begin │ │ │ │ │ -(), _o_r_d_e_r.end(), 1)); │ │ │ │ │ -221 │ │ │ │ │ -222 switch (direction) { │ │ │ │ │ -223 case 0: │ │ │ │ │ -224 out[0][0] = sign_[0]*(-2*in[1] + 2*in[0]); │ │ │ │ │ -225 out[0][1] = sign_[0]*(-2*in[1]); │ │ │ │ │ -226 │ │ │ │ │ -227 out[1][0] = 1.5 + 3*in[1] - 9*in[0]; │ │ │ │ │ -228 out[1][1] = 6 - 15*in[1]; │ │ │ │ │ -229 │ │ │ │ │ -230 out[2][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]); │ │ │ │ │ -231 out[2][1] = sign_[0]*(30 - 25*in[1] - 60*in[0]); │ │ │ │ │ -232 │ │ │ │ │ -233 out[3][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]); │ │ │ │ │ -234 out[3][1] = sign_[1]*(-2*in[1]); │ │ │ │ │ -235 │ │ │ │ │ -236 out[4][0] = -10.5 + 15*in[1] + 15*in[0]; │ │ │ │ │ -237 out[4][1] = -3*in[1]; │ │ │ │ │ -238 │ │ │ │ │ -239 out[5][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]); │ │ │ │ │ -240 out[5][1] = sign_[1]*(5*in[1]); │ │ │ │ │ -241 │ │ │ │ │ -242 out[6][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]); │ │ │ │ │ -243 out[6][1] = sign_[2]*(4*in[1]); │ │ │ │ │ -244 │ │ │ │ │ -245 out[7][0] = -3 + 12*in[0]; │ │ │ │ │ -246 out[7][1] = 0; │ │ │ │ │ -247 │ │ │ │ │ -248 out[8][0] = sign_[2]*(-10*in[1] + 10*in[0]); │ │ │ │ │ -249 out[8][1] = sign_[2]*(-10*in[1]); │ │ │ │ │ -250 │ │ │ │ │ -251 out[9][0] = 18 - 12*in[1] - 36*in[0]; │ │ │ │ │ -252 out[9][1] = -12*in[1]; │ │ │ │ │ -253 │ │ │ │ │ -254 out[10][0] = 6 - 12*in[1] - 12*in[0]; │ │ │ │ │ -255 out[10][1] = -12*in[1]; │ │ │ │ │ -256 │ │ │ │ │ -257 out[11][0] = 90 - 180*in[1] - 180*in[0]; │ │ │ │ │ -258 out[11][1] = 180*in[1]; │ │ │ │ │ -259 break; │ │ │ │ │ -260 case 1: │ │ │ │ │ -261 out[0][0] = sign_[0]*(-2*in[0]); │ │ │ │ │ -262 out[0][1] = sign_[0]*(6 -2*in[0] - 10*in[1]); │ │ │ │ │ -263 │ │ │ │ │ -264 out[1][0] = 3*in[0]; │ │ │ │ │ -265 out[1][1] = 10.5 - 15*in[0] - 15*in[1]; │ │ │ │ │ -266 │ │ │ │ │ -267 out[2][0] = sign_[0]*(5*in[0]); │ │ │ │ │ -268 out[2][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]); │ │ │ │ │ -269 │ │ │ │ │ -270 out[3][0] = sign_[1]*(-2*in[0]); │ │ │ │ │ -271 out[3][1] = sign_[1]*(-2*in[0] + 2*in[1]); │ │ │ │ │ -272 │ │ │ │ │ -273 out[4][0] = -6 + 15*in[0]; │ │ │ │ │ -274 out[4][1] = -1.5 - 3*in[0] + 9*in[1]; │ │ │ │ │ -275 │ │ │ │ │ -276 out[5][0] = sign_[1]*(30 - 25*in[0] - 60*in[1]); │ │ │ │ │ -277 out[5][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]); │ │ │ │ │ -278 │ │ │ │ │ -279 out[6][0] = sign_[2]*(4*in[0]); │ │ │ │ │ -280 out[6][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]); │ │ │ │ │ -281 │ │ │ │ │ -282 out[7][0] = 0; │ │ │ │ │ -283 out[7][1] = 3 - 12*in[1]; │ │ │ │ │ -284 │ │ │ │ │ -285 out[8][0] = sign_[2]*(-10*in[0]); │ │ │ │ │ -286 out[8][1] = sign_[2]*(-10*in[0] + 10*in[1]); │ │ │ │ │ -287 │ │ │ │ │ -288 out[9][0] = -12*in[0]; │ │ │ │ │ -289 out[9][1] = 6 - 12*in[0] - 12*in[1]; │ │ │ │ │ -290 │ │ │ │ │ -291 out[10][0] = -12*in[0]; │ │ │ │ │ -292 out[10][1] = 18 - 12*in[0] - 36*in[1]; │ │ │ │ │ -293 │ │ │ │ │ -294 out[11][0] = -180*in[0]; │ │ │ │ │ -295 out[11][1] = -90 + 180*in[0] + 180*in[1]; │ │ │ │ │ -296 break; │ │ │ │ │ -297 default: │ │ │ │ │ -298 DUNE_THROW(RangeError, "Component out of range."); │ │ │ │ │ -299 } │ │ │ │ │ -300 } else { │ │ │ │ │ -301 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented"); │ │ │ │ │ -302 } │ │ │ │ │ -303 } │ │ │ │ │ -304 │ │ │ │ │ -_3_0_6 unsigned int _o_r_d_e_r() const │ │ │ │ │ -307 { │ │ │ │ │ -308 return 2; // TODO: check whether this is not order 3 │ │ │ │ │ -309 } │ │ │ │ │ -310 │ │ │ │ │ -311 private: │ │ │ │ │ -312 std::array sign_; │ │ │ │ │ -313 }; │ │ │ │ │ -314} // end namespace Dune │ │ │ │ │ -315#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH │ │ │ │ │ +_4_2 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(int s) │ │ │ │ │ +43 : _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t::_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(s) │ │ │ │ │ +44 {} │ │ │ │ │ +45 }; │ │ │ │ │ +46 │ │ │ │ │ +50 template │ │ │ │ │ +_5_1 class _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +52 : public _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +53 { │ │ │ │ │ +54 public: │ │ │ │ │ +_5_6 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t() │ │ │ │ │ +57 {} │ │ │ │ │ +58 │ │ │ │ │ +_6_4 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(int s) │ │ │ │ │ +65 : _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t::_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(s) │ │ │ │ │ +66 {} │ │ │ │ │ +67 }; │ │ │ │ │ +68 │ │ │ │ │ +69} // namespace Dune │ │ │ │ │ +70 │ │ │ │ │ +71#endif // #ifndef │ │ │ │ │ +DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d_._h_h │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_._h_h │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:30 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n │ │ │ │ │ -void evaluateJacobian(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ -typename Traits::JacobianType > &out) const │ │ │ │ │ -Evaluate Jacobian of all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:121 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -BDM2Simplex2DLocalBasis(std::bitset< 3 > s) │ │ │ │ │ -Make set number s, where 0 <= s < 8. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:49 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_p_a_r_t_i_a_l │ │ │ │ │ -void partial(const std::array< unsigned int, 2 > &order, const typename │ │ │ │ │ -Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const │ │ │ │ │ -Evaluate partial derivatives of all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:211 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_s_i_z_e │ │ │ │ │ -unsigned int size() const │ │ │ │ │ -number of shape functions │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:56 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_T_r_a_i_t_s │ │ │ │ │ -LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, │ │ │ │ │ -2 >, Dune::FieldMatrix< R, 2, 2 > > Traits │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:35 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -BDM2Simplex2DLocalBasis() │ │ │ │ │ -Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:38 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n │ │ │ │ │ -void evaluateFunction(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ -typename Traits::RangeType > &out) const │ │ │ │ │ -Evaluate all shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:67 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_o_r_d_e_r │ │ │ │ │ -unsigned int order() const │ │ │ │ │ -Polynomial order of the shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:306 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s │ │ │ │ │ -Type traits for LocalBasisVirtualInterface. │ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:35 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e │ │ │ │ │ -D DomainType │ │ │ │ │ -domain type │ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:43 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on triangles. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2d.hh:28 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +Second order Brezzi-Douglas-Marini shape functions on triangles. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:27 │ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +Brezzi-Douglas-Marini local finite element for simplices. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinisimplex.hh:23 │ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _1_ _>_:_: │ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BrezziDouglasMariniSimplexLocalFiniteElement(int s) │ │ │ │ │ +Constructor with a set of edge orientations. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinisimplex.hh:42 │ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _1_ _>_:_: │ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BrezziDouglasMariniSimplexLocalFiniteElement() │ │ │ │ │ +Default constructor. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinisimplex.hh:34 │ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _2_ _>_:_: │ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BrezziDouglasMariniSimplexLocalFiniteElement(int s) │ │ │ │ │ +Constructor with a set of edge orientations. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinisimplex.hh:64 │ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _2_ _>_:_: │ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ +BrezziDouglasMariniSimplexLocalFiniteElement() │ │ │ │ │ +Default constructor. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinisimplex.hh:56 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00098.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,34 +65,34 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference
│ │ │ │ +
brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include <cstddef>
│ │ │ │ #include <vector>
│ │ │ │ -#include "../../common/localkey.hh"
│ │ │ │ +#include "../../common/localkey.hh"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM2Simplex2DLocalCoefficients
 Layout map for Brezzi-Douglas-Marini-2 elements on triangles. More...
class  Dune::BDM1Simplex2DLocalCoefficients
 Layout map for Brezzi-Douglas-Marini-1 elements on triangles. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,23 +1,23 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference │ │ │ │ │ +brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference │ │ │ │ │ #include │ │ │ │ │ #include │ │ │ │ │ #include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -  Layout map for Brezzi-Douglas-Marini-2 elements on triangles. _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +  Layout map for Brezzi-Douglas-Marini-1 elements on triangles. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00098_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2simplex2dlocalcoefficients.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini1simplex2dlocalcoefficients.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,83 +70,77 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarini2simplex2dlocalcoefficients.hh
│ │ │ │ +
brezzidouglasmarini1simplex2dlocalcoefficients.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH
│ │ │ │
7
│ │ │ │
8#include <cstddef>
│ │ │ │
9#include <vector>
│ │ │ │
10
│ │ │ │
11#include "../../common/localkey.hh"
│ │ │ │
12
│ │ │ │
13namespace Dune
│ │ │ │
14{
│ │ │ │
15
│ │ │ │
│ │ │ │ - │ │ │ │ + │ │ │ │
24 {
│ │ │ │
25
│ │ │ │
26 public:
│ │ │ │
│ │ │ │ - │ │ │ │ + │ │ │ │
29 {
│ │ │ │ -
30 for (std::size_t i = 0; i < 3; ++i)
│ │ │ │ +
30 for (std::size_t i=0; i<3; i++)
│ │ │ │
31 {
│ │ │ │ -
32 li[3 * i] = LocalKey(i,1,0);
│ │ │ │ -
33 li[3 * i + 1] = LocalKey(i,1,1);
│ │ │ │ -
34 li[3 * i + 2] = LocalKey(i,1,2);
│ │ │ │ -
35 }
│ │ │ │ +
32 li[i] = LocalKey(i,1,0);
│ │ │ │ +
33 li[3 + i] = LocalKey(i,1,1);
│ │ │ │ +
34 }
│ │ │ │ +
35 }
│ │ │ │ +
│ │ │ │
36
│ │ │ │ -
37 // last DOFs are associated with the cell (codim=0)
│ │ │ │ -
38 li[9] = LocalKey(0,0,0);
│ │ │ │ -
39 li[10] = LocalKey(0,0,1);
│ │ │ │ -
40 li[11] = LocalKey(0,0,2);
│ │ │ │ +
│ │ │ │ +
38 std::size_t size () const
│ │ │ │ +
39 {
│ │ │ │ +
40 return 6;
│ │ │ │
41 }
│ │ │ │
│ │ │ │
42
│ │ │ │
│ │ │ │ -
44 std::size_t size() const
│ │ │ │ +
44 const LocalKey& localKey (std::size_t i) const
│ │ │ │
45 {
│ │ │ │ -
46 return 12;
│ │ │ │ +
46 return li[i];
│ │ │ │
47 }
│ │ │ │
│ │ │ │
48
│ │ │ │ -
│ │ │ │ -
50 const LocalKey& localKey(std::size_t i) const
│ │ │ │ -
51 {
│ │ │ │ -
52 return li[i];
│ │ │ │ -
53 }
│ │ │ │ -
│ │ │ │ -
54
│ │ │ │ -
55 private:
│ │ │ │ -
56 std::vector<LocalKey> li;
│ │ │ │ -
57 };
│ │ │ │ +
49 private:
│ │ │ │ +
50 std::vector<LocalKey> li;
│ │ │ │ +
51 };
│ │ │ │
│ │ │ │ -
58} // end namespace Dune
│ │ │ │ -
59#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH
│ │ │ │ +
52}
│ │ │ │ +
53#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
Layout map for Brezzi-Douglas-Marini-2 elements on triangles.
Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:24
│ │ │ │ -
BDM2Simplex2DLocalCoefficients()
Standard constructor.
Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:28
│ │ │ │ -
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:50
│ │ │ │ -
std::size_t size() const
number of coefficients
Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:44
│ │ │ │ +
Layout map for Brezzi-Douglas-Marini-1 elements on triangles.
Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:24
│ │ │ │ +
BDM1Simplex2DLocalCoefficients()
Standard constructor.
Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:28
│ │ │ │ +
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:44
│ │ │ │ +
std::size_t size() const
number of coefficients
Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:38
│ │ │ │
Describe position of one degree of freedom.
Definition localkey.hh:24
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,85 +1,79 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d │ │ │ │ │ -brezzidouglasmarini2simplex2dlocalcoefficients.hh │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d │ │ │ │ │ +brezzidouglasmarini1simplex2dlocalcoefficients.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ 5#ifndef │ │ │ │ │ -DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ 6#define │ │ │ │ │ -DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ 7 │ │ │ │ │ 8#include │ │ │ │ │ 9#include │ │ │ │ │ 10 │ │ │ │ │ 11#include "../../common/localkey.hh" │ │ │ │ │ 12 │ │ │ │ │ 13namespace _D_u_n_e │ │ │ │ │ 14{ │ │ │ │ │ 15 │ │ │ │ │ -_2_3 class _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +_2_3 class _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ 24 { │ │ │ │ │ 25 │ │ │ │ │ 26 public: │ │ │ │ │ -_2_8 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s() : li(12) │ │ │ │ │ +_2_8 _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () : li(6) │ │ │ │ │ 29 { │ │ │ │ │ -30 for (std::size_t i = 0; i < 3; ++i) │ │ │ │ │ +30 for (std::size_t i=0; i<3; i++) │ │ │ │ │ 31 { │ │ │ │ │ -32 li[3 * i] = _L_o_c_a_l_K_e_y(i,1,0); │ │ │ │ │ -33 li[3 * i + 1] = _L_o_c_a_l_K_e_y(i,1,1); │ │ │ │ │ -34 li[3 * i + 2] = _L_o_c_a_l_K_e_y(i,1,2); │ │ │ │ │ +32 li[i] = _L_o_c_a_l_K_e_y(i,1,0); │ │ │ │ │ +33 li[3 + i] = _L_o_c_a_l_K_e_y(i,1,1); │ │ │ │ │ +34 } │ │ │ │ │ 35 } │ │ │ │ │ 36 │ │ │ │ │ -37 // last DOFs are associated with the cell (codim=0) │ │ │ │ │ -38 li[9] = _L_o_c_a_l_K_e_y(0,0,0); │ │ │ │ │ -39 li[10] = _L_o_c_a_l_K_e_y(0,0,1); │ │ │ │ │ -40 li[11] = _L_o_c_a_l_K_e_y(0,0,2); │ │ │ │ │ +_3_8 std::size_t _s_i_z_e () const │ │ │ │ │ +39 { │ │ │ │ │ +40 return 6; │ │ │ │ │ 41 } │ │ │ │ │ 42 │ │ │ │ │ -_4_4 std::size_t _s_i_z_e() const │ │ │ │ │ +_4_4 const _L_o_c_a_l_K_e_y& _l_o_c_a_l_K_e_y (std::size_t i) const │ │ │ │ │ 45 { │ │ │ │ │ -46 return 12; │ │ │ │ │ +46 return li[i]; │ │ │ │ │ 47 } │ │ │ │ │ 48 │ │ │ │ │ -_5_0 const _L_o_c_a_l_K_e_y& _l_o_c_a_l_K_e_y(std::size_t i) const │ │ │ │ │ -51 { │ │ │ │ │ -52 return li[i]; │ │ │ │ │ -53 } │ │ │ │ │ -54 │ │ │ │ │ -55 private: │ │ │ │ │ -56 std::vector li; │ │ │ │ │ -57 }; │ │ │ │ │ -58} // end namespace Dune │ │ │ │ │ -59#endif / │ │ │ │ │ -/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ +49 private: │ │ │ │ │ +50 std::vector li; │ │ │ │ │ +51 }; │ │ │ │ │ +52} │ │ │ │ │ +53#endif / │ │ │ │ │ +/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -Layout map for Brezzi-Douglas-Marini-2 elements on triangles. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalcoefficients.hh:24 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -BDM2Simplex2DLocalCoefficients() │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +Layout map for Brezzi-Douglas-Marini-1 elements on triangles. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalcoefficients.hh:24 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ +BDM1Simplex2DLocalCoefficients() │ │ │ │ │ Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalcoefficients.hh:28 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_l_o_c_a_l_K_e_y │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalcoefficients.hh:28 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_l_o_c_a_l_K_e_y │ │ │ │ │ const LocalKey & localKey(std::size_t i) const │ │ │ │ │ get i'th index │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalcoefficients.hh:50 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_s_i_z_e │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalcoefficients.hh:44 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_s_i_z_e │ │ │ │ │ std::size_t size() const │ │ │ │ │ number of coefficients │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalcoefficients.hh:44 │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalcoefficients.hh:38 │ │ │ │ │ _D_u_n_e_:_:_L_o_c_a_l_K_e_y │ │ │ │ │ Describe position of one degree of freedom. │ │ │ │ │ DDeeffiinniittiioonn localkey.hh:24 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini1simplex2dlocalbasis.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,33 +65,37 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference
│ │ │ │ +
brezzidouglasmarini1simplex2dlocalbasis.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <vector>
│ │ │ │ -#include <dune/geometry/quadraturerules.hh>
│ │ │ │ +
#include <array>
│ │ │ │ +#include <bitset>
│ │ │ │ +#include <numeric>
│ │ │ │ +#include <vector>
│ │ │ │ +#include <dune/common/fmatrix.hh>
│ │ │ │ +#include "../../common/localbasis.hh"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM2Simplex2DLocalInterpolation< LB >
 First order Brezzi-Douglas-Marini shape functions on triangles. More...
class  Dune::BDM1Simplex2DLocalBasis< D, R >
 First order Brezzi-Douglas-Marini shape functions on the reference triangle. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,22 +1,27 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference │ │ │ │ │ +brezzidouglasmarini1simplex2dlocalbasis.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ #include │ │ │ │ │ -#include │ │ │ │ │ +#include │ │ │ │ │ +#include "_._._/_._._/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_ _L_B_ _> │ │ │ │ │ -  First order Brezzi-Douglas-Marini shape functions on triangles. _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_<_ _D_,_ _R_ _> │ │ │ │ │ +  First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ + triangle. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2simplex2dlocalinterpolation.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini1simplex2dlocalbasis.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,155 +70,215 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarini2simplex2dlocalinterpolation.hh
│ │ │ │ +
brezzidouglasmarini1simplex2dlocalbasis.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │
7
│ │ │ │ -
8#include <vector>
│ │ │ │ -
9
│ │ │ │ -
10#include <dune/geometry/quadraturerules.hh>
│ │ │ │ -
11
│ │ │ │ -
12namespace Dune
│ │ │ │ -
13{
│ │ │ │ +
8#include <array>
│ │ │ │ +
9#include <bitset>
│ │ │ │ +
10#include <numeric>
│ │ │ │ +
11#include <vector>
│ │ │ │ +
12
│ │ │ │ +
13#include <dune/common/fmatrix.hh>
│ │ │ │
14
│ │ │ │ -
23 template<class LB>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
25 {
│ │ │ │ -
26
│ │ │ │ -
27 public:
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
30 {
│ │ │ │ -
31 sign0 = sign1 = sign2 = 1.0;
│ │ │ │ -
32 }
│ │ │ │ -
│ │ │ │ -
33
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
40 {
│ │ │ │ -
41 sign0 = sign1 = sign2 = 1.0;
│ │ │ │ -
42 if (s & 1)
│ │ │ │ -
43 {
│ │ │ │ -
44 sign0 = -1.0;
│ │ │ │ -
45 }
│ │ │ │ -
46 if (s & 2)
│ │ │ │ -
47 {
│ │ │ │ -
48 sign1 = -1.0;
│ │ │ │ -
49 }
│ │ │ │ -
50 if (s & 4)
│ │ │ │ -
51 {
│ │ │ │ -
52 sign2 = -1.0;
│ │ │ │ -
53 }
│ │ │ │ -
54
│ │ │ │ -
55 m0[0] = 0.5;
│ │ │ │ -
56 m0[1] = 0.0;
│ │ │ │ -
57 m1[0] = 0.0;
│ │ │ │ -
58 m1[1] = 0.5;
│ │ │ │ -
59 m2[0] = 0.5;
│ │ │ │ -
60 m2[1] = 0.5;
│ │ │ │ -
61 n0[0] = 0.0;
│ │ │ │ -
62 n0[1] = -1.0;
│ │ │ │ -
63 n1[0] = -1.0;
│ │ │ │ -
64 n1[1] = 0.0;
│ │ │ │ -
65 n2[0] = 1.0/sqrt(2.0);
│ │ │ │ -
66 n2[1] = 1.0/sqrt(2.0);
│ │ │ │ -
67 c0 = 0.5*n0[0] - 1.0*n0[1];
│ │ │ │ -
68 c1 = -1.0*n1[0] + 0.5*n1[1];
│ │ │ │ -
69 c2 = 0.5*n2[0] + 0.5*n2[1];
│ │ │ │ -
70 }
│ │ │ │ -
│ │ │ │ -
71
│ │ │ │ -
80 template<typename F, typename C>
│ │ │ │ -
│ │ │ │ -
81 void interpolate(const F& f, std::vector<C>& out) const
│ │ │ │ -
82 {
│ │ │ │ -
83 // f gives v*outer normal at a point on the edge!
│ │ │ │ -
84 typedef typename LB::Traits::RangeFieldType Scalar;
│ │ │ │ -
85 typedef typename LB::Traits::DomainFieldType Vector;
│ │ │ │ -
86
│ │ │ │ -
87 out.resize(12);
│ │ │ │ -
88 fill(out.begin(), out.end(), 0.0);
│ │ │ │ -
89
│ │ │ │ -
90 const int qOrder = 4;
│ │ │ │ -
91 const Dune::QuadratureRule<Scalar,1>& rule = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder);
│ │ │ │ -
92
│ │ │ │ -
93 for (typename Dune::QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
│ │ │ │ -
94 {
│ │ │ │ -
95 Scalar qPos = it->position();
│ │ │ │ -
96
│ │ │ │ -
97 typename LB::Traits::DomainType localPos;
│ │ │ │ -
98
│ │ │ │ -
99 localPos[0] = qPos;
│ │ │ │ -
100 localPos[1] = 0.0;
│ │ │ │ -
101 auto y = f(localPos);
│ │ │ │ -
102 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;
│ │ │ │ -
103 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(1.0 - 2.0*qPos)*it->weight()/c0;
│ │ │ │ -
104 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign0/c0;
│ │ │ │ +
15#include "../../common/localbasis.hh"
│ │ │ │ +
16
│ │ │ │ +
17namespace Dune
│ │ │ │ +
18{
│ │ │ │ +
28 template<class D, class R>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
30 {
│ │ │ │ +
31
│ │ │ │ +
32 public:
│ │ │ │ +
33 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
│ │ │ │ +
34 Dune::FieldMatrix<R,2,2> > Traits;
│ │ │ │ +
35
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
38 {
│ │ │ │ +
39 for (size_t i=0; i<3; i++)
│ │ │ │ +
40 sign_[i] = 1.0;
│ │ │ │ +
41 }
│ │ │ │ +
│ │ │ │ +
42
│ │ │ │ +
│ │ │ │ +
48 BDM1Simplex2DLocalBasis (std::bitset<3> s)
│ │ │ │ +
49 {
│ │ │ │ +
50 for (size_t i=0; i<3; i++)
│ │ │ │ +
51 sign_[i] = s[i] ? -1.0 : 1.0;
│ │ │ │ +
52 }
│ │ │ │ +
│ │ │ │ +
53
│ │ │ │ +
│ │ │ │ +
55 unsigned int size () const
│ │ │ │ +
56 {
│ │ │ │ +
57 return 6;
│ │ │ │ +
58 }
│ │ │ │ +
│ │ │ │ +
59
│ │ │ │ +
│ │ │ │ +
66 inline void evaluateFunction (const typename Traits::DomainType& in,
│ │ │ │ +
67 std::vector<typename Traits::RangeType>& out) const
│ │ │ │ +
68 {
│ │ │ │ +
69 out.resize(6);
│ │ │ │ +
70
│ │ │ │ +
71 out[0][0] = sign_[0]*in[0];
│ │ │ │ +
72 out[0][1] = sign_[0]*(in[1] - 1.0);
│ │ │ │ +
73 out[1][0] = sign_[1]*(in[0] - 1.0);
│ │ │ │ +
74 out[1][1] = sign_[1]*in[1];
│ │ │ │ +
75 out[2][0] = sign_[2]*in[0];
│ │ │ │ +
76 out[2][1] = sign_[2]*in[1];
│ │ │ │ +
77 out[3][0] = 3.0*in[0];
│ │ │ │ +
78 out[3][1] = 3.0 - 6.0*in[0] - 3.0*in[1];
│ │ │ │ +
79 out[4][0] = -3.0 + 3.0*in[0] + 6.0*in[1];
│ │ │ │ +
80 out[4][1] = -3.0*in[1];
│ │ │ │ +
81 out[5][0] = -3.0*in[0];
│ │ │ │ +
82 out[5][1] = 3.0*in[1];
│ │ │ │ +
83 }
│ │ │ │ +
│ │ │ │ +
84
│ │ │ │ +
│ │ │ │ +
91 inline void evaluateJacobian (const typename Traits::DomainType& in,
│ │ │ │ +
92 std::vector<typename Traits::JacobianType>& out) const
│ │ │ │ +
93 {
│ │ │ │ +
94 out.resize(6);
│ │ │ │ +
95
│ │ │ │ +
96 out[0][0][0] = sign_[0];
│ │ │ │ +
97 out[0][0][1] = 0.0;
│ │ │ │ +
98 out[0][1][0] = 0.0;
│ │ │ │ +
99 out[0][1][1] = sign_[0];
│ │ │ │ +
100
│ │ │ │ +
101 out[1][0][0] = sign_[1];
│ │ │ │ +
102 out[1][0][1] = 0.0;
│ │ │ │ +
103 out[1][1][0] = 0.0;
│ │ │ │ +
104 out[1][1][1] = sign_[1];
│ │ │ │
105
│ │ │ │ -
106 localPos[0] = 0.0;
│ │ │ │ -
107 localPos[1] = qPos;
│ │ │ │ -
108 y = f(localPos);
│ │ │ │ -
109 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1/c1;
│ │ │ │ -
110 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(2.0*qPos-1.0)*it->weight()/c1;
│ │ │ │ -
111 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign1/c1;
│ │ │ │ -
112
│ │ │ │ -
113 localPos[0] = 1.0 - qPos;
│ │ │ │ -
114 localPos[1] = qPos;
│ │ │ │ -
115 y = f(localPos);
│ │ │ │ -
116 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;
│ │ │ │ -
117 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight()/c2;
│ │ │ │ -
118 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign2/c2;
│ │ │ │ -
119 }
│ │ │ │ +
106 out[2][0][0] = sign_[2];
│ │ │ │ +
107 out[2][0][1] = 0.0;
│ │ │ │ +
108 out[2][1][0] = 0.0;
│ │ │ │ +
109 out[2][1][1] = sign_[2];
│ │ │ │ +
110
│ │ │ │ +
111 out[3][0][0] = 3.0;
│ │ │ │ +
112 out[3][0][1] = 0.0;
│ │ │ │ +
113 out[3][1][0] = -6.0;
│ │ │ │ +
114 out[3][1][1] = -3.0;
│ │ │ │ +
115
│ │ │ │ +
116 out[4][0][0] = 3.0;
│ │ │ │ +
117 out[4][0][1] = 6.0;
│ │ │ │ +
118 out[4][1][0] = 0.0;
│ │ │ │ +
119 out[4][1][1] = -3.0;
│ │ │ │
120
│ │ │ │ -
121 // a volume part is needed here for dofs: 9 10 11
│ │ │ │ -
122 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::simplex(2), qOrder);
│ │ │ │ -
123
│ │ │ │ -
124 for (typename QuadratureRule<Vector,2>::const_iterator it=rule2.begin(); it!=rule2.end(); ++it)
│ │ │ │ -
125 {
│ │ │ │ -
126 typename LB::Traits::DomainType localPos = it->position();
│ │ │ │ -
127 auto y = f(localPos);
│ │ │ │ -
128
│ │ │ │ -
129 out[9] += y[0]*it->weight();
│ │ │ │ -
130 out[10] += y[1]*it->weight();
│ │ │ │ -
131 out[11] += (y[0]*(localPos[0]-2.0*localPos[0]*localPos[1]-localPos[0]*localPos[0])
│ │ │ │ -
132 +y[1]*(-localPos[1]+2.0*localPos[0]*localPos[1]+localPos[1]*localPos[1]))*it->weight();
│ │ │ │ -
133 }
│ │ │ │ -
134 }
│ │ │ │ -
│ │ │ │ -
135
│ │ │ │ -
136 private:
│ │ │ │ -
137 typename LB::Traits::RangeFieldType sign0, sign1, sign2;
│ │ │ │ -
138 typename LB::Traits::DomainType m0, m1, m2;
│ │ │ │ -
139 typename LB::Traits::DomainType n0, n1, n2;
│ │ │ │ -
140 typename LB::Traits::RangeFieldType c0, c1, c2;
│ │ │ │ -
141 };
│ │ │ │ +
121 out[5][0][0] = -3.0;
│ │ │ │ +
122 out[5][0][1] = 0.0;
│ │ │ │ +
123 out[5][1][0] = 0.0;
│ │ │ │ +
124 out[5][1][1] = 3.0;
│ │ │ │ +
125 }
│ │ │ │ +
│ │ │ │ +
126
│ │ │ │ +
│ │ │ │ +
128 void partial (const std::array<unsigned int, 2>& order,
│ │ │ │ +
129 const typename Traits::DomainType& in, // position
│ │ │ │ +
130 std::vector<typename Traits::RangeType>& out) const // return value
│ │ │ │ +
131 {
│ │ │ │ +
132 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
│ │ │ │ +
133 if (totalOrder == 0) {
│ │ │ │ +
134 evaluateFunction(in, out);
│ │ │ │ +
135 } else if (totalOrder == 1) {
│ │ │ │ +
136 out.resize(size());
│ │ │ │ +
137 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
│ │ │ │ +
138
│ │ │ │ +
139 switch (direction) {
│ │ │ │ +
140 case 0:
│ │ │ │ +
141 out[0][0] = sign_[0];
│ │ │ │ +
142 out[0][1] = 0.0;
│ │ │ │ +
143
│ │ │ │ +
144 out[1][0] = sign_[1];
│ │ │ │ +
145 out[1][1] = 0.0;
│ │ │ │ +
146
│ │ │ │ +
147 out[2][0] = sign_[2];
│ │ │ │ +
148 out[2][1] = 0.0;
│ │ │ │ +
149
│ │ │ │ +
150 out[3][0] = 3.0;
│ │ │ │ +
151 out[3][1] = -6.0;
│ │ │ │ +
152
│ │ │ │ +
153 out[4][0] = 3.0;
│ │ │ │ +
154 out[4][1] = 0.0;
│ │ │ │ +
155
│ │ │ │ +
156 out[5][0] = -3.0;
│ │ │ │ +
157 out[5][1] = 0.0;
│ │ │ │ +
158 break;
│ │ │ │ +
159 case 1:
│ │ │ │ +
160 out[0][0] = 0.0;
│ │ │ │ +
161 out[0][1] = sign_[0];
│ │ │ │ +
162
│ │ │ │ +
163 out[1][0] = 0.0;
│ │ │ │ +
164 out[1][1] = sign_[1];
│ │ │ │ +
165
│ │ │ │ +
166 out[2][0] = 0.0;
│ │ │ │ +
167 out[2][1] = sign_[2];
│ │ │ │ +
168
│ │ │ │ +
169 out[3][0] = 0.0;
│ │ │ │ +
170 out[3][1] = -3.0;
│ │ │ │ +
171
│ │ │ │ +
172 out[4][0] = 6.0;
│ │ │ │ +
173 out[4][1] = -3.0;
│ │ │ │ +
174
│ │ │ │ +
175 out[5][0] = 0.0;
│ │ │ │ +
176 out[5][1] = 3.0;
│ │ │ │ +
177 break;
│ │ │ │ +
178 default:
│ │ │ │ +
179 DUNE_THROW(RangeError, "Component out of range.");
│ │ │ │ +
180 }
│ │ │ │ +
181 } else {
│ │ │ │ +
182 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
│ │ │ │ +
183 }
│ │ │ │ +
184 }
│ │ │ │ +
│ │ │ │ +
185
│ │ │ │ +
│ │ │ │ +
187 unsigned int order () const
│ │ │ │ +
188 {
│ │ │ │ +
189 return 1;
│ │ │ │ +
190 }
│ │ │ │ +
│ │ │ │ +
191
│ │ │ │ +
192 private:
│ │ │ │ +
193 std::array<R,3> sign_;
│ │ │ │ +
194 };
│ │ │ │
│ │ │ │ -
142} // end namespace Dune
│ │ │ │ -
143#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH
│ │ │ │ +
195}
│ │ │ │ +
196#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on triangles.
Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:25
│ │ │ │ -
BDM2Simplex2DLocalInterpolation()
Standard constructor.
Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:29
│ │ │ │ -
void interpolate(const F &f, std::vector< C > &out) const
Interpolate a given function with shape functions.
Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:81
│ │ │ │ -
BDM2Simplex2DLocalInterpolation(unsigned int s)
Make set number s, where 0 <= s < 8.
Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:39
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on the reference triangle.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:30
│ │ │ │ +
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:91
│ │ │ │ +
unsigned int size() const
number of shape functions
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:55
│ │ │ │ +
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:66
│ │ │ │ +
LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:34
│ │ │ │ +
void partial(const std::array< unsigned int, 2 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of all shape functions.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:128
│ │ │ │ +
BDM1Simplex2DLocalBasis()
Standard constructor.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:37
│ │ │ │ +
unsigned int order() const
Polynomial order of the shape functions.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:187
│ │ │ │ +
BDM1Simplex2DLocalBasis(std::bitset< 3 > s)
Make set number s, where 0 <= s < 8.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:48
│ │ │ │ +
Type traits for LocalBasisVirtualInterface.
Definition common/localbasis.hh:35
│ │ │ │ +
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,163 +1,228 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ - * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d │ │ │ │ │ -brezzidouglasmarini2simplex2dlocalinterpolation.hh │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d │ │ │ │ │ +brezzidouglasmarini1simplex2dlocalbasis.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef │ │ │ │ │ -DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH │ │ │ │ │ -6#define │ │ │ │ │ -DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH │ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH │ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ -9 │ │ │ │ │ -10#include │ │ │ │ │ -11 │ │ │ │ │ -12namespace _D_u_n_e │ │ │ │ │ -13{ │ │ │ │ │ +8#include │ │ │ │ │ +9#include │ │ │ │ │ +10#include │ │ │ │ │ +11#include │ │ │ │ │ +12 │ │ │ │ │ +13#include │ │ │ │ │ 14 │ │ │ │ │ -23 template │ │ │ │ │ -_2_4 class _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -25 { │ │ │ │ │ -26 │ │ │ │ │ -27 public: │ │ │ │ │ -_2_9 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n() │ │ │ │ │ +15#include "../../common/localbasis.hh" │ │ │ │ │ +16 │ │ │ │ │ +17namespace _D_u_n_e │ │ │ │ │ +18{ │ │ │ │ │ +28 template │ │ │ │ │ +_2_9 class _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ 30 { │ │ │ │ │ -31 sign0 = sign1 = sign2 = 1.0; │ │ │ │ │ -32 } │ │ │ │ │ -33 │ │ │ │ │ -_3_9 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n(unsigned int s) │ │ │ │ │ -40 { │ │ │ │ │ -41 sign0 = sign1 = sign2 = 1.0; │ │ │ │ │ -42 if (s & 1) │ │ │ │ │ -43 { │ │ │ │ │ -44 sign0 = -1.0; │ │ │ │ │ -45 } │ │ │ │ │ -46 if (s & 2) │ │ │ │ │ -47 { │ │ │ │ │ -48 sign1 = -1.0; │ │ │ │ │ -49 } │ │ │ │ │ -50 if (s & 4) │ │ │ │ │ -51 { │ │ │ │ │ -52 sign2 = -1.0; │ │ │ │ │ -53 } │ │ │ │ │ -54 │ │ │ │ │ -55 m0[0] = 0.5; │ │ │ │ │ -56 m0[1] = 0.0; │ │ │ │ │ -57 m1[0] = 0.0; │ │ │ │ │ -58 m1[1] = 0.5; │ │ │ │ │ -59 m2[0] = 0.5; │ │ │ │ │ -60 m2[1] = 0.5; │ │ │ │ │ -61 n0[0] = 0.0; │ │ │ │ │ -62 n0[1] = -1.0; │ │ │ │ │ -63 n1[0] = -1.0; │ │ │ │ │ -64 n1[1] = 0.0; │ │ │ │ │ -65 n2[0] = 1.0/sqrt(2.0); │ │ │ │ │ -66 n2[1] = 1.0/sqrt(2.0); │ │ │ │ │ -67 c0 = 0.5*n0[0] - 1.0*n0[1]; │ │ │ │ │ -68 c1 = -1.0*n1[0] + 0.5*n1[1]; │ │ │ │ │ -69 c2 = 0.5*n2[0] + 0.5*n2[1]; │ │ │ │ │ -70 } │ │ │ │ │ -71 │ │ │ │ │ -80 template │ │ │ │ │ -_8_1 void _i_n_t_e_r_p_o_l_a_t_e(const F& f, std::vector& out) const │ │ │ │ │ -82 { │ │ │ │ │ -83 // f gives v*outer normal at a point on the edge! │ │ │ │ │ -84 typedef typename LB::Traits::RangeFieldType Scalar; │ │ │ │ │ -85 typedef typename LB::Traits::DomainFieldType Vector; │ │ │ │ │ -86 │ │ │ │ │ -87 out.resize(12); │ │ │ │ │ -88 fill(out.begin(), out.end(), 0.0); │ │ │ │ │ -89 │ │ │ │ │ -90 const int qOrder = 4; │ │ │ │ │ -91 const Dune::QuadratureRule& rule = Dune:: │ │ │ │ │ -QuadratureRules::rule(Dune::GeometryTypes::simplex(1), qOrder); │ │ │ │ │ -92 │ │ │ │ │ -93 for (typename Dune::QuadratureRule::const_iterator it=rule.begin │ │ │ │ │ -(); it!=rule.end(); ++it) │ │ │ │ │ -94 { │ │ │ │ │ -95 Scalar qPos = it->position(); │ │ │ │ │ -96 │ │ │ │ │ -97 typename LB::Traits::DomainType localPos; │ │ │ │ │ -98 │ │ │ │ │ -99 localPos[0] = qPos; │ │ │ │ │ -100 localPos[1] = 0.0; │ │ │ │ │ -101 auto y = f(localPos); │ │ │ │ │ -102 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0; │ │ │ │ │ -103 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(1.0 - 2.0*qPos)*it->weight()/c0; │ │ │ │ │ -104 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it- │ │ │ │ │ ->weight()*sign0/c0; │ │ │ │ │ +31 │ │ │ │ │ +32 public: │ │ │ │ │ +33 typedef _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_<_D_,_2_,_D_u_n_e_:_:_F_i_e_l_d_V_e_c_t_o_r_<_D_,_2_>,R,2,Dune:: │ │ │ │ │ +FieldVector, │ │ │ │ │ +_3_4 Dune::FieldMatrix > _T_r_a_i_t_s; │ │ │ │ │ +35 │ │ │ │ │ +_3_7 _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s () │ │ │ │ │ +38 { │ │ │ │ │ +39 for (size_t i=0; i<3; i++) │ │ │ │ │ +40 sign_[i] = 1.0; │ │ │ │ │ +41 } │ │ │ │ │ +42 │ │ │ │ │ +_4_8 _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s (std::bitset<3> s) │ │ │ │ │ +49 { │ │ │ │ │ +50 for (size_t i=0; i<3; i++) │ │ │ │ │ +51 sign_[i] = s[i] ? -1.0 : 1.0; │ │ │ │ │ +52 } │ │ │ │ │ +53 │ │ │ │ │ +_5_5 unsigned int _s_i_z_e () const │ │ │ │ │ +56 { │ │ │ │ │ +57 return 6; │ │ │ │ │ +58 } │ │ │ │ │ +59 │ │ │ │ │ +_6_6 inline void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n (const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ +67 std::vector& out) const │ │ │ │ │ +68 { │ │ │ │ │ +69 out.resize(6); │ │ │ │ │ +70 │ │ │ │ │ +71 out[0][0] = sign_[0]*in[0]; │ │ │ │ │ +72 out[0][1] = sign_[0]*(in[1] - 1.0); │ │ │ │ │ +73 out[1][0] = sign_[1]*(in[0] - 1.0); │ │ │ │ │ +74 out[1][1] = sign_[1]*in[1]; │ │ │ │ │ +75 out[2][0] = sign_[2]*in[0]; │ │ │ │ │ +76 out[2][1] = sign_[2]*in[1]; │ │ │ │ │ +77 out[3][0] = 3.0*in[0]; │ │ │ │ │ +78 out[3][1] = 3.0 - 6.0*in[0] - 3.0*in[1]; │ │ │ │ │ +79 out[4][0] = -3.0 + 3.0*in[0] + 6.0*in[1]; │ │ │ │ │ +80 out[4][1] = -3.0*in[1]; │ │ │ │ │ +81 out[5][0] = -3.0*in[0]; │ │ │ │ │ +82 out[5][1] = 3.0*in[1]; │ │ │ │ │ +83 } │ │ │ │ │ +84 │ │ │ │ │ +_9_1 inline void _e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n (const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, │ │ │ │ │ +92 std::vector& out) const │ │ │ │ │ +93 { │ │ │ │ │ +94 out.resize(6); │ │ │ │ │ +95 │ │ │ │ │ +96 out[0][0][0] = sign_[0]; │ │ │ │ │ +97 out[0][0][1] = 0.0; │ │ │ │ │ +98 out[0][1][0] = 0.0; │ │ │ │ │ +99 out[0][1][1] = sign_[0]; │ │ │ │ │ +100 │ │ │ │ │ +101 out[1][0][0] = sign_[1]; │ │ │ │ │ +102 out[1][0][1] = 0.0; │ │ │ │ │ +103 out[1][1][0] = 0.0; │ │ │ │ │ +104 out[1][1][1] = sign_[1]; │ │ │ │ │ 105 │ │ │ │ │ -106 localPos[0] = 0.0; │ │ │ │ │ -107 localPos[1] = qPos; │ │ │ │ │ -108 y = f(localPos); │ │ │ │ │ -109 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1/c1; │ │ │ │ │ -110 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(2.0*qPos-1.0)*it->weight()/c1; │ │ │ │ │ -111 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it- │ │ │ │ │ ->weight()*sign1/c1; │ │ │ │ │ -112 │ │ │ │ │ -113 localPos[0] = 1.0 - qPos; │ │ │ │ │ -114 localPos[1] = qPos; │ │ │ │ │ -115 y = f(localPos); │ │ │ │ │ -116 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2; │ │ │ │ │ -117 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight()/c2; │ │ │ │ │ -118 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it- │ │ │ │ │ ->weight()*sign2/c2; │ │ │ │ │ -119 } │ │ │ │ │ +106 out[2][0][0] = sign_[2]; │ │ │ │ │ +107 out[2][0][1] = 0.0; │ │ │ │ │ +108 out[2][1][0] = 0.0; │ │ │ │ │ +109 out[2][1][1] = sign_[2]; │ │ │ │ │ +110 │ │ │ │ │ +111 out[3][0][0] = 3.0; │ │ │ │ │ +112 out[3][0][1] = 0.0; │ │ │ │ │ +113 out[3][1][0] = -6.0; │ │ │ │ │ +114 out[3][1][1] = -3.0; │ │ │ │ │ +115 │ │ │ │ │ +116 out[4][0][0] = 3.0; │ │ │ │ │ +117 out[4][0][1] = 6.0; │ │ │ │ │ +118 out[4][1][0] = 0.0; │ │ │ │ │ +119 out[4][1][1] = -3.0; │ │ │ │ │ 120 │ │ │ │ │ -121 // a volume part is needed here for dofs: 9 10 11 │ │ │ │ │ -122 const QuadratureRule& rule2 = QuadratureRules::rule │ │ │ │ │ -(GeometryTypes::simplex(2), qOrder); │ │ │ │ │ -123 │ │ │ │ │ -124 for (typename QuadratureRule::const_iterator it=rule2.begin(); │ │ │ │ │ -it!=rule2.end(); ++it) │ │ │ │ │ -125 { │ │ │ │ │ -126 typename LB::Traits::DomainType localPos = it->position(); │ │ │ │ │ -127 auto y = f(localPos); │ │ │ │ │ -128 │ │ │ │ │ -129 out[9] += y[0]*it->weight(); │ │ │ │ │ -130 out[10] += y[1]*it->weight(); │ │ │ │ │ -131 out[11] += (y[0]*(localPos[0]-2.0*localPos[0]*localPos[1]-localPos │ │ │ │ │ -[0]*localPos[0]) │ │ │ │ │ -132 +y[1]*(-localPos[1]+2.0*localPos[0]*localPos[1]+localPos[1]*localPos │ │ │ │ │ -[1]))*it->weight(); │ │ │ │ │ -133 } │ │ │ │ │ -134 } │ │ │ │ │ -135 │ │ │ │ │ -136 private: │ │ │ │ │ -137 typename LB::Traits::RangeFieldType sign0, sign1, sign2; │ │ │ │ │ -138 typename LB::Traits::DomainType m0, m1, m2; │ │ │ │ │ -139 typename LB::Traits::DomainType n0, n1, n2; │ │ │ │ │ -140 typename LB::Traits::RangeFieldType c0, c1, c2; │ │ │ │ │ -141 }; │ │ │ │ │ -142} // end namespace Dune │ │ │ │ │ -143#endif / │ │ │ │ │ -/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH │ │ │ │ │ +121 out[5][0][0] = -3.0; │ │ │ │ │ +122 out[5][0][1] = 0.0; │ │ │ │ │ +123 out[5][1][0] = 0.0; │ │ │ │ │ +124 out[5][1][1] = 3.0; │ │ │ │ │ +125 } │ │ │ │ │ +126 │ │ │ │ │ +_1_2_8 void _p_a_r_t_i_a_l (const std::array& _o_r_d_e_r, │ │ │ │ │ +129 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, // position │ │ │ │ │ +130 std::vector& out) const // return value │ │ │ │ │ +131 { │ │ │ │ │ +132 auto totalOrder = std::accumulate(_o_r_d_e_r.begin(), _o_r_d_e_r.end(), 0); │ │ │ │ │ +133 if (totalOrder == 0) { │ │ │ │ │ +134 _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(in, out); │ │ │ │ │ +135 } else if (totalOrder == 1) { │ │ │ │ │ +136 out.resize(_s_i_z_e()); │ │ │ │ │ +137 auto const direction = std::distance(_o_r_d_e_r.begin(), std::find(_o_r_d_e_r.begin │ │ │ │ │ +(), _o_r_d_e_r.end(), 1)); │ │ │ │ │ +138 │ │ │ │ │ +139 switch (direction) { │ │ │ │ │ +140 case 0: │ │ │ │ │ +141 out[0][0] = sign_[0]; │ │ │ │ │ +142 out[0][1] = 0.0; │ │ │ │ │ +143 │ │ │ │ │ +144 out[1][0] = sign_[1]; │ │ │ │ │ +145 out[1][1] = 0.0; │ │ │ │ │ +146 │ │ │ │ │ +147 out[2][0] = sign_[2]; │ │ │ │ │ +148 out[2][1] = 0.0; │ │ │ │ │ +149 │ │ │ │ │ +150 out[3][0] = 3.0; │ │ │ │ │ +151 out[3][1] = -6.0; │ │ │ │ │ +152 │ │ │ │ │ +153 out[4][0] = 3.0; │ │ │ │ │ +154 out[4][1] = 0.0; │ │ │ │ │ +155 │ │ │ │ │ +156 out[5][0] = -3.0; │ │ │ │ │ +157 out[5][1] = 0.0; │ │ │ │ │ +158 break; │ │ │ │ │ +159 case 1: │ │ │ │ │ +160 out[0][0] = 0.0; │ │ │ │ │ +161 out[0][1] = sign_[0]; │ │ │ │ │ +162 │ │ │ │ │ +163 out[1][0] = 0.0; │ │ │ │ │ +164 out[1][1] = sign_[1]; │ │ │ │ │ +165 │ │ │ │ │ +166 out[2][0] = 0.0; │ │ │ │ │ +167 out[2][1] = sign_[2]; │ │ │ │ │ +168 │ │ │ │ │ +169 out[3][0] = 0.0; │ │ │ │ │ +170 out[3][1] = -3.0; │ │ │ │ │ +171 │ │ │ │ │ +172 out[4][0] = 6.0; │ │ │ │ │ +173 out[4][1] = -3.0; │ │ │ │ │ +174 │ │ │ │ │ +175 out[5][0] = 0.0; │ │ │ │ │ +176 out[5][1] = 3.0; │ │ │ │ │ +177 break; │ │ │ │ │ +178 default: │ │ │ │ │ +179 DUNE_THROW(RangeError, "Component out of range."); │ │ │ │ │ +180 } │ │ │ │ │ +181 } else { │ │ │ │ │ +182 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented"); │ │ │ │ │ +183 } │ │ │ │ │ +184 } │ │ │ │ │ +185 │ │ │ │ │ +_1_8_7 unsigned int _o_r_d_e_r () const │ │ │ │ │ +188 { │ │ │ │ │ +189 return 1; │ │ │ │ │ +190 } │ │ │ │ │ +191 │ │ │ │ │ +192 private: │ │ │ │ │ +193 std::array sign_; │ │ │ │ │ +194 }; │ │ │ │ │ +195} │ │ │ │ │ +196#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -First order Brezzi-Douglas-Marini shape functions on triangles. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalinterpolation.hh:25 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -BDM2Simplex2DLocalInterpolation() │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on the reference triangle. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:30 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n │ │ │ │ │ +void evaluateJacobian(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ +typename Traits::JacobianType > &out) const │ │ │ │ │ +Evaluate Jacobian of all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:91 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_s_i_z_e │ │ │ │ │ +unsigned int size() const │ │ │ │ │ +number of shape functions │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:55 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n │ │ │ │ │ +void evaluateFunction(const typename Traits::DomainType &in, std::vector< │ │ │ │ │ +typename Traits::RangeType > &out) const │ │ │ │ │ +Evaluate all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:66 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_T_r_a_i_t_s │ │ │ │ │ +LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, │ │ │ │ │ +2 >, Dune::FieldMatrix< R, 2, 2 > > Traits │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:34 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_p_a_r_t_i_a_l │ │ │ │ │ +void partial(const std::array< unsigned int, 2 > &order, const typename │ │ │ │ │ +Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const │ │ │ │ │ +Evaluate partial derivatives of all shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:128 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +BDM1Simplex2DLocalBasis() │ │ │ │ │ Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalinterpolation.hh:29 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ -void interpolate(const F &f, std::vector< C > &out) const │ │ │ │ │ -Interpolate a given function with shape functions. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalinterpolation.hh:81 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -BDM2Simplex2DLocalInterpolation(unsigned int s) │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:37 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_o_r_d_e_r │ │ │ │ │ +unsigned int order() const │ │ │ │ │ +Polynomial order of the shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:187 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ +BDM1Simplex2DLocalBasis(std::bitset< 3 > s) │ │ │ │ │ Make set number s, where 0 <= s < 8. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalinterpolation.hh:39 │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalbasis.hh:48 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s │ │ │ │ │ +Type traits for LocalBasisVirtualInterface. │ │ │ │ │ +DDeeffiinniittiioonn common/localbasis.hh:35 │ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e │ │ │ │ │ +D DomainType │ │ │ │ │ +domain type │ │ │ │ │ +DDeeffiinniittiioonn common/localbasis.hh:43 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00104.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2cube2d.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -65,36 +65,33 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini2cube2d.hh File Reference
│ │ │ │ +
brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <dune/geometry/type.hh>
│ │ │ │ -#include "../common/localfiniteelementtraits.hh"
│ │ │ │ -#include "brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalbasis.hh"
│ │ │ │ -#include "brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalcoefficients.hh"
│ │ │ │ -#include "brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalinterpolation.hh"
│ │ │ │ +
#include <vector>
│ │ │ │ +#include <dune/geometry/quadraturerules.hh>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM2Cube2DLocalFiniteElement< D, R >
 Second order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
class  Dune::BDM1Simplex2DLocalInterpolation< LB >
 First order Brezzi-Douglas-Marini shape functions on the reference triangle. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,27 +1,23 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini2cube2d.hh File Reference │ │ │ │ │ -#include │ │ │ │ │ -#include "_._._/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h" │ │ │ │ │ -#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ -#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h" │ │ │ │ │ -#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h" │ │ │ │ │ +brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_ _> │ │ │ │ │ -  Second order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ - _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_ _L_B_ _> │ │ │ │ │ +  First order Brezzi-Douglas-Marini shape functions on the reference │ │ │ │ │ + triangle. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00104_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini2cube2d.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini1simplex2dlocalinterpolation.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -70,123 +70,130 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
brezzidouglasmarini2cube2d.hh
│ │ │ │ +
brezzidouglasmarini1simplex2dlocalinterpolation.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
│ │ │ │
7
│ │ │ │ -
8#include <dune/geometry/type.hh>
│ │ │ │ +
8#include <vector>
│ │ │ │
9
│ │ │ │ -
10#include "../common/localfiniteelementtraits.hh"
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
14
│ │ │ │ -
15namespace Dune
│ │ │ │ -
16{
│ │ │ │ -
25 template<class D, class R>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
27 {
│ │ │ │ -
28
│ │ │ │ -
29 public:
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
34
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
37 {}
│ │ │ │ -
│ │ │ │ -
38
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
45 basis(s),
│ │ │ │ -
46 interpolation(s)
│ │ │ │ -
47 {}
│ │ │ │ -
│ │ │ │ -
48
│ │ │ │ -
│ │ │ │ -
49 const typename Traits::LocalBasisType& localBasis () const
│ │ │ │ -
50 {
│ │ │ │ -
51 return basis;
│ │ │ │ -
52 }
│ │ │ │ -
│ │ │ │ -
53
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
55 {
│ │ │ │ -
56 return coefficients;
│ │ │ │ -
57 }
│ │ │ │ -
│ │ │ │ -
58
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
60 {
│ │ │ │ -
61 return interpolation;
│ │ │ │ -
62 }
│ │ │ │ -
│ │ │ │ -
63
│ │ │ │ -
│ │ │ │ -
65 unsigned int size () const
│ │ │ │ -
66 {
│ │ │ │ -
67 return basis.size();
│ │ │ │ -
68 }
│ │ │ │ -
│ │ │ │ -
69
│ │ │ │ -
│ │ │ │ -
70 static constexpr GeometryType type ()
│ │ │ │ -
71 {
│ │ │ │ -
72 return GeometryTypes::quadrilateral;
│ │ │ │ -
73 }
│ │ │ │ -
│ │ │ │ -
74
│ │ │ │ -
75 private:
│ │ │ │ - │ │ │ │ -
77 BDM2Cube2DLocalCoefficients coefficients;
│ │ │ │ - │ │ │ │ -
79 };
│ │ │ │ -
│ │ │ │ -
80}
│ │ │ │ -
81#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ +
10#include <dune/geometry/quadraturerules.hh>
│ │ │ │ +
11
│ │ │ │ +
12namespace Dune
│ │ │ │ +
13{
│ │ │ │ +
22 template<class LB>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
24 {
│ │ │ │ +
25
│ │ │ │ +
26 public:
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
29 {
│ │ │ │ +
30 sign0 = sign1 = sign2 = 1.0;
│ │ │ │ +
31 }
│ │ │ │ +
│ │ │ │ +
32
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
39 {
│ │ │ │ +
40 using std::sqrt;
│ │ │ │ +
41 sign0 = sign1 = sign2 = 1.0;
│ │ │ │ +
42 if (s & 1)
│ │ │ │ +
43 {
│ │ │ │ +
44 sign0 = -1.0;
│ │ │ │ +
45 }
│ │ │ │ +
46 if (s & 2)
│ │ │ │ +
47 {
│ │ │ │ +
48 sign1 = -1.0;
│ │ │ │ +
49 }
│ │ │ │ +
50 if (s & 4)
│ │ │ │ +
51 {
│ │ │ │ +
52 sign2 = -1.0;
│ │ │ │ +
53 }
│ │ │ │ +
54
│ │ │ │ +
55 n0[0] = 0.0;
│ │ │ │ +
56 n0[1] = -1.0;
│ │ │ │ +
57 n1[0] = -1.0;
│ │ │ │ +
58 n1[1] = 0.0;
│ │ │ │ +
59 n2[0] = 1.0/sqrt(2.0);
│ │ │ │ +
60 n2[1] = 1.0/sqrt(2.0);
│ │ │ │ +
61 c0 = 0.5*n0[0] - 1.0*n0[1];
│ │ │ │ +
62 c1 = -1.0*n1[0] + 0.5*n1[1];
│ │ │ │ +
63 c2 = 0.5*n2[0] + 0.5*n2[1];
│ │ │ │ +
64 }
│ │ │ │ +
│ │ │ │ +
65
│ │ │ │ +
74 template<typename F, typename C>
│ │ │ │ +
│ │ │ │ +
75 void interpolate (const F& f, std::vector<C>& out) const
│ │ │ │ +
76 {
│ │ │ │ +
77 // f gives v*outer normal at a point on the edge!
│ │ │ │ +
78 typedef typename LB::Traits::RangeFieldType Scalar;
│ │ │ │ +
79
│ │ │ │ +
80 out.resize(6);
│ │ │ │ +
81 fill(out.begin(), out.end(), 0.0);
│ │ │ │ +
82
│ │ │ │ +
83 const int qOrder = 4;
│ │ │ │ +
84 const Dune::QuadratureRule<Scalar,1>& rule = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder);
│ │ │ │ +
85
│ │ │ │ +
86 for (typename Dune::QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
│ │ │ │ +
87 {
│ │ │ │ +
88 Scalar qPos = it->position();
│ │ │ │ +
89 typename LB::Traits::DomainType localPos;
│ │ │ │ +
90
│ │ │ │ +
91 localPos[0] = qPos;
│ │ │ │ +
92 localPos[1] = 0.0;
│ │ │ │ +
93 auto y = f(localPos);
│ │ │ │ +
94 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;
│ │ │ │ +
95 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight()/c0;
│ │ │ │ +
96
│ │ │ │ +
97 localPos[0] = 0.0;
│ │ │ │ +
98 localPos[1] = qPos;
│ │ │ │ +
99 y = f(localPos);
│ │ │ │ +
100 out[1] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1/c1;
│ │ │ │ +
101 out[4] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight()/c1;
│ │ │ │ +
102
│ │ │ │ +
103 localPos[0] = 1.0 - qPos;
│ │ │ │ +
104 localPos[1] = qPos;
│ │ │ │ +
105 y = f(localPos);
│ │ │ │ +
106 out[2] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;
│ │ │ │ +
107 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(2.0*qPos - 1.0)*it->weight()/c2;
│ │ │ │ +
108 }
│ │ │ │ +
109 }
│ │ │ │ +
│ │ │ │ +
110
│ │ │ │ +
111 private:
│ │ │ │ +
112 typename LB::Traits::RangeFieldType sign0,sign1,sign2;
│ │ │ │ +
113 typename LB::Traits::DomainType n0,n1,n2;
│ │ │ │ +
114 typename LB::Traits::RangeFieldType c0,c1,c2;
│ │ │ │ +
115 };
│ │ │ │ +
│ │ │ │ +
116}
│ │ │ │ +
117
│ │ │ │ +
118#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
Second order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini2cube2d.hh:27
│ │ │ │ -
BDM2Cube2DLocalFiniteElement()
Standard constructor.
Definition brezzidouglasmarini2cube2d.hh:36
│ │ │ │ -
unsigned int size() const
Number of shape functions in this finite element.
Definition brezzidouglasmarini2cube2d.hh:65
│ │ │ │ -
const Traits::LocalBasisType & localBasis() const
Definition brezzidouglasmarini2cube2d.hh:49
│ │ │ │ -
const Traits::LocalInterpolationType & localInterpolation() const
Definition brezzidouglasmarini2cube2d.hh:59
│ │ │ │ -
static constexpr GeometryType type()
Definition brezzidouglasmarini2cube2d.hh:70
│ │ │ │ -
const Traits::LocalCoefficientsType & localCoefficients() const
Definition brezzidouglasmarini2cube2d.hh:54
│ │ │ │ -
BDM2Cube2DLocalFiniteElement(int s)
Make set number s, where 0 <= s < ??
Definition brezzidouglasmarini2cube2d.hh:44
│ │ │ │ -
LocalFiniteElementTraits< BDM2Cube2DLocalBasis< D, R >, BDM2Cube2DLocalCoefficients, BDM2Cube2DLocalInterpolation< BDM2Cube2DLocalBasis< D, R > > > Traits
Definition brezzidouglasmarini2cube2d.hh:33
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini2cube2dlocalbasis.hh:30
│ │ │ │ -
Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals.
Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:24
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:25
│ │ │ │ -
traits helper struct
Definition localfiniteelementtraits.hh:13
│ │ │ │ -
LB LocalBasisType
Definition localfiniteelementtraits.hh:16
│ │ │ │ -
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:20
│ │ │ │ -
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:24
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on the reference triangle.
Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:24
│ │ │ │ +
void interpolate(const F &f, std::vector< C > &out) const
Interpolate a given function with shape functions.
Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:75
│ │ │ │ +
BDM1Simplex2DLocalInterpolation(unsigned int s)
Make set number s, where 0 <= s < 8.
Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:38
│ │ │ │ +
BDM1Simplex2DLocalInterpolation()
Standard constructor.
Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:28
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,139 +1,131 @@ │ │ │ │ │ dune-localfunctions 2.10 │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ -brezzidouglasmarini2cube2d.hh │ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d │ │ │ │ │ +brezzidouglasmarini1simplex2dlocalinterpolation.hh │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- │ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2: │ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file │ │ │ │ │ LICENSE.md in module root │ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception │ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH │ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH │ │ │ │ │ +5#ifndef │ │ │ │ │ +DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH │ │ │ │ │ +6#define │ │ │ │ │ +DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH │ │ │ │ │ 7 │ │ │ │ │ -8#include │ │ │ │ │ +8#include │ │ │ │ │ 9 │ │ │ │ │ -10#include "../common/localfiniteelementtraits.hh" │ │ │ │ │ -11#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ -12#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h" │ │ │ │ │ -13#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h" │ │ │ │ │ -14 │ │ │ │ │ -15namespace _D_u_n_e │ │ │ │ │ -16{ │ │ │ │ │ -25 template │ │ │ │ │ -_2_6 class _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -27 { │ │ │ │ │ -28 │ │ │ │ │ -29 public: │ │ │ │ │ -30 typedef _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s< │ │ │ │ │ -31 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_>, │ │ │ │ │ -32 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s, │ │ │ │ │ -_3_3 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> > > _T_r_a_i_t_s; │ │ │ │ │ -34 │ │ │ │ │ -_3_6 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t () │ │ │ │ │ -37 {} │ │ │ │ │ -38 │ │ │ │ │ -_4_4 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t (int s) : │ │ │ │ │ -45 basis(s), │ │ │ │ │ -46 interpolation(s) │ │ │ │ │ -47 {} │ │ │ │ │ -48 │ │ │ │ │ -_4_9 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e& _l_o_c_a_l_B_a_s_i_s () const │ │ │ │ │ -50 { │ │ │ │ │ -51 return basis; │ │ │ │ │ -52 } │ │ │ │ │ -53 │ │ │ │ │ -_5_4 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e& _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () const │ │ │ │ │ -55 { │ │ │ │ │ -56 return coefficients; │ │ │ │ │ -57 } │ │ │ │ │ -58 │ │ │ │ │ -_5_9 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e& _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n () const │ │ │ │ │ -60 { │ │ │ │ │ -61 return interpolation; │ │ │ │ │ -62 } │ │ │ │ │ -63 │ │ │ │ │ -_6_5 unsigned int _s_i_z_e () const │ │ │ │ │ -66 { │ │ │ │ │ -67 return basis.size(); │ │ │ │ │ -68 } │ │ │ │ │ -69 │ │ │ │ │ -_7_0 static constexpr GeometryType _t_y_p_e () │ │ │ │ │ -71 { │ │ │ │ │ -72 return GeometryTypes::quadrilateral; │ │ │ │ │ -73 } │ │ │ │ │ -74 │ │ │ │ │ -75 private: │ │ │ │ │ -76 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> basis; │ │ │ │ │ -77 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s coefficients; │ │ │ │ │ -78 _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> > interpolation; │ │ │ │ │ -79 }; │ │ │ │ │ -80} │ │ │ │ │ -81#endif / │ │ │ │ │ -/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_l_o_c_a_l_b_a_s_i_s_._h_h │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h │ │ │ │ │ +10#include │ │ │ │ │ +11 │ │ │ │ │ +12namespace _D_u_n_e │ │ │ │ │ +13{ │ │ │ │ │ +22 template │ │ │ │ │ +_2_3 class _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +24 { │ │ │ │ │ +25 │ │ │ │ │ +26 public: │ │ │ │ │ +_2_8 _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n () │ │ │ │ │ +29 { │ │ │ │ │ +30 sign0 = sign1 = sign2 = 1.0; │ │ │ │ │ +31 } │ │ │ │ │ +32 │ │ │ │ │ +_3_8 _B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n (unsigned int s) │ │ │ │ │ +39 { │ │ │ │ │ +40 using std::sqrt; │ │ │ │ │ +41 sign0 = sign1 = sign2 = 1.0; │ │ │ │ │ +42 if (s & 1) │ │ │ │ │ +43 { │ │ │ │ │ +44 sign0 = -1.0; │ │ │ │ │ +45 } │ │ │ │ │ +46 if (s & 2) │ │ │ │ │ +47 { │ │ │ │ │ +48 sign1 = -1.0; │ │ │ │ │ +49 } │ │ │ │ │ +50 if (s & 4) │ │ │ │ │ +51 { │ │ │ │ │ +52 sign2 = -1.0; │ │ │ │ │ +53 } │ │ │ │ │ +54 │ │ │ │ │ +55 n0[0] = 0.0; │ │ │ │ │ +56 n0[1] = -1.0; │ │ │ │ │ +57 n1[0] = -1.0; │ │ │ │ │ +58 n1[1] = 0.0; │ │ │ │ │ +59 n2[0] = 1.0/sqrt(2.0); │ │ │ │ │ +60 n2[1] = 1.0/sqrt(2.0); │ │ │ │ │ +61 c0 = 0.5*n0[0] - 1.0*n0[1]; │ │ │ │ │ +62 c1 = -1.0*n1[0] + 0.5*n1[1]; │ │ │ │ │ +63 c2 = 0.5*n2[0] + 0.5*n2[1]; │ │ │ │ │ +64 } │ │ │ │ │ +65 │ │ │ │ │ +74 template │ │ │ │ │ +_7_5 void _i_n_t_e_r_p_o_l_a_t_e (const F& f, std::vector& out) const │ │ │ │ │ +76 { │ │ │ │ │ +77 // f gives v*outer normal at a point on the edge! │ │ │ │ │ +78 typedef typename LB::Traits::RangeFieldType Scalar; │ │ │ │ │ +79 │ │ │ │ │ +80 out.resize(6); │ │ │ │ │ +81 fill(out.begin(), out.end(), 0.0); │ │ │ │ │ +82 │ │ │ │ │ +83 const int qOrder = 4; │ │ │ │ │ +84 const Dune::QuadratureRule& rule = Dune:: │ │ │ │ │ +QuadratureRules::rule(Dune::GeometryTypes::simplex(1), qOrder); │ │ │ │ │ +85 │ │ │ │ │ +86 for (typename Dune::QuadratureRule::const_iterator it=rule.begin │ │ │ │ │ +(); it!=rule.end(); ++it) │ │ │ │ │ +87 { │ │ │ │ │ +88 Scalar qPos = it->position(); │ │ │ │ │ +89 typename LB::Traits::DomainType localPos; │ │ │ │ │ +90 │ │ │ │ │ +91 localPos[0] = qPos; │ │ │ │ │ +92 localPos[1] = 0.0; │ │ │ │ │ +93 auto y = f(localPos); │ │ │ │ │ +94 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0; │ │ │ │ │ +95 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight()/c0; │ │ │ │ │ +96 │ │ │ │ │ +97 localPos[0] = 0.0; │ │ │ │ │ +98 localPos[1] = qPos; │ │ │ │ │ +99 y = f(localPos); │ │ │ │ │ +100 out[1] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1/c1; │ │ │ │ │ +101 out[4] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight()/c1; │ │ │ │ │ +102 │ │ │ │ │ +103 localPos[0] = 1.0 - qPos; │ │ │ │ │ +104 localPos[1] = qPos; │ │ │ │ │ +105 y = f(localPos); │ │ │ │ │ +106 out[2] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2; │ │ │ │ │ +107 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(2.0*qPos - 1.0)*it->weight()/c2; │ │ │ │ │ +108 } │ │ │ │ │ +109 } │ │ │ │ │ +110 │ │ │ │ │ +111 private: │ │ │ │ │ +112 typename LB::Traits::RangeFieldType sign0,sign1,sign2; │ │ │ │ │ +113 typename LB::Traits::DomainType n0,n1,n2; │ │ │ │ │ +114 typename LB::Traits::RangeFieldType c0,c1,c2; │ │ │ │ │ +115 }; │ │ │ │ │ +116} │ │ │ │ │ +117 │ │ │ │ │ +118#endif / │ │ │ │ │ +/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH │ │ │ │ │ _D_u_n_e │ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -Second order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2d.hh:27 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -BDM2Cube2DLocalFiniteElement() │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on the reference triangle. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalinterpolation.hh:24 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_i_n_t_e_r_p_o_l_a_t_e │ │ │ │ │ +void interpolate(const F &f, std::vector< C > &out) const │ │ │ │ │ +Interpolate a given function with shape functions. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalinterpolation.hh:75 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +BDM1Simplex2DLocalInterpolation(unsigned int s) │ │ │ │ │ +Make set number s, where 0 <= s < 8. │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalinterpolation.hh:38 │ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +BDM1Simplex2DLocalInterpolation() │ │ │ │ │ Standard constructor. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2d.hh:36 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_s_i_z_e │ │ │ │ │ -unsigned int size() const │ │ │ │ │ -Number of shape functions in this finite element. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2d.hh:65 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_B_a_s_i_s │ │ │ │ │ -const Traits::LocalBasisType & localBasis() const │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2d.hh:49 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -const Traits::LocalInterpolationType & localInterpolation() const │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2d.hh:59 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_t_y_p_e │ │ │ │ │ -static constexpr GeometryType type() │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2d.hh:70 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -const Traits::LocalCoefficientsType & localCoefficients() const │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2d.hh:54 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t │ │ │ │ │ -BDM2Cube2DLocalFiniteElement(int s) │ │ │ │ │ -Make set number s, where 0 <= s < ?? │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2d.hh:44 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s │ │ │ │ │ -LocalFiniteElementTraits< BDM2Cube2DLocalBasis< D, R >, │ │ │ │ │ -BDM2Cube2DLocalCoefficients, BDM2Cube2DLocalInterpolation< │ │ │ │ │ -BDM2Cube2DLocalBasis< D, R > > > Traits │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2d.hh:33 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s │ │ │ │ │ -First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalbasis.hh:30 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s │ │ │ │ │ -Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalcoefficients.hh:24 │ │ │ │ │ -_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -First order Brezzi-Douglas-Marini shape functions on quadrilaterals. │ │ │ │ │ -DDeeffiinniittiioonn brezzidouglasmarini2cube2dlocalinterpolation.hh:25 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s │ │ │ │ │ -traits helper struct │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:13 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e │ │ │ │ │ -LB LocalBasisType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:16 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e │ │ │ │ │ -LC LocalCoefficientsType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:20 │ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e │ │ │ │ │ -LI LocalInterpolationType │ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:24 │ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1simplex2dlocalinterpolation.hh:28 │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00107.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1cube3d.hh File Reference │ │ │ │ +dune-localfunctions: brezzidouglasmarini1simplex2d.hh File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -72,29 +72,29 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
brezzidouglasmarini1cube3d.hh File Reference
│ │ │ │ +
brezzidouglasmarini1simplex2d.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Dune::BDM1Cube3DLocalFiniteElement< D, R >
 First order Brezzi-Douglas-Marini shape functions on hexahedron. More...
class  Dune::BDM1Simplex2DLocalFiniteElement< D, R >
 First order Brezzi-Douglas-Marini shape functions on triangles. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  Dune
 
│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -2,26 +2,26 @@ │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ * _d_u_n_e │ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s │ │ │ │ │ * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -brezzidouglasmarini1cube3d.hh File Reference │ │ │ │ │ +brezzidouglasmarini1simplex2d.hh File Reference │ │ │ │ │ #include │ │ │ │ │ #include "_._._/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h" │ │ │ │ │ -#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ -#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h" │ │ │ │ │ -#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_/ │ │ │ │ │ -_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h" │ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d_l_o_c_a_l_b_a_s_i_s_._h_h" │ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h" │ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d_/ │ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_s_i_m_p_l_e_x_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_ _> │ │ │ │ │ -  First order Brezzi-Douglas-Marini shape functions on hexahedron. │ │ │ │ │ - _M_o_r_e_._._. │ │ │ │ │ +class   _D_u_n_e_:_:_B_D_M_1_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_ _> │ │ │ │ │ +  First order Brezzi-Douglas-Marini shape functions on triangles. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _D_u_n_e │ │ │ │ │   │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8 │ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00107_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -dune-localfunctions: brezzidouglasmarini1cube3d.hh Source File │ │ │ │ +dune-localfunctions: brezzidouglasmarini1simplex2d.hh Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -74,115 +74,116 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
brezzidouglasmarini1cube3d.hh
│ │ │ │ +
brezzidouglasmarini1simplex2d.hh
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │
2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
│ │ │ │
4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH
│ │ │ │
7
│ │ │ │
8#include <dune/geometry/type.hh>
│ │ │ │
9
│ │ │ │
10#include "../common/localfiniteelementtraits.hh"
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
14
│ │ │ │
15namespace Dune
│ │ │ │
16{
│ │ │ │ -
25 template<class D, class R>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
27 {
│ │ │ │ -
28
│ │ │ │ -
29 public:
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
34
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
37 {}
│ │ │ │ -
│ │ │ │ -
38
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
45 : basis(s)
│ │ │ │ -
46 , interpolation(s)
│ │ │ │ -
47 {}
│ │ │ │ -
│ │ │ │ -
48
│ │ │ │ -
│ │ │ │ -
49 const typename Traits::LocalBasisType& localBasis() const
│ │ │ │ -
50 {
│ │ │ │ -
51 return basis;
│ │ │ │ -
52 }
│ │ │ │ -
│ │ │ │ -
53
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
55 {
│ │ │ │ -
56 return coefficients;
│ │ │ │ -
57 }
│ │ │ │ -
│ │ │ │ -
58
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
60 {
│ │ │ │ -
61 return interpolation;
│ │ │ │ -
62 }
│ │ │ │ -
│ │ │ │ -
63
│ │ │ │ -
│ │ │ │ -
65 unsigned int size () const
│ │ │ │ -
66 {
│ │ │ │ -
67 return basis.size();
│ │ │ │ -
68 }
│ │ │ │ -
│ │ │ │ -
69
│ │ │ │ -
│ │ │ │ -
70 static constexpr GeometryType type()
│ │ │ │ -
71 {
│ │ │ │ -
72 return GeometryTypes::hexahedron;
│ │ │ │ -
73 }
│ │ │ │ -
│ │ │ │ -
74
│ │ │ │ -
75 private:
│ │ │ │ - │ │ │ │ -
77 BDM1Cube3DLocalCoefficients coefficients;
│ │ │ │ - │ │ │ │ -
79 };
│ │ │ │ -
│ │ │ │ -
80} // end namespace Dune
│ │ │ │ -
81#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ +
17
│ │ │ │ +
26 template<class D, class R>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
28 {
│ │ │ │ +
29
│ │ │ │ +
30 public:
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
35
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
38 {}
│ │ │ │ +
│ │ │ │ +
39
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
46 basis(s),
│ │ │ │ +
47 interpolation(s)
│ │ │ │ +
48 {}
│ │ │ │ +
│ │ │ │ +
49
│ │ │ │ +
│ │ │ │ +
50 const typename Traits::LocalBasisType& localBasis () const
│ │ │ │ +
51 {
│ │ │ │ +
52 return basis;
│ │ │ │ +
53 }
│ │ │ │ +
│ │ │ │ +
54
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
56 {
│ │ │ │ +
57 return coefficients;
│ │ │ │ +
58 }
│ │ │ │ +
│ │ │ │ +
59
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
61 {
│ │ │ │ +
62 return interpolation;
│ │ │ │ +
63 }
│ │ │ │ +
│ │ │ │ +
64
│ │ │ │ +
│ │ │ │ +
66 unsigned int size () const
│ │ │ │ +
67 {
│ │ │ │ +
68 return basis.size();
│ │ │ │ +
69 }
│ │ │ │ +
│ │ │ │ +
70
│ │ │ │ +
│ │ │ │ +
71 static constexpr GeometryType type ()
│ │ │ │ +
72 {
│ │ │ │ +
73 return GeometryTypes::triangle;
│ │ │ │ +
74 }
│ │ │ │ +
│ │ │ │ +
75
│ │ │ │ +
76 private:
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
80 };
│ │ │ │ +
│ │ │ │ +
81}
│ │ │ │ +
82#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on hexahedron.
Definition brezzidouglasmarini1cube3d.hh:27
│ │ │ │ -
BDM1Cube3DLocalFiniteElement()
Standard constructor.
Definition brezzidouglasmarini1cube3d.hh:36
│ │ │ │ -
unsigned int size() const
Number of shape functions in this finite element.
Definition brezzidouglasmarini1cube3d.hh:65
│ │ │ │ -
const Traits::LocalCoefficientsType & localCoefficients() const
Definition brezzidouglasmarini1cube3d.hh:54
│ │ │ │ -
static constexpr GeometryType type()
Definition brezzidouglasmarini1cube3d.hh:70
│ │ │ │ -
LocalFiniteElementTraits< BDM1Cube3DLocalBasis< D, R >, BDM1Cube3DLocalCoefficients, BDM1Cube3DLocalInterpolation< BDM1Cube3DLocalBasis< D, R > > > Traits
Definition brezzidouglasmarini1cube3d.hh:33
│ │ │ │ -
const Traits::LocalInterpolationType & localInterpolation() const
Definition brezzidouglasmarini1cube3d.hh:59
│ │ │ │ -
BDM1Cube3DLocalFiniteElement(int s)
Make set number s, where 0 <= s < 64.
Definition brezzidouglasmarini1cube3d.hh:44
│ │ │ │ -
const Traits::LocalBasisType & localBasis() const
Definition brezzidouglasmarini1cube3d.hh:49
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
Definition brezzidouglasmarini1cube3dlocalbasis.hh:31
│ │ │ │ -
Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra.
Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:24
│ │ │ │ -
First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:26
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on triangles.
Definition brezzidouglasmarini1simplex2d.hh:28
│ │ │ │ +
const Traits::LocalBasisType & localBasis() const
Definition brezzidouglasmarini1simplex2d.hh:50
│ │ │ │ +
const Traits::LocalCoefficientsType & localCoefficients() const
Definition brezzidouglasmarini1simplex2d.hh:55
│ │ │ │ +
static constexpr GeometryType type()
Definition brezzidouglasmarini1simplex2d.hh:71
│ │ │ │ +
BDM1Simplex2DLocalFiniteElement()
Standard constructor.
Definition brezzidouglasmarini1simplex2d.hh:37
│ │ │ │ +
const Traits::LocalInterpolationType & localInterpolation() const
Definition brezzidouglasmarini1simplex2d.hh:60
│ │ │ │ +
unsigned int size() const
Number of shape functions in this finite element.
Definition brezzidouglasmarini1simplex2d.hh:66
│ │ │ │ +
BDM1Simplex2DLocalFiniteElement(int s)
Make set number s, where 0 <= s < 8.
Definition brezzidouglasmarini1simplex2d.hh:45
│ │ │ │ +
LocalFiniteElementTraits< BDM1Simplex2DLocalBasis< D, R >, BDM1Simplex2DLocalCoefficients, BDM1Simplex2DLocalInterpolation< BDM1Simplex2DLocalBasis< D, R > > > Traits
Definition brezzidouglasmarini1simplex2d.hh:34
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on the reference triangle.
Definition brezzidouglasmarini1simplex2dlocalbasis.hh:30
│ │ │ │ +
Layout map for Brezzi-Douglas-Marini-1 elements on triangles.
Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:24
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on the reference triangle.
Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:24
│ │ │ │
traits helper struct
Definition localfiniteelementtraits.hh:13
│ │ │ │
LB LocalBasisType
Definition localfiniteelementtraits.hh:16
│ │ │ │
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:20
│ │ │ │
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:24
│ │ │ │
│ │ │ │ │ │ │ │